REST API quickstart, auth and errors
Make your first GetItDone task API call in one curl: create a gid_ key, send it as a Bearer token, get a 200. Errors, rate limits, pagination and webhooks.
The GetItDone REST API is AI-native task management for people and agents.
One gid_ key, Bearer auth, RFC 9457 errors. Every operation is listed in the
API reference, generated from the OpenAPI document.
Base URL
https://app.nowgetitdone.com/v1Quickstart — first 200
- Create an API key in the app: Profile → API Keys. It is shown once — store it as a server-side secret.
- Call the API with your key:
curl https://app.nowgetitdone.com/v1/organizations \
-H "Authorization: Bearer gid_YOUR_API_KEY"A successful list returns a cursor envelope:
{
"data": [{ "id": "org_a1b2c3", "name": "Acme Inc", "role": "owner" }],
"has_more": false,
"next_cursor": null
}Authentication
Send your key on every request. The bearer header is the only form /v1
accepts — any other header answers 401 missing_credentials:
Authorization: Bearer gid_YOUR_API_KEYKeys are minted in-app (Profile → API Keys) and shown once. Test keys are
prefixed gid_test_ — use them against test data, live keys against
production.
Errors
Errors are RFC 9457 application/problem+json documents with a stable
machine-readable code. Switch on code, never on the human-readable
title. Every response carries an x-request-id — quote it in support
requests.
{
"type": "https://nowgetitdone.com/docs/api/problems/validation-failed",
"title": "Request validation failed",
"status": 400,
"code": "validation_failed",
"request_id": "req_a1b2c3d4",
"errors": [
{
"pointer": "/title",
"code": "too_small",
"message": "String must contain at least 1 character(s)"
}
]
}Rate limits & quotas
Two independent systems, two codes. A per-credential burst window answers
429 rate_limited (retry after Retry-After); the billing-period
allowance answers 429 quota_exhausted. Every response carries IETF
draft-11 RateLimit / RateLimit-Policy headers plus the
X-RateLimit-Limit / -Remaining / -Reset trio.
| Plan | API calls / period | Burst / minute |
|---|---|---|
| Free | 50 | 10 |
| Pro | 50,000 | 120 |
| Team | 500,000 | 300 |
One API call = one request against your workspace quota; it resets each billing period. Outbound webhooks require a Pro or Team plan.
Pagination
List endpoints return a cursor envelope. Pass next_cursor back as the
after query parameter for the next page. Filters are baked into the cursor —
reusing one with different filters answers 400 validation_failed.
{
"data": [
/* … */
],
"has_more": true,
"next_cursor": "eyJ…"
}Idempotency
Consequential POSTs accept an optional Idempotency-Key header (1–255
characters; a UUID works). Retrying with the same key and byte-identical body
within 24h replays the stored response — never re-executed, never re-charged.
A different body answers 422 idempotency_key_reused; a retry racing the
first answers 409 idempotency_in_progress.
Webhooks
Receive signed events when tasks change. Full details — event catalog, signature verification, retries, and secret rotation — on the webhooks page.
Keep exploring
- API reference — every operation, generated from the OpenAPI document.
- Error codes — every problem code, what it means, how to fix it.
- OpenAPI document — the OpenAPI 3.1 spec for the whole
/v1surface. - For AI agents — machine-readable indexes, Markdown twins, and agent guidelines.
- TypeScript SDK — typed client, published on npm:
npm install @nowgetitdone/sdk.
Prefer AI tooling? Connect the MCP server at
https://app.nowgetitdone.com/api/mcp.
Read this page as Markdown — plain text for AI agents. Every guide at once: llms-full.txt.
Use GetItDone in Claude
Connect Claude, Claude Desktop or Claude Code to your GetItDone tasks through the remote MCP server. Sign in with OAuth, no API key needed.
Webhooks
GetItDone outbound webhooks (Pro+): the task event catalog, Standard Webhooks signature verification, delivery retries, and secret rotation.