Response URL token
Every event we send includes aresponse_url. The key is already part of the URL:
Authorization header. Having the URL is your permission. This is why no-code tools are so easy here: map the field and POST to it.
The clock starts when the event is created. Expired tokens return
410 RESPONSE_URL_EXPIRED.Use it as many times as you like until it expires. Post several messages, or update one message many times.
Per token. Going over returns
429 with a retry_after value.The token only works for the conversation that created the event.
API key
For anything outside the 45-minute window — cron jobs, long tasks, or messages you start yourself — use a key. Create one in your bot’s settings.Bearer mac_live_…. Anything else returns 401 invalid_api_key.- One key, one chatbot. A key cannot touch another bot’s conversations. Using it on the wrong bot’s files endpoint returns
403 wrong_chatbot. - Shown once. We only store a hashed copy, plus the last few characters so you can tell keys apart. If you lose it, make a new one.
- Can be turned off. A revoked key stops working right away. You can also set a future end date, which gives you time to switch to a new key.
- Rate limited to 120 writes per minute and 300 reads per minute, per key.
Webhook signing secret
This one works the other way around: we sign every request we send you, and you check the signature.X-MyAIChatbot-Signature header on every POST we send, including retries and tests.
A new secret starts working right away. There is no overlap period, so deploy the new secret first, then rotate.
Which one do I need?
Replying to an event
Use the
response_url. No key needed.Starting a message later
Use an API key. It never expires.

