API keys
Back to the guide
Settings → API keys
Keys let other software read and update your CRM. Owners and admins can create, rotate and revoke them.
A key looks like sf_live_… and is sent as a bearer token. It is shown once, when
created. Store it somewhere safe; if you lose it, rotate rather than hunt for it.
What a key can do
Each key holds a list of scopes — read or write on objects, records, notes, lists and tasks — and each scope can be narrowed to particular objects.
Three rules govern this, and they matter:
A key can only be given scopes its creator holds. An admin cannot create a key more capable than an admin.
A key is never an owner. It never inherits the owner exemption from restricted records.
Scopes and visibility are separate checks, and both must pass. A scope permits an action; it does not reveal anything. What a key can see is decided by the same record-level permissions as a person, through the key's own service account. So a restricted record stays invisible to a key until somebody grants that key access under Settings → Access and permissions.
Something outside a key's reach returns not found, the same as something that does not exist. That is deliberate — a different answer would confirm the record exists.
Deliberately not available to keys
Team and invitations, access grants, API key management, billing, email accounts and message bodies, admin, cron and webhooks.
If you need one of those, it is a gap to be filled deliberately, not an oversight.
Rotating and revoking
Rotate issues a new secret for the same key, with the same scopes. Use it when a key may have leaked, or on a schedule.
Revoke ends it. Anything using it stops immediately.
Usage
Each key has its own request log, so you can see what it has been doing and when it was last used. Worth checking before revoking something you think is unused, and worth checking afterwards to see what broke.
Responses
Every response carries a request id, and rate limit headers showing your limit, what remains, and when it resets. A rate-limited response also says how long to wait.
Errors come back with a code, a message and that request id, which is the thing to quote when asking about a failed call.
Lists are paged with a cursor rather than page numbers.
API keys against connected apps
Both reach the same data; they differ in who they act as.
| Acts as | Approved by | Shown in | |
|---|---|---|---|
| API key | Its own service account | An owner or admin creating it | Settings → API keys |
| Connected app | The person who approved it | That person | Settings → Connected apps |
Use a key for software that runs on its own — a script, a sync job, a tool such as Claude Code. Use a connected app for something a person drives.
See Connected apps.