Skip to main content
The Inbox domain provides a full omni-channel messaging stack. The central resource is a Conversation, which holds an ordered list of Messages exchanged between customers and agents across channels (WhatsApp, webchat, Instagram, etc.). Supporting resources include Labels (conversation tags), Reply Templates (saved canned responses), Sticker Packs, Inbox Agents (API-driven automation bots with webhook delivery), and Assignment Rules (automatic agent routing). Two distinct authentication surfaces exist: the standard Authorization: Bearer <token> flow used by human agents in the dashboard, and a dedicated Inbox API Token flow (Authorization: InboxToken <token>) used by external integrations and automation agents. Base URL https://api.genuka.com · Auth Authorization: Bearer <token> + X-Company: <companyId> · See Getting Started for shared conventions, pagination & error formats.
Pagination note: All list endpoints in this domain use cursor-based pagination instead of the standard offset pagination. The response wrapper replaces the pagination object with a meta / links cursor block from Laravel’s cursor paginator. The per_page query parameter is honoured (default values vary per endpoint, commonly 25–50).

Endpoints at a glance


Automation Agents

Inbox Agents are automation bots that can receive webhook events and send messages via a scoped API token. When an agent is created, both the webhook_secret and api_token (plain-text) are returned once in the response.

GET /2023-11/admin/inbox/agents

List automation agents for the authenticated company.
  • Query parameters:
Request example
Success response — 200 OK
Error responses
  • 400 — Missing X-Company header (company_id_required)
  • 401 — Invalid or expired token

POST /2023-11/admin/inbox/agents

Create a new automation agent. The response includes webhook_secret and api_token in plain text — these values are shown only once. Store them securely.
  • Request body: multipart/form-data or application/json
Request example
Success response — 200 OK Same shape as the list item above, plus:
Error responses
  • 422 — Validation failure (e.g. invalid webhook_events value)

GET /2023-11/admin/inbox/agents/available-events

Return the list of event strings an agent may subscribe to via webhook_events. Request example
Success response — 200 OK

GET /2023-11/admin/inbox/agents/{agent}

Get a single automation agent.
  • Path parameters:
Request example
Success response — 200 OK
Error responses
  • 404 — Agent not found or does not belong to the company

PATCH /2023-11/admin/inbox/agents/{agent}

Update an automation agent. After updating allowed_channels or allowed_connectables, any conversations where the agent is assigned but no longer has access are automatically unassigned.
  • Path parameters:
  • Request body: multipart/form-data or application/json — all fields optional
Request example
Success response — 200 OK
Error responses
  • 404 — Agent not found
  • 422 — Validation failure

DELETE /2023-11/admin/inbox/agents/{agent}

Soft-delete an automation agent.
  • Path parameters:
Request example
Success response — 200 OK
Error responses
  • 404 — Agent not found

GET /2023-11/admin/inbox/agents/{agent}/logs

List webhook delivery and inbound API call logs for an agent. Supports cursor-based pagination.
  • Path parameters:
  • Query parameters:
Request example
Success response — 200 OK

GET /2023-11/admin/inbox/agents/{agent}/logs/{log}

Get a single log entry including full request and response payloads.
  • Path parameters:
Success response — 200 OK

POST /2023-11/admin/inbox/agents/{agent}/regenerate-api-token

Revoke all existing API tokens for the agent and issue a new one. The plain token is returned once in api_token.
  • Path parameters:
Request example Request body: None — no body required for this action endpoint.
Success response — 200 OK

POST /2023-11/admin/inbox/agents/{agent}/regenerate-secret

Regenerate the webhook signing secret for an agent and reset the failure counter. The new secret is returned in webhook_secret once.
  • Path parameters:
Request body: None — no body required for this action endpoint. Success response — 200 OK

GET /2023-11/admin/inbox/agents/{agent}/stats

Aggregated activity statistics for an agent over a time period.
  • Path parameters:
  • Query parameters:
Request example
Success response — 200 OK

POST /2023-11/admin/inbox/agents/{agent}/test-webhook

Send a test payload to the agent’s webhook_url to verify connectivity.
  • Path parameters:
Request body: None — the test payload is fully server-generated. The server sends the following shape to the agent’s webhook_url:
Request example
Success response — 200 OK
Error responses
  • 422 — Agent has no webhook_url configured

Assignment Rules

Assignment rules automatically route incoming conversations to specific agents based on channel, connectable, customer tags, or conversation labels.

GET /2023-11/admin/inbox/assignment-rules

List all assignment rules for the company.
  • Query parameters:
Request example
Success response — 200 OK

POST /2023-11/admin/inbox/assignment-rules

Create an assignment rule. All referenced agent_ids must belong to the authenticated company.
  • Request body:
Request example
Success response — 200 OK
Error responses
  • 422 — Validation failure or referenced agents do not belong to the company

GET /2023-11/admin/inbox/assignment-rules/{rule}

Get a single assignment rule.
  • Path parameters:
Success response — 200 OK

PATCH /2023-11/admin/inbox/assignment-rules/{rule}

Update an assignment rule. All fields are optional (sometimes).
  • Path parameters:
  • Request body: same fields as create, all optional.
Success response — 200 OK

DELETE /2023-11/admin/inbox/assignment-rules/{rule}

Delete an assignment rule.
  • Path parameters:
Success response — 200 OK

Company Settings


GET /2023-11/admin/inbox/company-settings

Get the inbox settings for the authenticated company. Request example
Success response — 200 OK

PATCH /2023-11/admin/inbox/company-settings

Update inbox company settings. All fields are optional.
  • Request body:
Request example
Success response — 200 OK

Conversations


GET /2023-11/admin/inbox/conversations

List conversations for the company. By default excludes archived, spam, and snoozed conversations. Results are sorted by pinned status then most recent message.
  • Query parameters:
Request example
Success response — 200 OK

POST /2023-11/admin/inbox/conversations

Create a new agent-initiated conversation. For WhatsApp conversations, whatsapp_connection_id is required and a channel record is automatically created.
  • Request body:
Request example
Success response — 200 OK
Error responses
  • 422customer_id not found, invalid primary_channel, missing whatsapp_connection_id for WhatsApp

GET /2023-11/admin/inbox/conversations/search

Full-text search across conversations (subject, customer info) and message content. Message body content is decrypted server-side.
  • Query parameters:
Request example
Success response — 200 OK

GET /2023-11/admin/inbox/conversations/unread-count

Return the total number of conversations with unread customer messages for the authenticated user. Request example
Success response — 200 OK

GET /2023-11/admin/inbox/conversations/{conversation}

Get a single conversation. Customer tags and related relations are eagerly loaded.
  • Path parameters:
Success response — 200 OK
Error responses
  • 404 — Conversation not found or does not belong to the company

PATCH /2023-11/admin/inbox/conversations/{conversation}

Update conversation metadata. Broadcasts InboxConversationUpdated to other connected agents.
  • Path parameters:
  • Request body:
Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/archive

Archive a conversation. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/unarchive

Unarchive a conversation. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/pin

Pin a conversation. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/unpin

Unpin a conversation. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/spam

Mark a conversation as spam. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/snooze

Snooze a conversation until a future date/time.
  • Request body:
Request example
Success response — 200 OK
Error responses
  • 422until is not a future date

POST /2023-11/admin/inbox/conversations/{conversation}/unsnooze

Remove the snooze from a conversation. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/assign

Assign a conversation to a human user and/or an automation agent. Sends an in-app notification to the newly assigned user and dispatches a conversation.assigned webhook to the newly assigned agent.
  • Request body:
Request example
Success response — 200 OK
Error responses
  • 422 — Referenced user or agent does not belong to the company

POST /2023-11/admin/inbox/conversations/{conversation}/labels

Attach one or more labels to a conversation (additive, does not detach existing labels).
  • Request body:
Request example
Success response — 200 OK

DELETE /2023-11/admin/inbox/conversations/{conversation}/labels/{label}

Detach a label from a conversation.
  • Path parameters:
Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/read

Mark a conversation as read by the authenticated agent. Updates the per-user read cursor and dispatches WhatsApp read receipts asynchronously (blue checkmarks for the customer). Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/typing

Broadcast an agent-is-typing indicator to the conversation channel (expires after 10 seconds). Also sends the typing event to the public webchat channel so the customer sees “typing…”. Request body: None — no body required for this action endpoint. Success response — 200 OK

Messages


GET /2023-11/admin/inbox/conversations/{conversation}/messages

List messages in a conversation (cursor-based, oldest first by default). Internal notes are included for agents.
  • Path parameters:
  • Query parameters:
Request example
Success response — 200 OK

POST /2023-11/admin/inbox/conversations/{conversation}/messages

Send a message from the authenticated agent in a conversation. Supports text, internal notes, media uploads, templates, location, and more. Uses a 5-second deduplication window to prevent duplicate sends on rapid clicks. This endpoint accepts multipart/form-data when uploading files, or application/json for text/template/structured messages. The content field may be sent as a JSON string in multipart requests.
  • Path parameters:
  • Request body:
Content shapes by type: Request example (text message)
Success response — 200 OK
Error responses
  • 404 — Conversation not found or not in this company
  • 422 — Validation failure (e.g. unapproved template, missing required fields)
  • 500 — Media upload failure

PATCH /2023-11/admin/inbox/messages/{message}

Edit the body of a text message. Only the message’s sender may edit it. Also propagates the edit to WhatsApp if the conversation uses WhatsApp.
  • Path parameters:
  • Request body:
Request example
Success response — 200 OK
Error responses
  • 403 — Caller is not the message sender
  • 422 — Message is not of type text

DELETE /2023-11/admin/inbox/messages/{message}

Soft-delete (revoke) a message. Caller must be the sender or the message must be an internal note. Also propagates revocation to WhatsApp if applicable.
  • Path parameters:
Success response — 200 OK
Error responses
  • 403 — Caller is not the sender and the message is not an internal note

POST /2023-11/admin/inbox/messages/{message}/reactions

Add or update an emoji reaction from the authenticated agent. Also dispatches the reaction to WhatsApp.
  • Path parameters:
  • Request body:
Request example
Success response — 200 OK

DELETE /2023-11/admin/inbox/messages/{message}/reactions

Remove the authenticated agent’s reaction from a message. Sends an empty emoji to WhatsApp to clear the reaction.
  • Path parameters:
Success response — 200 OK

POST /2023-11/admin/inbox/messages/{message}/retry

Retry sending a message that has status = failed. Resets delivery records and re-dispatches to the channel.
  • Path parameters:
Request body: None — no body required for this action endpoint. Success response — 200 OK
Error responses
  • 404 — Message not found, not in this company, or not in failed status

Labels

Labels are coloured tags applied to conversations for categorisation and filtering.

GET /2023-11/admin/inbox/labels

List all conversation labels for the company.
  • Query parameters:
Request example
Success response — 200 OK

POST /2023-11/admin/inbox/labels

Create a label.
  • Request body:
Request example
Success response — 200 OK

PATCH /2023-11/admin/inbox/labels/{label}

Update a label. Uses the same form request as create (all fields optional when updating).
  • Path parameters:
  • Request body: all fields optional
Success response — 200 OK

DELETE /2023-11/admin/inbox/labels/{label}

Delete a label.
  • Path parameters:
Success response — 200 OK

Reply Templates

Reply templates are pre-written responses (with optional attachments) that agents can quickly insert. Templates may be shared company-wide or private to their creator.

GET /2023-11/admin/inbox/reply-templates

List reply templates visible to the authenticated agent (shared templates + own private templates).
  • Query parameters:
Request example
Success response — 200 OK

POST /2023-11/admin/inbox/reply-templates

Create a reply template.
  • Request body:
Request example
Success response — 200 OK

PATCH /2023-11/admin/inbox/reply-templates/{template}

Update a reply template. Only the creator or shared templates may be updated.
  • Path parameters:
  • Request body: all fields optional (same fields as create)
Success response — 200 OK
Error responses
  • 404 — Template not found or access denied

DELETE /2023-11/admin/inbox/reply-templates/{template}

Delete a reply template. Only the creator or shared templates may be deleted.
  • Path parameters:
Success response — 200 OK

Sticker Packs

Sticker packs group small transparent images for use in conversations. Global packs (managed by Genuka) cannot be modified by company admins.

GET /2023-11/admin/inbox/sticker-packs

List sticker packs available to the company (includes global packs).
  • Query parameters:
Success response — 200 OK

POST /2023-11/admin/inbox/sticker-packs

Create a sticker pack. Stickers may be uploaded immediately via multipart form-data.
  • Request body: multipart/form-data
Success response — 200 OK

GET /2023-11/admin/inbox/sticker-packs/{pack}

Get a single sticker pack.
  • Path parameters:
Success response — 200 OK

PATCH /2023-11/admin/inbox/sticker-packs/{pack}

Update a sticker pack’s metadata. Global packs (is_global = true) cannot be modified.
  • Path parameters:
  • Request body: all optional
Success response — 200 OK
Error responses
  • 403 — Pack is a global pack

DELETE /2023-11/admin/inbox/sticker-packs/{pack}

Delete a sticker pack and all its stickers. Global packs cannot be deleted.
  • Path parameters:
Success response — 200 OK

POST /2023-11/admin/inbox/sticker-packs/{pack}/stickers

Add stickers to an existing pack. Global packs cannot be modified.
  • Path parameters:
  • Request body: multipart/form-data
Success response — 200 OK

DELETE /2023-11/admin/inbox/sticker-packs/{pack}/stickers/{media}

Remove a single sticker from a pack. Global packs cannot be modified.
  • Path parameters:
Success response — 200 OK
Error responses
  • 403 — Pack is global
  • 404 — Sticker not found in this pack

GIPHY

These endpoints proxy the GIPHY API and require a valid GIPHY API key to be configured server-side.

GET /2023-11/admin/inbox/giphy/search

Search GIFs via GIPHY.
  • Query parameters:
Request example
Success response — 200 OK
Error responses
  • 422 — Missing required q parameter
  • 503 — GIPHY API key not configured

GET /2023-11/admin/inbox/giphy/trending

Get trending GIFs. Results are cached for 5 minutes.
  • Query parameters:
Success response — 200 OK

Public Webchat

These endpoints are used by the customer-facing webchat widget. They do not require the standard Authorization: Bearer or X-Company headers — the conversation ID acts as the identifier.
Internal notes (type internal) are never returned to the customer.

GET /2023-11/inbox/chat/{conversation}/messages

List messages for a webchat conversation. Returns messages in descending order (newest first).
  • Path parameters:
  • Query parameters:
Success response — 200 OK Messages in the standard MessageResource shape, with an additional conversation key in the response envelope:

POST /2023-11/inbox/chat/{conversation}/messages

Send a message from the customer via webchat.
  • Path parameters:
  • Request body:
Request example
Success response — 200 OK
Error responses
  • 403 — Attempted to send an internal message type

POST /2023-11/inbox/chat/{conversation}/read

Acknowledge that the customer has read the conversation. No per-customer read tracking is performed; this is a no-op acknowledgement. Request body: None — no body required for this action endpoint. Success response — 200 OK

POST /2023-11/inbox/chat/{conversation}/request-unlock

Request a WhatsApp unlock link. Returns a wa.me deep link the customer can tap to send the unlock code.
  • Path parameters:
Request body: None — no body required for this action endpoint. Success response — 200 OK
Error responses
  • 404 — Conversation not found

POST /2023-11/inbox/chat/{conversation}/typing

Broadcast a customer-is-typing indicator to the conversation’s agent-side channel. Request body: None — no body required for this action endpoint. Success response — 200 OK

Inbox API (Agent / Integration Tokens)

These endpoints authenticate via a dedicated Inbox API token issued by the agent management flow. The token must be passed as Authorization: InboxToken <token>. The token carries scopes (send_text, send_template, send_media, upload_media) and allowed channel/connectable restrictions. Billable message types (e.g. WhatsApp template messages) debit one credit from the company wallet.

GET /2023-11/inbox/me

Return information about the authenticated Inbox API token. Useful for credential health checks (n8n, Zapier, etc.). Request example
Success response — 200 OK

POST /2023-11/inbox/messages

Send a message to a recipient. Automatically creates the conversation if one does not already exist for this recipient on the given channel.
  • Request body:
Request example
Success response — 201 Created
Error responses
  • 402 — Insufficient credits (insufficient_credits)
  • 403 — Token not allowed to send on the requested channel (channel_not_allowed) or insufficient scope (insufficient_scope)
  • 422 — Invalid recipient (invalid_recipient)
  • 502 — Channel dispatch failed (message_failed)

POST /2023-11/inbox/conversations/{conversation}/messages

Send a message into an existing conversation using an Inbox API token.
  • Path parameters:
  • Request body: same as POST /2023-11/inbox/messages minus channel and to (those are derived from the existing conversation).
Success response — 201 Created
Error responses
  • 402 — Insufficient credits
  • 403 — Channel not allowed for this token or insufficient scope
  • 404 — Conversation not found for the token’s company (conversation_not_found)
  • 502 — Channel dispatch failed