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
- Up to 60 requests a minute per key.
- One Autofill run per sheet at a time; starting another while one runs answers 409 with the running one.
- Errors are JSON with an error message: 400 bad input, 401 no or unknown key, 402 not enough credits (with your balance), 403 a read key or no access, 404 no such sheet, 429 too many requests.
- AI results can be wrong. Check what matters before you rely on it.