Skip to content
Browse the knowledgebase

API and integrations

Create and manage API keys

One key per system, the narrowest scopes that work, and a rotation plan you have actually written down.

  • Last updated
  • 7 minute read
  • API

An API key lets another system act on behalf of your organisation. Treat each one like a password that belongs to a system rather than a person.

Creating a key

HHalden & RoweSK

API keys

Connect Signed to your own systems. Keys act on behalf of this organisation.

Create key
NameKeyScopesLast usedStatus
Website syncsgn_7Kd2••••••••••••signatures:read, users:readTodayActive
HR systemsgn_3Mf9••••••••••••users:write14 SepActive
Old intranetsgn_1Qa4••••••••••••signatures:read2 JulRevoked

A key is shown once when you create it, and only a hash is stored. Scopes narrow what the key can do. A key can never grant more than the person who created it holds.

Step 1 of 3

Create key

Give it a name that says which system uses it. In six months the name is the only thing that will tell you whether it is still needed.

Reduced motion is on, so the tour waits for you. Use the arrows or the list to move through the steps.

The secret is shown once, at creation. Copy it into your secret store before you leave the page.

Scopes

A key holds a set of scopes, and each endpoint needs one. Grant the narrowest set that lets the system do its job.

Every scope a key can hold
ScopeWhat it allows
organisation:readRead organisation details and settings
organisation:writeUpdate organisation details and settings
usage:readRead usage counts and the daily series
signatures:readList and read signature templates
signatures:writeCreate, update, delete and assign templates
users:readList and read people
users:writeCreate, update, delete and import people
departments:readList and read departments
departments:writeCreate, update and delete departments
rules:readList and read assignment rules
rules:writeCreate, update and delete assignment rules
campaigns:readList and read banner campaigns
campaigns:writeCreate, update and delete banner campaigns
signature:readLook up the signature for an email address
signature:stampStamp a signature into an outgoing email body
audit:readRead the audit log
keys:readList and read API keys
keys:writeCreate, update, revoke and rotate API keys
*Full access, equivalent to every scope above

Note: A key can never grant more than the person who created it holds, and it cannot widen its own scopes. A limited key cannot promote itself.

Rate limits, IP allow-lists and expiry

  • Rate limits can be set per minute and per day, per key. Exceed either and the API answers 429 with a Retry-After header.
  • An IP allow-list restricts where a key can be used from. Wildcards are supported, so 203.0.113.* covers a subnet.
  • An expiry date makes a key stop working on a known date, which suits temporary integrations and contractors.

Watch out: A key is a bearer credential: anyone holding it can use it from anywhere the allow-list permits. Never put one in client-side JavaScript, a mobile app, or a public repository.

Rotating and revoking

Rotation issues a new secret for the same key. The response is the only place the new secret appears. Old usage records stay attached to the key, so your history does not break.

  1. Create the replacement key, or rotate the existing one.
  2. Put the new secret into the system that uses it and deploy.
  3. Confirm from the key list that the new key has been used.
  4. Revoke the old key.
  5. Check the audit log. Entries made by a key name that key, so the changeover is visible.

Tip: Give each system its own key rather than sharing one. When something goes wrong you can revoke exactly one thing, and the usage records tell you which system it was.

Common questions

Can I see a key again after creating it?

No. Only a hash is stored, so the secret is shown once. If you lose it, rotate the key to get a new secret.

What happens to a key when the plan lapses?

Reads keep working. Writes are refused with a 402 and the reason subscription_required, and start working again as soon as the plan is active.

Do keys work in a browser?

Technically yes, and the Try it tester in our API reference does it. In production, call the API from a server. Anything in a browser is visible to whoever opens developer tools.

Something here out of date, or a step that did not work? Tell us and we will fix the article. Every page is checked against the running product, so corrections are welcome.