Base URL
Authentication
Send a workspace API key on every request. Create one in Settings → API keys. A key belongs to one workspace, so there is no workspace ID to pass.Read-only keys
A read-only key can call everyGET endpoint plus POST /v2/context, POST /v2/query, and POST /v2/score. Anything else returns 403 read_only_key.
Member keys
A key created by a workspace member acts as that member. On a closed workspace it only sees accounts in that member’s book. A workspace key sees everything.Conventions
- Lists return
{ <items>, limit, offset, has_more }.limitdefaults to 50 with a max of 200. List people withoutinclude=allkeeps its own default of 100 and max of 1000. Page withoffsetuntilhas_moreisfalse. - Unknown query parameters return
400 unknown_query_paramwith thesupportedlist. A filter is never silently ignored. - Admin-only routes, such as inviting or removing members, return
403 admin_key_requiredto a member key. - A member key’s book. On a closed workspace a member key sees only its own accounts. A record outside that book returns
404, the same as one that does not exist.
Identifying an account
Endpoints that takefocus or an :id accept an email, a LinkedIn URL, a domain, or an entity UUID. Pass one of those, never a bare name. Deal endpoints and get context also take a deal id.
When an identifier matches more than one record, the response is 200 with the candidates. Call again with the entity_id you want.
Errors
Errors return JSON with a machine code inerror. Some add detail or other fields.
Rate limits
Each key gets 600 requests per minute. Every response carriesRateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. Past the limit, requests return 429 until the window resets.
Endpoints
Agents can reach the same graph through the MCP server.