> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rippit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ada

> Technical reference for the Rippit Ada data integration: Data Export API key authorization, API endpoints, what a conversation becomes in Rippit, and sync behavior.

A read-only API key integration that syncs Ada AI agent conversations and messages into Rippit on a schedule, using Ada's Data Export API. Ada is in beta. For what applies to every integration, see [how data integrations work](https://docs.rippit.com/plg/data-integrations.md). For the security model, see [Data integration security](https://docs.rippit.com/security/data-integrations.md).

This page covers importing Ada conversations as data. To let the Rippit agent read Ada's metrics and configuration directly, see the [Ada connector](https://docs.rippit.com/agentic-chat/connectors/ada.md).

## Connection summary

| | |
| - | - |
| Authorization | An Ada Data Export API key, sent as `Authorization: Bearer <key>` |
| Scope parameter | None |
| Writes to Ada | None. Every call is a `GET` |
| Credentials shared with Rippit | The API key. Rippit stores it and uses it for every sync |
| Credential check | The handle and key are tested against Ada before the connection is saved. Rejected credentials create no connection, and Rippit does not keep them |
| Connection identity | Your Ada handle, the part of your dashboard URL before `.ada.support`. One connection per handle |
| Required Rippit role | Workspace admin |
| API base | `https://<handle>.ada.support/api/v2` |
| API version | `v2`, in the path |
| Sync method | Scheduled polling |
| Images | Pictures sent in a conversation are downloaded and stored by Rippit |
| Historical backfill | 30 days by default, up to 90 days, counted back from the start of today (UTC) |
| Field selection limit | 150 fields at setup, plus Rippit's standard columns. You can add more later with **Add new columns** on the table |

## Before you connect

Rippit asks for two values. The Ada handle is the part of your Ada dashboard URL before `.ada.support`: `acme` in `acme.ada.support`. You can paste the whole URL and Rippit extracts the handle. Rippit always connects to `https://<handle>.ada.support`, and the handle accepts only letters, numbers, and hyphens.

The API key must be a **Data Export** API key, created in your Ada dashboard. If you don't see the Data Export API in your dashboard, it may not be included in your Ada contract. Contact your Ada team or email `help@ada.support` to confirm.

## Data handling

| Question | Answer |
| - | - |
| Is conversation content ingested, or only metadata? | Full content: every message, plus the conversation's channel, CSAT score and comment, topics, intents, and, for generative AI agents, the Playbooks, knowledge articles, and coaching used. Rippit stores each conversation and message exactly as Ada returns it |
| Are images stored? | Yes. Pictures sent in a conversation are downloaded and stored rather than linked |
| Is CSAT ingested? | Yes. The conversation's CSAT score and comment become fields, and each CSAT rating given in the chat is stored as a survey answer |
| Can Rippit modify Ada? | No. No write code path exists |

### What a conversation becomes in Rippit

Each Ada conversation becomes one conversation in Rippit.

| Rippit record | Content |
| - | - |
| Subject | The first of these that is set: the last question the customer asked, the conversation's inquiry summary, its platform, or its channel |
| Agent | One agent per connection, named `Ada`, who authors every message from your Ada AI agent |
| Customer | Each other message sender, recorded by their Ada sender ID |
| Start and end | The conversation's creation time, and its last update time |
| Fields | Subject, platform (the conversation's platform or channel), CSAT score, CSAT comment, Ada topics, Ada intents, Ada Playbooks, Ada Playbook outcomes, Ada knowledge articles, Ada coaching types, source, and the commenter fields |
| Default selected fields | Subject, platform, CSAT score, Ada topics, Ada intents, commenters, first commenter, and last commenter |
| Message comments | Every message, in order. Text messages keep their text. Links and web windows become clickable links. Quick replies, list selections, and suggested buttons are stored with the options shown. A CSAT rating appears as `CSAT: <score>`, and thumbs up or down feedback as `Feedback: 👍` or `Feedback: 👎`. Pictures are attached as files. Ada system messages are kept but have no author |

**Ada intents** list each intent with its Ada status in parentheses, such as `Billing question (pending)`, so intents Ada has not yet accepted are not shown as settled.

**Ada Playbooks, Playbook outcomes, knowledge articles, and coaching types** are filled only for conversations handled by a generative Ada AI agent. On other conversations they are empty.

When you choose fields during setup, the list shows the fields above plus other attributes from your Ada conversations: top-level conversation attributes, and metavariables, shown with `metavariables_` in front of the name. Rippit finds them by checking the first 50 conversations updated in the last 7 days. An attribute shows if at least one of those conversations has a single text, number, or true/false value for it. Lists and nested objects never show, and neither do metavariables whose names end in `jwt`, `token`, `secret`, or `password`.

The sample decides what shows in the list:

* An attribute used only on conversations outside the 50 checked does not show.
* If no conversation was updated in the last 7 days, the list shows only the fields above.

After setup, the list of fields you can add to the table is built from one page of conversations updated in the last 30 days.

## API endpoints

| Object | Endpoint | Method |
| - | - | - |
| Credential check when you connect | `/export/conversations?page_size=100&updated_since=<30 days ago>&updated_to=<now>` | GET |
| Conversations | `/export/conversations?page_size=10000&updated_since=<window start>&updated_to=<window end>` | GET |
| Messages | `/export/messages?page_size=10000&created_since=<window start>&created_to=<window end>` | GET |
| Messages for one conversation, to re-sync it | `/export/messages?page_size=10000&created_since=<time>&conversation_id=<conversation ID>` | GET |
| Field discovery, the field picker | `/export/conversations?page_size=50&updated_since=<7 days ago>&updated_to=<now>`, one page | GET |
| Field discovery, the field list Rippit stores | `/export/conversations?updated_since=<30 days ago>&updated_to=<now>`, one page | GET |
| Pictures | The picture URL on each message, as returned by Ada | GET |

All paths are under `https://<handle>.ada.support/api/v2`. Timestamps are ISO 8601 in UTC. Ada pages with `meta.next_page_uri`, and Rippit follows it until it is absent.

Conversations and messages are listed separately. Conversations are matched to their messages by conversation ID, so a conversation's messages can arrive in a different sync from the conversation itself.

## Sync behavior

| | |
| - | - |
| Conversation discovery | Windowed on the conversation's last update (`updated_since`), cursor pagination |
| Message discovery | Windowed on the message's creation time (`created_since`), cursor pagination |
| Window width | 24 hours for conversations, 2 hours for messages |
| Trailing buffer | Each window closes 2 hours behind the current time |
| Re-sweep each sync | Each sync lists the last 24 hours of conversations and the last 2 hours of messages again |
| Daily re-sweep | Once a day the last 24 hours of conversations and messages are listed again |
| Update handling | An updated conversation is listed again and its fields are refreshed. Messages are listed once, by creation time |
| Deletions | A conversation deleted in Ada stays in Rippit |
| Resumption | High water mark on each window's end. Changed conversations and new messages only, no full rescan |

## Rate limiting

Ada's Data Export API allows 3 requests per second and 15,000 requests per day for each Ada instance. The daily quota is shared with any other exports you run against the same instance.

Rippit pages with the largest page size Ada allows, and re-syncs a single conversation with at most 3 requests at a time. When Ada reports the daily quota is used up, Rippit saves its progress, stops for that sync, and picks up where it left off on a later scheduled sync. A large backfill or a busy instance can take more than a day to catch up, which is why the default backfill is 30 days rather than 90.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.