Skip to main content
Updated Sep 17, 2026

API Tokens

What you'll learn
  • What public API tokens are and when you need them
  • How to create, view, and manage tokens
  • Security best practices for handling tokens

Public API Tokens allow external applications, scripts, and services to authenticate with AutoTalk's API. You manage tokens from the API Tokens page under Integrations in the sidebar.

When you need API tokens

You need an API token whenever an external system needs to communicate with AutoTalk programmatically. Common scenarios include:

  • Connecting a CRM or helpdesk system that pushes or pulls data from AutoTalk
  • Building a custom integration that sends messages or reads conversations through the API
  • Setting up automation scripts that create contacts, update records, or trigger workflows
  • Integrating unsupported platforms or internal systems through a custom bridge, such as a Discord notification pipeline

Managing tokens

Viewing existing tokens

Navigate to Integrations > API Tokens. The page lists all of your existing tokens. You can filter the list, open a token to view its details, and delete tokens; tokens can't be edited after creation.

Creating a new token

  1. On the API Tokens page, click the + button (its tooltip reads "Add new public_api_tokens").
  2. Review the generated alias or replace it with your own label.
  3. Choose permissions. Under Permissions, tick what the integration needs in the permissions grid, or start from a preset (Read-only, Operator, Full access) and adjust. At least one is required — a token that grants nothing cannot be saved. Permissions you did not tick may appear ticked and locked: a stronger one you did tick carries them. See Permissions below. Permissions can't be changed afterwards — a token that needs a different set has to be replaced.
  4. Choose a lifetime. New tokens default to 90 days, with options for 7, 30, 90, 365 days, or never expiring.
  5. Save the token.
  6. Copy the generated token or the Codex / Claude Code MCP command immediately. The full token is displayed only once.

Viewing or deleting a token

  • Click on any token in the list to view its details, expiration, and usage stats.
  • To revoke a token, delete it from the list. Any external system using that token will immediately lose access.

Using tokens in API requests

Pass the token in the x-api-key header of every request to the AutoTalk public API. Keys always start with sk-:

x-api-key: sk-YOUR_API_KEY

A minimal curl example:

curl -H "x-api-key: sk-YOUR_API_KEY" https://api.autotalk.io/v1/self

See the API Reference for the full endpoint catalog.

Alternative: x-jwt-token

The same API also accepts short-lived JWTs via the x-jwt-token header (or the unified x-auth-token header that sniffs the sk- prefix to route automatically). JWTs are issued internally by the actions/security/auth/jwt/generate agent workflow action — they are meant for agents calling the public API on their own company's behalf. External integrations should stick with x-api-key. See Authentication for the full spec.

Security best practices

  • Treat tokens like passwords. Never share them in public code repositories, chat messages, or emails.
  • Use descriptive names. Label each token with the integration or system it belongs to, so you can identify it later.
  • Revoke unused tokens. If an integration is retired or a token is no longer needed, delete it immediately.
  • Rotate tokens periodically. Replace tokens on a regular schedule to reduce the risk if one is accidentally exposed.
  • Grant the narrowest set that works. At least one permission is required, and a token grants everything its permissions imply — "Run saved workflows", for example, carries whatever the workflow's steps do. Use a separate token per integration so revocation is targeted, and treat a leaked token as a compromise of everything its permissions cover.

Permissions

Permissions are arranged as a small tree: picking a stronger one automatically carries the weaker ones under it, and the picker shows those as already-ticked. Grant the narrowest set the integration actually needs.

PermissionName in the APIWhat it grants
Read recordsdata:readRead-only access to your data and its schemas
Create, update and delete recordsdata:writeWrites to your data, including document functions. Carries data:read
Bulk and cascading deletesdata:adminDestructive, unbounded-fanout deletes. Carries data:write
Send messagesmessaging:sendMessaging on your channels, and deleting chats and messages
Read filesstorage:readReading and listing stored files
Upload filesstorage:writeWriting to storage. Carries storage:read
Delete filesstorage:adminDeleting files. Carries storage:write and storage:share
Share linksstorage:shareCreating download URLs usable outside AutoTalk. Carried only by storage:admin — never by read or write
Run billed AIai:runLLM generation and transcription that costs money
Run saved workflowsworkflows:runRuns a workflow this account already wrote — including the records, messages, files and AI its steps touch. It cannot create, edit or arm one
Automation and codeautomation:adminArbitrary code execution. Also authoring and arming workflows, outbound HTTP, minting tokens, and reading stored secrets
Account administrationorg:adminEverything in the ten areas below at once
Teamorg.team:adminInvite links and employees
Billingorg.billing:adminBudget, credits and subscriptions
Channelsorg.channels:adminChannels and integrations, including moderation actions on the connected platform
Custom typesorg.types:adminCreating and changing custom types
Webhooksorg.webhooks:adminWebhook configuration — and therefore configured outbound egress
Agents and profilesorg.agents:adminAgents, transcription profiles and voice profiles
API keysorg.keys:adminRe-issuing an API key's secret
Data exportorg.export:adminData transfer and export
Onboardingorg.onboarding:adminOnboarding flows
Agent debugorg.debug:adminAI agent debug tools
Full accessaccount:adminEvery permission above

Two things follow from the tree and are worth stating outright:

  • "Run saved workflows" carries real authority. A workflow run exercises whatever its steps do, so this permission carries data, messaging, file and AI access with it. What it does not carry is authoring: creating, editing or arming a workflow is automation:admin.
  • automation:admin is fenced. Nothing implies it except full access. A workflow whose steps run code, call an external URL or mint a token is refused in full unless the key holds it.

A call the token's permissions do not cover is refused with HTTP 403 and the error code scope_denied. The response names the permission that was missing.

tip

If you suspect a token has been compromised, revoke it immediately by deleting it from the API Tokens list, then create a new one and update the affected integration.

Next steps