canonical: https://jentic.com/apis/chatlayer.ai/chatlayer

# Chatlayer API

Jentic publishes the only available OpenAPI specification for Chatlayer API, keeping it validated and agent-ready. Chatlayer is a conversational AI platform from Sinch that powers chatbots and virtual assistants for enterprise contact centres. This API exposes structured access to two domains used at runtime by bots: Tables, which store and serve reference data used inside conversation flows, and Customers, which lists customer profiles bound to a bot. It is designed for teams that need to read or update bot-side data without going through the Chatlayer UI.

## For AI agents

Read and update Chatlayer bot reference tables and list customer profiles attached to a bot via 5 endpoints.

## Scope

Does not handle bot design, NLU training, or message channels - use for reading and updating Chatlayer bot tables and customer lists only.

## Capabilities

- List the structured-data tables defined for a bot and inspect a single table's schema
- Query rows in a Chatlayer table to power dynamic chatbot responses
- Perform table actions to insert, update, or remove rows used by conversation flows
- List customer profiles bound to a bot, with filtering by profile attributes
- Pull reference data into bot conversations without touching the Chatlayer console

## Use cases

### Sync CRM Data Into Chatbot Tables

Keep a Chatlayer bot's reference tables in sync with a CRM or product catalogue so conversations reflect up-to-date prices, opening hours, or shipping zones. The integration calls GET `/api/v1/teams/{teamId}/bots/{botId}/tables/{tableId}/data` to read current state and POST .../action to write changes. Sync runs nightly or on CRM webhook, with no need for human staff to log into the Chatlayer console.

Example prompt: List tables for bot id 'support-bot', find the one named 'opening-hours', and update the row for 'Friday' to '09:00-18:00'.

### Customer Profile Lookups in Contact Centre

Pull the list of customers known to a Chatlayer bot to power back-office reporting or to check whether an inbound caller is already a registered profile. GET `/api/v1/teams/{teamId}/customers` supports filtering, so workflows can target a single segment without scanning the entire customer base. This avoids exporting CSVs from the UI and keeps reports current.

Example prompt: List Chatlayer customers for team id 'eu-team' filtered to those with the attribute language='nl' and return the count.

### Auditing Bot Reference Data

Periodically read every table on a bot and snapshot its content for compliance and change-tracking. The list-tables and get-table-data endpoints together produce a structured dump that can be diffed against the previous run to detect unauthorised edits in the Chatlayer UI. Useful for regulated industries where bot scripts must be auditable.

Example prompt: For every table on bot id 'finance-bot', fetch all rows and write the result to an audit log keyed by today's date.

### AI Agent-Driven Chatbot Operations

Let an AI agent operating through Jentic update Chatlayer tables in response to upstream events instead of writing custom integration code. The agent searches for 'update chatbot table', loads the perform-table-action schema, and executes with the right team, bot, and table identifiers. The basic-auth credentials never enter the agent's context - Jentic injects them at execute time.

Example prompt: Search Jentic for 'perform a Chatlayer table action', load the schema, and add a row to the 'promo-codes' table when a marketing system fires a new-promo event.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/v1/teams/{teamId}/bots/{botId}/tables` | List tables for a bot |
| GET | `/api/v1/teams/{teamId}/bots/{botId}/tables/{tableId}` | Get a single table |
| GET | `/api/v1/teams/{teamId}/bots/{botId}/tables/{tableId}/data` | Read rows from a table |
| POST | `/api/v1/teams/{teamId}/bots/{botId}/tables/{tableId}/action` | Insert, update, or remove rows in a table |
| GET | `/api/v1/teams/{teamId}/customers` | List customer profiles bound to a bot |

## Key resources

- **Tables** — List, inspect, query, and modify the structured-data tables that back a Chatlayer bot's conversation flows
- **Customers** — List customer profiles bound to a bot with filtering by profile attribute

## Why Jentic

- **Setup:** Wiring Chatlayer by hand means setting up basic auth, picking the right regional gateway host from its Europe, US, South America, or Asia options, and threading teamId and botId through every call. Through Jentic you install once, import the Chatlayer API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Chatlayer puts the team and bot ids in the URL path (`/api/v1/teams/{teamId}/bots/{botId}/tables/...`), so a rule can pin your agent to one bot: it reads and updates that bot's tables and nothing else. You choose the operations it may call, so a table action that writes data is not included unless you add it.
- **Credential handling:** Your Chatlayer basic-auth credentials are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list chatbot tables' or 'update chatbot data', and Jentic returns the matching Chatlayer operation with its input schema so the agent supplies the right teamId, botId, and tableId without browsing the reference docs.

## Related APIs

- **Twilio API** — Twilio routes the SMS, WhatsApp, and voice channels that surface Chatlayer bots to end users.
- **Sendbird Chat API** — Sendbird is a chat platform with its own AI features and broader SDK coverage.
- **OpenAI API** — OpenAI provides the LLM reasoning that can drive intent classification and reply drafting inside Chatlayer-backed flows.

## FAQ

### Why is there no official OpenAPI spec for Chatlayer API?

Chatlayer does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Chatlayer API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Chatlayer API use?

The API uses HTTP basic authentication. The username and password are derived from an access token generated in the Chatlayer console (username:password format). Through Jentic, the token is stored encrypted and injected at request time, so the agent does not handle the credential directly.

### Can I update a row in a Chatlayer table with the API?

Yes. POST `/api/v1/teams/{teamId}/bots/{botId}/tables/{tableId}/action` accepts a payload describing the action to perform (such as inserting or updating rows) on the named table. Read endpoints under the same path return the current rows so you can diff before writing.

### What are the rate limits for the Chatlayer API?

The OpenAPI spec does not declare numeric rate limits. Chatlayer applies per-tenant throttling that varies by contract, so agents should handle 429 responses with exponential backoff.

### How do I list customers on a bot through Jentic?

Search Jentic for 'list Chatlayer customers', load the schema for GET `/api/v1/teams/{teamId}/customers`, and execute with the relevant teamId. Filter parameters in the request narrow results to a specific attribute, so a single call can replace a UI export.

### Which regions does the Chatlayer API serve?

The spec lists four regional gateways: europe-west1, us-east4, sa-east1, and asia-south1. Pick the region that matches the bot's data residency to keep latency and compliance simple.

### Can I limit what my agent is allowed to do with the Chatlayer API?

Yes. Because you run Jentic One yourself, your own rules decide which Chatlayer operations the agent may call and which credentials it may use. Chatlayer carries the team and bot ids in the URL path, so you can pin the agent to a single bot and let it only read table data and customer lists while withholding the POST table action that inserts, updates, or removes rows. The operator grants each operation deliberately, so a write to a bot's reference tables happens only if you have added it.
