Cookies, only with your consent

We use cookies to understand how the site is used and to improve our advertising. Essential cookies are always on. We turn on the rest only if you agree.Essential cookies are always on. Measurement and marketing only if you agree. Privacy policy

What may we measure?

You can change your choice at any time from "Cookie settings" at the bottom of the page.

Choose language: English
Join waitlist

Troupia API

Connect any system to your automations, runs and conversations, with one key.

First: an API key

An owner or admin creates it in Settings → API keys and chooses what it may do. Every request sends it like this:

Authorization: Bearer trp_live_…

Automations

GET/v1/automations

All automations

Your workspace's automations, a page at a time.

automations:read
GET/v1/automations/{automationId}

One automation

Its steps, every way it starts and its version. Never a secret.

automations:read
ETag: "7.1a2b3c4d"

Keep the ETag. A change sends it back.

PATCH/v1/automations/{automationId}

Rename

automations:write
If-Match: "7.1a2b3c4d"

If someone changed the automation since you read it: 412, and nothing is overwritten. Read it again and decide.

POST/v1/automations/{automationId}/enable

Turn on

The plan's schedule floor applies, as in the app.

automations:write
If-Match: "7.1a2b3c4d"

Asking for the state it is already in returns 200 and changes nothing. Scheduled runs are kept.

POST/v1/automations/{automationId}/disable

Turn off

automations:write
If-Match: "7.1a2b3c4d"

Asking for the state it is already in returns 200 and changes nothing. Scheduled runs are kept.

POST/v1/automations/resolve-link

From a link

A Troupia link → the automation or run it names.

automations:read

Runs

GET/v1/automations/{automationId}/runs

An automation's runs

A page at a time.

runs:read
GET/v1/automations/{automationId}/analysis

Runs analysed

How many succeeded, how many failed and why, over a window.

runs:read
GET/v1/automations/runs/{runId}

One run

With what went in and out of each step.

runs:read_payloads
GET/v1/runs/{runId}

A chat run

data:read

Conversations

GET/v1/conversations

Conversations

data:read
POST/v1/conversations

Start a conversation

chat:write
POST/v1/conversations/{conversationId}/messages

Send a message

chat:write
GET/v1/conversations/{conversationId}/export

Export a conversation

data:read

Webhooks

GET/v1/automations/{automationId}/webhook

Webhook addresses and their secrets

webhooks:manage

Only an owner's or admin's key: checked on every call, and every call is logged.

GET/v1/webhook-endpoints/{endpointId}/deliveries

Failed deliveries

To one outgoing endpoint: newest first, a page at a time.

webhooks:manage

Plugins

GET/v1/plugins/{slug}/openapi.json

A plugin's API

Each plugin publishes its own OpenAPI document.

data:read
GET/v1/plugins/{slug}/{entity}

A plugin's records

data:read
POST/v1/plugins/{slug}/{entity}

Create a record

data:write
GET/v1/plugins/{slug}/{entity}/{id}

One record

data:read
PATCH/v1/plugins/{slug}/{entity}/{id}

Update a record

data:write
GET/v1/plugins/crm/{path}

Read from the CRM

crm:read
POST/v1/plugins/crm/{path}

Write to the CRM

crm:write

About the API

GET/v1/openapi.json

This document

As OpenAPI 3.1, no key needed.

No key

When something does not go through

401No key, or it is not valid.
403The key does not have this permission.
404Not found in this workspace.
412The automation changed since you read it.
428If-Match is missing.
429Too many requests. Wait and try again.
The full document: openapi.json

Accessibility

Signups aren't open yet

Be the first, right in the front row

We're in final rehearsals. Leave your details, and we'll send you a personal invitation the moment the curtain rises.Leave your email, and we'll send a personal invitation when the curtain rises.

No spam, ever. Privacy policy