Skip to main content

Base URL

Self-hosted instances serve the same paths from their own API 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.
Call the API from a server. Browser requests are blocked by CORS.

Read-only keys

A read-only key can call every GET 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 }. limit defaults to 50 with a max of 200. List people without include=all keeps its own default of 100 and max of 1000. Page with offset until has_more is false.
  • Unknown query parameters return 400 unknown_query_param with the supported list. A filter is never silently ignored.
  • Admin-only routes, such as inviting or removing members, return 403 admin_key_required to 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 take focus 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 in error. Some add detail or other fields.

Rate limits

Each key gets 600 requests per minute. Every response carries RateLimit-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.