Developers

Use your Autofill sheets from your own apps, scripts and AI agents. Read sheets as JSON, make a sheet from a sentence and run Autofill, with the REST API or the MCP server. Both act as you: they see the sheets you can see, and research uses your credits exactly as it does in the app.

API keys

Make a key in Account settings › API keys. A read key lists and reads sheets and uses no credits. A write key can also make sheets and run Autofill. Send it with every request:

Authorization: Bearer af_your_key

Keys are shown once. Keep them out of browsers and public code; delete a key to turn it off.

REST API

Base URL: https://getautofill.app. Requests and responses are JSON.

GET/api/v1/sheets· Read

Your sheets and the ones shared with you, newest first.

GET/api/v1/sheets/:id?tab=:tab· Read

One subsheet's columns and rows (the first tab unless tab is given).

GET/api/v1/sheets/:id/autofill· Read

The sheet's latest Autofill run: running, done, failed or stopped.

POST/api/v1/sheets· Write

Make a sheet from a sentence: {"description": "…", "rows": 10}. With rows, it starts finding them.

POST/api/v1/sheets/:id/autofill· Write

Run Autofill: {"rows": 25} finds new rows; with no rows it fills every empty cell. Optional "tab" and "instruction".

POST/api/v1/sheets/:id/autofill/stop· Write

Stop the running Autofill. What it filled stays.

List your sheets, then read one:

curl https://getautofill.app/api/v1/sheets \
  -H "Authorization: Bearer $AUTOFILL_KEY"

curl https://getautofill.app/api/v1/sheets/SHEET_ID \
  -H "Authorization: Bearer $AUTOFILL_KEY"

Make a sheet and find 10 rows, then check on the run until it's done:

curl -X POST https://getautofill.app/api/v1/sheets \
  -H "Authorization: Bearer $AUTOFILL_KEY" \
  -H "Content-Type: application/json" \
  -d '{"description": "Seed investors who back developer tools", "rows": 10}'

curl https://getautofill.app/api/v1/sheets/SHEET_ID/autofill \
  -H "Authorization: Bearer $AUTOFILL_KEY"

Autofill runs in the background, usually for a minute or a few. Rows appear as they're found, so you can read the sheet while it runs.

A sheet as JSON

Each row's values are keyed by column name, with the page each value came from when there is one:

{
  "id": "9a36fb99-…",
  "name": "Seed investors who back developer tools",
  "url": "https://getautofill.app/app/sheets/9a36fb99-…",
  "tabs": [{ "id": "b6b6…", "name": "Investors" }],
  "tab": { "id": "b6b6…", "name": "Investors", "what_counts_as_a_row": "…" },
  "key_column": "fund",
  "columns": ["fund", "focus", "typical check", "recent deals"],
  "rows": [
    {
      "id": "5dbf…",
      "values": { "fund": "Northpine Ventures", "focus": "Dev tools, seed", "typical check": "$500k–$1.5M", "recent deals": null },
      "sources": { "focus": "https://northpine.vc/about" },
      "source_url": "https://northpine.vc"
    }
  ]
}

An empty value is null. A run's status looks like:

{ "autofill": { "id": "…", "status": "running", "phase": "finding_rows",
  "rows_found": 6, "cells_filled": 18, "cells_asked": 40, "seconds": 42, "message": "Reading sources…" } }

MCP server

AI agents can use Autofill as a tool through the Model Context Protocol. The server is at https://getautofill.app/api/mcp (Streamable HTTP) and takes your API key as a bearer token. Its tools: list_sheets, read_sheet, autofill_status, and with a write key create_sheet, autofill and stop_autofill.

Claude Code:

claude mcp add --transport http autofill https://getautofill.app/api/mcp \
  --header "Authorization: Bearer af_your_key"

Cursor and other clients that take a URL and headers (mcp.json):

{
  "mcpServers": {
    "autofill": {
      "url": "https://getautofill.app/api/mcp",
      "headers": { "Authorization": "Bearer af_your_key" }
    }
  }
}

Clients that only run local servers, like Claude Desktop, can connect through mcp-remote:

{
  "mcpServers": {
    "autofill": {
      "command": "npx",
      "args": ["mcp-remote", "https://getautofill.app/api/mcp", "--header", "Authorization: Bearer af_your_key"]
    }
  }
}

Limits and errors