About
The Goliath developer API lets your own code — servers, scripts, AI agents, or third-party tools — read and write the same data you work with in the app: contacts, properties, deals and pipelines, workflow automations, forms, and team settings. There is one HTTP endpoint. You never send GraphQL or build queries — instead you call a named operation from a fixed catalog (anoperationId)
with its variables, and Goliath executes a pre-authored, pre-reviewed request
on your behalf. Every call runs as the key’s owning user, so your real
organization permissions and visibility apply — the API can never see or touch
anything you couldn’t see in the app yourself.
Live in productionThe developer API is live: create and scope a key in the app under
Settings → API Keys and call the production endpoint below — no
enrollment or approval step. The server also publishes its own always-current
reference:
GET /api/v1/help (no auth required) renders full documentation
for every operation, generated from the running API.Generating an API key
- Open API Keys. From the app, go to Settings → API Keys (also reachable from the API Keys card on the Integrations page).
- Create a key. Keys are personal — each key belongs to your user and acts as you. Create one key per host or device so you can revoke them independently.
-
Pick scopes. Each key carries one or more scopes (see below).
ADMINcan only be granted to a key whose owner is a team admin. -
Store the secret. The key looks like
gsk_.... Pass it as a Bearer token on every request and keep it in your secrets manager — never ship it in a browser, mobile app, or any client-side code.
Scopes
Scopes decide what kind of operation a key may run. Which specific records it
may touch is a separate check — see Authorization
for how organization ownership and the two kinds of
403 work.
Making a request
POST /api/v1/graphql is the same endpoint under its original name and stays
supported — despite that path, it does not accept GraphQL queries either.)
A handled request always returns 200 with a GraphQL-style body:
Result limits & truncation
Every list/search operation has a result cap — a maximum number of rows it returns per call. If you send alimit larger than the cap, it is silently
clamped to the cap: you get the cap’s worth of rows, no error.
Most list operations are fully pageable — they take an offset (or a cursor)
and return a totalCount and/or hasMore, so you can walk the whole result set a
page at a time. Prefer these when you need everything:
Discovering operations
The full operation catalog is machine-readable — ideal for AI agents and for keeping your integration in sync:- The list returns one-line summaries of every operation.
- The detail view returns the full variable schema, the exact response shape, and a copy-pasteable example for one operation.
authorizedreflects your key’s scopes, so a caller sees exactly what it is allowed to run.
Operation reference by area
The catalog is documented alongside each feature’s user guides:- Properties API — look up and search properties, run saved filters, manage tags and lists
- Contacts API — read, create, update, and enrich contacts
- Deals API — read, create, update, and archive deals
- Pipelines API — manage pipeline structure and read pipeline analytics
- Workflows API — manage workflow automations and runs
- Content Templates API — manage message templates and folders
- Forms API — manage lead-capture forms and read form analytics
- Communications API — read inbox threads, recordings and transcripts, manage suppressions, and render templates
- Notifications API — read your notification feed and mark items read
- Appointments API — schedule appointments and manage your availability
- Tasks API — create, reschedule, and complete CRM to-do tasks
- Skip Trace API — run skip traces from your own systems
- Bulk Tasks API — poll the status of long-running bulk jobs
- Team API — teammates, invites, and team analytics
- Account API — your profile and integration setup links
- Billing API — plan, credit balances, and credit prices
Not yet available
A few capabilities on the developer-API roadmap aren’t exposed yet — use the app for these until they ship:- File uploads — importing contacts, properties, or skip-trace lists from a CSV.
- Signal coverage — querying data-coverage by county/ZIP/state.
The discovery endpoint is always the source of
truth for what your key can call right now — if an operation isn’t listed
there, it isn’t available yet.