Skip to main content
Create a key in Settings → API keys. It is shown once, at creation, and stored only as a hash — nothing can retrieve it afterwards, including us.

This is not your widget key

Your public key (pk_…) identifies which agent answers and is meant to be visible in your page source.Your API key (ta_live_…) can message any of your customers. It belongs in a server’s environment. Putting it in your HTML hands anybody the ability to message your entire contact list.

Choose what each key can do

When you create a key, you pick one of three access levels. The level applies everywhere the key is used — your own code calling the API, and the MCP server. A key’s access cannot be changed later — create a new key and revoke the old one. If a key tries something its access level does not allow, the request is refused with 403 and a message saying what kind of key it is:
Connecting an AI assistant such as Claude Code or Cursor to the ThinnestAI MCP server? The MCP server can do exactly what its key can do, so choose Build to let it set things up without being able to contact a customer, or Read-only if it only needs to report. See Connect your assistant to the MCP server.

Acting for one of your customers

If you build your own product on the API, your key reaches each of your customers: add their id in a header.
The request runs inside that customer, with your key’s access level. An id that is not one of your customers is 404, whether or not it exists.

Revoking

Immediate. Revoked keys are kept along with their last-used time, because that is the first thing anybody wants to know after a leak.

Rate limits

Per organization, per minute.
Honour Retry-After. The limit exists because a loop in an integration can spend a month of WhatsApp budget before anybody looks at a dashboard — and because Meta rate-limits the number afterwards. The damage is money first and reputation second.
Idempotency protects you from repeating one request. It does nothing about a thousand different ones. These are separate problems and both are guarded.

Storing the key