NATIVE DESKTOP · LOCAL FIRST · OPEN SOURCE

API testing,back to simple.

From one request to your whole collection.
A native workbench that keeps you in the flow.

macOS · Windows · Linux

ApiFuck desktop in Chinese: collection navigation, a health-check request and its JSON response. Open the full-size screenshot.
ApiFuck Playground · Actual desktop screenshot
Rust + GPUI KitNo account requiredOpenCollection YAMLMIT open source

ONE WORKBENCH, YOUR WHOLE FLOW

Send a request.
Understand every response.

Protocols, environments, scripts and tests. Everything connects in one native window.

01 / 04

Everyday requests. Less friction.

Edit query parameters, headers and bodies, or paste cURL to start. Read status, response data and the timeline in one place.

Documentation
GET{{base_url}}/users?limit=10
{
  "users": [
    { "id": 1, "name": "Alex" },
    { "id": 2, "name": "Sam" }
  ]
}
HTTP Sample response

YOUR FILES. YOUR WORKFLOW.

Requests live with your project.
Your data stays local.

Store requests, folder settings and environments in readable OpenCollection YAML. Commit, review and collaborate alongside your code.

Made for Git

Preserve comments and formatting outside edited nodes, keeping changes easy to review.

Drafts worth keeping

Unfinished input saves locally and stays recoverable after you close a tab.

Environments, in order

Project, folder and request scopes, with variable previews and completion.

⌄   my-api/├─ opencollection.yml├─ environments/├─ users/get-users.yml└─ .apifuck/
get-users.yml YAML
info:
  name: Get users
  type: http
http:
  method: GET
  url: '{{base_url}}/users'
  params:
    - name: limit
      value: '10'
      type: query
+ 10   − 0main*

Shared requests go in Git. Local drafts stay in .apifuck/.

LESS REPETITION, MORE MOMENTUM

Go beyond the request.

test("status is 200", () => {
  expect(api.response.status)
    .to.equal(200);
});
01

Scripts and assertions

Run pre-request and response hooks with QuickJS. Verify responses with Chai, AJV and declarative assertions.

cURL  →  ApiFuck
Bru   →  OpenCollection
      →  JavaScript / Python / Go
02

Start with what you have

Paste cURL or import Bru requests, environments and folders. Preview and copy JavaScript, Python, Go and more.

Rust + GPUI Kit
Light / Dark / System
English / 简体中文
03

Native by design

Built with Rust and GPUI Kit, with offline editor assistance included. No Node.js or Bun needed to run a downloaded build.

YOUR NEXT REQUEST STARTS HERE

Open up. Get to work.

No account needed. Choose your platform, or run from source.

Only builds matching the current native architecture are offered. Historical versions may differ from the current product.

A few things to know

Do I need an account?

No. ApiFuck is a local desktop application. Create or open a project and start sending requests.

Where are project files stored?

Requests, environments and folder settings live in OpenCollection YAML in your project. Local drafts and variable overrides live in .apifuck/. Keep that directory out of Git.

Which protocols are supported?

HTTP, GraphQL, SSE and WebSocket are supported today. gRPC, advanced authentication and full asynchronous scripting are not yet available. See the execution documentation for details.

Is there a CLI or MCP integration?

There is no standalone CLI product. Native MCP integration is planned. A collection runner exists in the core library but has no desktop entry point yet.