Everything an AI agent can do with the Kustomer API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints28
API versionv1
Last updated23 June 2026
Orientation

How the Kustomer API works.

The Kustomer API is how an app or AI agent works with a Kustomer organization: reading and creating customer records, opening and updating conversations, sending messages on a customer timeline, and adding internal notes. Access is granted through an API key sent as a Bearer token, and the roles attached to that key set which objects a call can read or write. A create or update emits a Kustomer Event that an outbound web hook can deliver to a registered endpoint.

28Endpoints
9Capability groups
13Read
15Write
15Permissions
Authentication
Every request carries an API key in the Authorization header as 'Bearer {API_KEY}'. The key is a signed JSON Web Token (JWT) created in Settings under Security, and it is shown only once when created. There is no per-user OAuth flow for the core REST API; calls authenticate as the key.
Permissions
A key is scoped by the roles attached to it. Legacy roles follow org.user.., like org.user.customer.read or org.user.conversation.write, and org.admin grants administrative operations such as managing web hooks. Newer permission-set roles follow org.permission.., like org.permission.customer.create. A key reaches only what its roles allow, and a request beyond them returns 403.
Versioning
Kustomer carries the version in the request path rather than a dated header. The customer-experience methods are served under /v1 and the knowledge-base methods under /v3. There is no dated version string to pin, so an integration targets the path version each method documents.
Data model
The API is resource-oriented JSON at https://{orgname}.api.kustomerapp.com. Each response is a data envelope where a record has id, attributes, and relationships. Customers, conversations, messages, and notes form a timeline, and custom object types (klasses) hold KObjects. A create or update emits a Kustomer Event that an outbound web hook can deliver.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Kustomer determines what it can reach. There is a route for making calls, a route for receiving events, and a hosted server that exposes Kustomer data to agents, and each is governed by the API key behind it and the roles that key carries.

Ways to connect

REST API

The REST API answers at https://{orgname}.api.kustomerapp.com, where {orgname} is the organization's name. It returns JSON in a data envelope with id, attributes, and relationships, and the customer-experience methods live under the /v1 path while the knowledge-base methods live under /v3. A call authenticates with an API key sent as a Bearer token.

Best forConnecting an app or AI agent to Kustomer.
Governed byThe API key and the roles it carries.
Docs ↗

Outbound webhooks

Kustomer POSTs a Kustomer Event object to a registered URL when a subscribed event fires, like kustomer.customer.create or kustomer.conversation.update. The payload carries a snapshot of the changed customer, conversation, message, user, or team, along with what changed. Web hooks are managed through the /v1/hooks/web methods.

Best forReceiving Kustomer events at an app or AI agent.
Governed byThe admin role on the key that registers the hook.
Docs ↗

MCP server

Kustomer publishes a first-party Model Context Protocol server that connects an MCP-compatible AI client, like Claude or ChatGPT, to an organization's Kustomer data. In this version it gives read-only access to conversations, customers, companies, and more. It is included on the Enterprise and Ultimate plans.

Best forConnecting an AI agent to Kustomer through MCP.
Governed byThe plan entitlement and the read-only scope of the server.
Docs ↗
Authentication

API key (Bearer)

Every request carries an API key in the Authorization header as 'Bearer {API_KEY}'. The key is a signed JSON Web Token (JWT) created in Settings under Security, where it is assigned one or more roles that limit what it can do. The key is shown once when created and authenticates first-party calls.

TokenBearer API key (JWT)
Best forServer-side and machine access to Kustomer.
Docs ↗

API roles

A key is scoped by the roles attached to it when it is created. Legacy roles follow org.user.., like org.user.customer.read or org.user.conversation.write, and org.admin grants administrative operations. Newer permission-set roles follow org.permission.., like org.permission.customer.create. A key reaches only what its roles allow.

TokenRoles attached to a Bearer API key
Best forLimiting a key to specific objects and actions.
Docs ↗
Capability map

What an AI agent can do in Kustomer.

The Kustomer API is split into areas an agent can act on, like customers, conversations, messages, notes, teams, and users. Each area has its own methods, and a write here can reply to a real customer, change a conversation, or delete a customer record.

Customers

6 endpoints

Create, read, update, and delete customer records, and look a customer up by id, email, phone, or external id.

A write here changes real customer data, and a delete removes a customer record.
View endpoints

Conversations

6 endpoints

Create, read, update, and delete conversations, and list a customer's conversations.

A write here changes real conversation data.
View endpoints

Messages

4 endpoints

Create messages on a conversation or for a customer, read messages, and update a message.

A write here can send a real message to a customer.
View endpoints

Notes

2 endpoints

Create internal notes and list the notes on a conversation.

A write here adds an internal note to a customer timeline.
View endpoints

Custom objects (KObjects)

2 endpoints

Create and read KObjects, the records that belong to custom object types (klasses).

A write here changes real custom-object data.
View endpoints

Users & teams

3 endpoints

List and read the users and teams in the organization.

A write here changes real user or team data.
View endpoints

Tags & shortcuts

2 endpoints

Create knowledge-base article tags and reusable shortcuts (saved replies).

A write here changes shared tag or shortcut data.
View endpoints

Search

1 endpoint

Run a customer search query across the organization's data.

A write here only queries data and returns matches.
View endpoints

Webhooks

2 endpoints

List the organization's outbound web hooks and create a new one.

A write here changes where Kustomer sends event data.
View endpoints
Endpoint reference

Every Kustomer API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Customers

Create, read, update, and delete customer records, and look a customer up by id, email, phone, or external id.6

Legacy role org.user.customer.write, or the permission-set role org.permission.customer.create.

Acts oncustomer
Permission (capability)org.user.customer.write
VersionAvailable since the API’s base version
Webhook eventkustomer.customer.create
Rate limitStandard limits apply

Read-only. Legacy role org.user.customer.read, or the permission-set role org.permission.customer.read.

Acts oncustomer
Permission (capability)org.user.customer.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncustomer
Permission (capability)org.user.customer.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. The external id is the customer's id in another system.

Acts oncustomer
Permission (capability)org.user.customer.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A single customer can be updated up to 600 times per 10 minutes by the per-object limit.

Acts oncustomer
Permission (capability)org.user.customer.write
VersionAvailable since the API’s base version
Webhook eventkustomer.customer.update
Rate limit600 updates per 10 minutes per customer

Irreversible. Removes the customer and its associated timeline.

Acts oncustomer
Permission (capability)org.user.customer.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Conversations

Create, read, update, and delete conversations, and list a customer's conversations.6

Legacy role org.user.conversation.write, or the permission-set role org.permission.conversation.create.

Acts onconversation
Permission (capability)org.user.conversation.write
VersionAvailable since the API’s base version
Webhook eventkustomer.conversation.create
Rate limitStandard limits apply

Held to 120 conversations per minute per customer by the per-object limit.

Acts onconversation
Permission (capability)org.user.conversation.write
VersionAvailable since the API’s base version
Webhook eventkustomer.conversation.create
Rate limit120 per minute per customer

Read-only.

Acts onconversation
Permission (capability)org.user.conversation.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onconversation
Permission (capability)org.user.conversation.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A single conversation can be updated up to 100 times per 10 minutes by the per-object limit.

Acts onconversation
Permission (capability)org.user.conversation.write
VersionAvailable since the API’s base version
Webhook eventkustomer.conversation.update
Rate limit100 updates per 10 minutes per conversation

Irreversible.

Acts onconversation
Permission (capability)org.user.conversation.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Messages

Create messages on a conversation or for a customer, read messages, and update a message.4

Held to 120 messages per minute per customer; a message with importedAt set is exempt from that limit.

Acts onmessage
Permission (capability)org.user.message.write
VersionAvailable since the API’s base version
Webhook eventkustomer.message.create
Rate limit120 per minute per customer

Held to 120 messages per minute per customer.

Acts onmessage
Permission (capability)org.user.message.write
VersionAvailable since the API’s base version
Webhook eventkustomer.message.create
Rate limit120 per minute per customer

Read-only.

Acts onmessage
Permission (capability)org.user.message.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A single message can be updated up to 100 times per 10 minutes by the per-object limit.

Acts onmessage
Permission (capability)org.user.message.write
VersionAvailable since the API’s base version
Webhook eventkustomer.message.update
Rate limit100 updates per 10 minutes per message

Notes

Create internal notes and list the notes on a conversation.2

Held to 120 notes per minute per customer by the per-object limit.

Acts onnote
Permission (capability)org.user.note.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit120 per minute per customer

Read-only.

Acts onnote
Permission (capability)org.user.note.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Custom objects (KObjects)

Create and read KObjects, the records that belong to custom object types (klasses).2

The klass name in the path is the custom object type. Held to 120 custom objects per minute per customer by the per-object limit.

Acts onkobject
Permission (capability)org.user.kobject.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit120 per minute per customer

Read-only.

Acts onkobject
Permission (capability)org.user.kobject.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Users & teams

List and read the users and teams in the organization.3

Read-only. Can filter by pending or deactivated status, user type, or email.

Acts onuser
Permission (capability)org.user.user.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onteam
Permission (capability)org.user.team.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onteam
Permission (capability)org.user.team.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tags & shortcuts

Create knowledge-base article tags and reusable shortcuts (saved replies).2

Knowledge-base tags are served under the v3 path, not v1.

Acts ontag
Permission (capability)org.user.tag.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A shortcut is a saved reply agents can insert into messages.

Acts onshortcut
Permission (capability)org.user.shortcut.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
Run a customer search query across the organization's data.1

A POST that only queries data. Search has its own limit of 100 requests per minute for machine users, and returns at most 100 pages.

Acts onsearch result
Permission (capability)org.user.customer.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit100 per minute (machine users)

Webhooks

List the organization's outbound web hooks and create a new one.2

Read-only. Managing web hooks needs an admin role.

Acts onwebhook
Permission (capability)org.admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Managing web hooks needs an admin role.

Acts onwebhook
Permission (capability)org.admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Kustomer can notify an app when something happens in an organization, like a customer being created or a conversation being updated. It sends a POST with a Kustomer Event object that holds a snapshot of the changed record, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
kustomer.customer.createFires when a customer record is created./v1/customers
kustomer.customer.updateFires when a customer record is updated./v1/customers/{id}
kustomer.conversation.createFires when a conversation is created./v1/conversations
/v1/customers/{id}/conversations
kustomer.conversation.updateFires when a conversation is updated, like a status change or reassignment./v1/conversations/{id}
kustomer.message.createFires when a message is created on a conversation or customer timeline./v1/messages
/v1/conversations/{id}/messages
kustomer.message.updateFires when a message is updated./v1/messages/{id}
kustomer.user.updateFires when a user is created or updated. Kustomer also emits kustomer.user.create on user creation.In-app only
kustomer.team.updateFires when a team is created or updated. Kustomer also emits kustomer.team.create on team creation.In-app only
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Kustomer limits how fast an app can call, through a per-organization request rate that depends on the plan and a separate set of per-object limits on how often a single record can change.

Request rate

Kustomer meters requests per organization across all of its API keys, within a rolling 60-second window, and the ceiling depends on the plan: 300 requests per minute on legacy Professional, 500 on legacy Business, 1,000 on Enterprise, and 2,000 on Ultimate. Customer search has its own limit of 100 requests per minute for machine users. Separate per-object limits cap how often one record can change: a conversation, company, or message can be updated 100 times in 10 minutes, a customer 600 times in 10 minutes, and a single customer can receive up to 120 new drafts, messages, conversations, notes, or custom objects per minute. Going over returns HTTP 429, and the response carries x-ratelimit-limit, x-ratelimit-remaining, and x-ratelimit-reset, plus x-ratelimit-object-limit, x-ratelimit-object-remaining, and x-ratelimit-object-reset for the per-object limits.

Pagination

List endpoints are paginated. A customer search returns results in pages with a hard cap of 100 pages per query, and list endpoints return a page of records with links to fetch the next page.

Request size

Responses are JSON in a data envelope, with each record carrying id, attributes, and relationships. A single customer can receive at most 120 new drafts, messages, conversations, notes, or custom objects per minute.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Bad RequestThe request was malformed or a parameter was invalid. The body carries an errors array describing what went wrong.Read the errors array, correct the request, and resend. It is not retryable as-is.
401UnauthorizedThe API key is missing, malformed, or invalid.Send a valid key as 'Authorization: Bearer {API_KEY}', and rotate the key if it is compromised.
403ForbiddenThe key is valid but its roles do not allow this operation.Attach the role the method needs to the key, like org.user.customer.write, or use a key that has it.
404Not FoundThe requested record does not exist, or is not visible to this key.Confirm the id and that the key's roles can see the record.
429Too Many RequestsA per-organization rate limit or a per-object limit was exceeded. The x-ratelimit and x-ratelimit-object headers report the current state.Back off until the window in x-ratelimit-reset, then retry. Smooth bursts of writes to one record.
500Internal Server ErrorAn error on Kustomer's side. It is rare.Retry with backoff, and contact Kustomer support if it persists.
Versioning & freshness

Version history.

Kustomer carries the version in the request path, with the customer-experience methods served under v1 and the knowledge-base methods under v3. There is no dated version string to pin.

Version history

What changed, and when

Latest versionv1
v1Current version
Path-versioned REST API (current)

Kustomer versions its API in the request path rather than through a dated version header. The customer-experience methods, covering customers, conversations, messages, notes, teams, users, search, and custom objects, are served under the /v1 path, and there is no dated version string to pin. The knowledge-base methods are served under a separate /v3 path.

What changed
  • Customer-experience methods served under /v1 (customers, conversations, messages, notes, teams, users, search, KObjects).
  • Knowledge-base methods served under /v3 (for example article tags at /v3/kb/tags).
  • No dated version string; the path carries the version.

The version is part of each method's path, so an integration targets it directly.

Kustomer API reference ↗
Questions

Kustomer API, answered.

How does authentication work?+
Every request includes an API key in the Authorization header, formatted as 'Bearer {API_KEY}' with a space after Bearer. The key is a JSON Web Token created in Settings under Security, and it is revealed only once when created. The key authenticates the call, so there is no separate per-user login for the core REST API.
What are API roles and how do they limit a key?+
When a key is created it is given one or more roles that limit what it can do. Legacy roles follow org.user.., such as org.user.customer.read for reading customers or org.user.conversation.write for changing conversations, while org.admin covers administrative operations like managing web hooks. Newer permission-set roles follow org.permission... A key that lacks the role a method needs gets a 403.
What are the rate limits?+
Kustomer meters requests per organization across all keys in a rolling 60-second window, and the ceiling depends on the plan: 300 per minute on legacy Professional, 500 on legacy Business, 1,000 on Enterprise, and 2,000 on Ultimate. Customer search is capped at 100 per minute for machine users. Separate per-object limits also apply, so one conversation or message can be updated 100 times per 10 minutes, one customer 600 times per 10 minutes, and a single customer can receive up to 120 new messages, notes, or conversations per minute. Going over returns 429.
How do I receive events instead of polling?+
Outbound web hooks deliver events without polling. A web hook is registered with a URL and a set of events, such as kustomer.customer.create or kustomer.conversation.update, and Kustomer POSTs a Kustomer Event object with a snapshot of the changed record when each fires. Web hooks cover the customer, conversation, message, user, and team objects, and are managed through the /v1/hooks/web methods, which need an admin role.
Does Kustomer have an MCP server for AI agents?+
Yes. Kustomer publishes a first-party Model Context Protocol server that connects an MCP-compatible AI client, like Claude or ChatGPT, to an organization's Kustomer data. In this version it provides read-only access to conversations, customers, companies, and more, and it is included on the Enterprise and Ultimate plans.
How does versioning work?+
Kustomer puts the version in the path rather than a dated header. The customer-experience methods are served under /v1 and the knowledge-base methods under /v3, so an integration targets the version each method's path documents. There is no dated version string to pin or upgrade.
What is a KObject?+
A KObject is a record that belongs to a custom object type, called a klass. Custom object types let an organization model data beyond the standard customer, conversation, and message objects, and KObjects are created and read through the /v1/klasses/{name} methods. Creating KObjects for one customer counts toward that customer's 120-per-minute object limit.
Related

More support API guides for agents

What is Bollard AI?

Control what every AI agent can do in Kustomer.

Bollard AI sits between a team's AI agents and Kustomer. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Kustomer key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Kustomer
Support Agent
Read conversations ResourceOffReadFull use
Reply to customers ActionOffReadFull use
Customers ResourceOffReadFull use
Add internal notes ActionOffReadFull use
Delete customers ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Kustomer