Authentication

Company API tokens, how to send them, and how to manage them.

The JOIN API authenticates every request with a company API token sent as a Bearer token.

curl https://api.join.com/v3/locations \
  -H "Authorization: Bearer $JOIN_API_TOKEN"

Company tokens

A token belongs to your company, not to the person who created it.

PropertyRule
OwnerThe company. A token keeps working when the admin who created it leaves or is deleted.
AccessFull read and write access to the company's data through the API.
FormatNew tokens start with join_sk_. Tokens migrated from v2 keys have no prefix.
VisibilityThe full value is shown once, at creation. JOIN stores it in a form that cannot be read back.
Limit10 active tokens per company. Revoked tokens do not count.
ExpiryNone. A token works until it is revoked.
EditableOnly the name.

Use one token per integration. A separate token per system makes usage traceable in the token list and lets you revoke one integration without affecting the others.

Managing tokens

Tokens are managed in Settings → Developer → API tokens. The page is available to the System Admin role.

ActionEffect
CreateName the token (unique, up to 100 characters) and copy the value from the confirmation dialog.
RenameChanges the display name. The token value is unchanged.
RevokeInvalidates the token immediately and permanently. Requests in flight and all later requests return 401 token_invalid.

The token list shows each token's name, its masked form (join_sk_…IW7Y), who created it, when, and the date it was last used.

A lost token cannot be recovered. Create a new token, update the integration, then revoke the old one.

Rotating a token

  1. Create a new token.
  2. Deploy the integration with the new token.
  3. Confirm in the token list that the new token shows a recent Last used date.
  4. Revoke the old token.

Plan access

API access is part of the Advanced and Enterprise plans. While a company's plan does not include API access, its tokens return 401 token_invalid. Tokens are not revoked or deleted when the plan changes, and they work again as soon as the plan includes API access.

Authentication errors

StatusCodeCause
401authentication_requiredThe Authorization header is missing, or does not use the Bearer scheme.
401token_invalidThe token is malformed, unknown, or revoked, or the company's plan does not include API access.
{
  "error": {
    "code": "token_invalid",
    "message": "The API token is invalid or has been revoked."
  }
}

Security recommendations

  • Keep tokens on the server. Never send a token to a browser or a mobile app.
  • Store tokens in a secret manager or environment variables, never in source control.
  • If a token may have been exposed, revoke it immediately. The join_sk_ prefix lets secret scanners recognise JOIN tokens in code and logs.