Ricky logorickyDocs

Authentication

Create keys with the fewest scopes and send them from your server.

Every request carries an organization API key in the Authorization header. The key decides which organization you see and which operations you can call.

Create a key

Only owners and admins of the organization can create and revoke keys.

  1. Open Settings → API in Ricky.
  2. Enter a name that identifies the integration, for example Store ERP.
  3. Select only the scopes the integration needs.
  4. Choose the expiry: 90 days or 1 year.
  5. Select Create key and copy the key.

Ricky shows the full key once and stores only its SHA-256 digest. If you lose it, create another one.

A key has the form rky_live_ followed by 43 characters.

Send the key

curl https://getricky.ai/api/v1/members \
  -H "Authorization: Bearer rky_live_…"

Use the key only on your server. Never put it in a web page, a mobile app, a URL or a log. Keep it in a secret manager or an environment variable.

Lifetime

The key belongs to the organization and acts on behalf of the person who created it. It stops working in any of these cases:

  • Someone revokes it in Settings → API. The effect is immediate.
  • It reaches its expiry date.
  • Its creator leaves the organization or loses the owner or admin role. Ricky checks this on every request.

A key that no longer works gets 401 unauthorized.

To rotate a key, create the new one, deploy it to your server and revoke the old one.

Scopes

Each operation requires one scope. A key without it gets 403 insufficient_scope.

ScopeAllows
contacts:readRead contacts and contact fields.
contacts:writeCreate and update contacts.
conversations:readRead conversations, messages and channels.
conversations:writeAssign, close and reopen conversations.
messages:sendStart conversations, send messages and read sends.
templates:readRead WhatsApp templates.
members:readRead the members of the organization.
tags:readRead contact tags.
webhooks:manageCreate, list and disable webhooks; read and retry their deliveries.

The table below is generated from the API contract: it is the exact list of operations and the scope each one requires.

OperationEndpointScope
List contactsGET /contactscontacts:read
Create a contactPOST /contactscontacts:write
Get a contactGET /contacts/{contact_id}contacts:read
Update a contactPATCH /contacts/{contact_id}contacts:write
List contact fieldsGET /contact-fieldscontacts:read
List conversationsGET /conversationsconversations:read
Start a conversationPOST /conversationsmessages:send
Get a conversationGET /conversations/{conversation_id}conversations:read
Assign a conversationPATCH /conversations/{conversation_id}/assignmentconversations:write
Close a conversationPOST /conversations/{conversation_id}/closeconversations:write
Reopen a conversationPOST /conversations/{conversation_id}/reopenconversations:write
List messagesGET /conversations/{conversation_id}/messagesconversations:read
Send a messagePOST /conversations/{conversation_id}/messagesmessages:send
Get a sendGET /sends/{send_id}messages:send
List channelsGET /channelsconversations:read
List membersGET /membersmembers:read
List tagsGET /tagstags:read
List templatesGET /templatestemplates:read
List webhooksGET /webhookswebhooks:manage
Create a webhookPOST /webhookswebhooks:manage
Disable a webhookDELETE /webhooks/{webhook_id}webhooks:manage
List deliveriesGET /webhooks/{webhook_id}/deliverieswebhooks:manage
Retry a deliveryPOST /webhooks/{webhook_id}/deliveries/{delivery_id}/retrywebhooks:manage

Authentication responses

SituationResponse
The header is missing or malformed, or the key expired or was revoked401 unauthorized
The key lacks the operation's scope403 insufficient_scope
The key made more than 120 requests this minute429 rate_limited

See Errors and Idempotency, rate limits and retries.

On this page