Skip to main content
TroopyDocs
Open Troopy
Troopy

API reference / Routines and triggers

Change a trigger

Changes a trigger, pauses or resumes it, or gives it to another teammate (agent); send any of them. A paused trigger keeps its events and starts nothing. A new sender needs its own secret. What starts a trigger never changes: make a new trigger for another event. Needs an owner or admin.

patch/api/v1/triggers/{id}

Authorization

HeaderAuthorization: Bearer <API key>
Or the headerX-API-Key: <API key>
API keyMake one in Troopy under Settings > API keys. It acts as you, in its workspace.

Other ways to call it

CLItroopy triggers update
MCP tooltroopy_update_trigger
Rate limit30 calls in 60 seconds, for each key
RetriesSend an Idempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.

Path parameters

id*string

A 24-character id

Body

application/json
agentstring

The teammate that it starts from now on

At most 40 characters

namestring

At least 1 characters · At most 80 characters

taskstring

What the teammate does with each event, as you'd tell the teammate

At least 1 characters · At most 2000 characters

senderenum<string>

Who sends the requests: url (no check, the URL is the secret), github, stripe, shopify, standard (Standard Webhooks) or hmac

urlgithubstripeshopifystandardhmac

secretstring

The signing secret that the sender made (stripe, shopify, standard). It goes in and never comes out

At least 1 characters · At most 500 characters

fieldsarray<string>

Only these paths of an event reach the teammate. Empty for the whole event

At most 20 items

maxPerDayinteger

The most tasks that it starts in a UTC day

At least 1 · At most 200

eventsPerTaskinteger

The most events that one task holds. Give 1 when a run can do the work of one event only, as the research of a lead

At least 1 · At most 10

pausedboolean

Response

200 · application/json
data*object
17 properties
id*string

A 24-character id

agent*string

The handle of the teammate that it starts

name*string
task*string

What the teammate does with each event

source*enum<string>

webhook: a request to its URL starts it. event: something in a product of Troopy starts it

webhookevent

event*enum<string> | null

What starts it in Troopy, like customer.cancel_requested. Null for a webhook

customer.signed_upcustomer.trial_startedcustomer.subscribedcustomer.payment_failedcustomer.cancel_requestedcustomer.churnedcustomer.came_backcustomer.risk_raisedfeedback.addeddispute.openeddispute.closedoutreach.replymailbox.mailticket.releasedanalytics.spikeanalytics.drop

option*string | null

What narrows its event: for mailbox.mail, the id of one mailbox. For customer.signed_up, work_email. Null for every one

sender*enum<string>

Who sends the requests of a webhook. It says how Troopy checks each one

urlgithubstripeshopifystandardhmac

needsSecret*boolean

Its sender makes the signing secret, and Troopy does not have it yet. Troopy refuses each request until then

fields*array<string>

The paths of an event that reach the teammate, like issue.title. Empty: the whole event

maxPerDay*integer

The most tasks that it starts in a UTC day. Later events of the day are held

eventsPerTask*integer

The most events that one task holds

paused*boolean
pausedWhy*string | null

Why Troopy paused it. Null when a person paused it, or it is on

lastEventAt*string | null
today*object

Its events, and the tasks that it started, in this UTC day

2 properties
events*integer
tasks*integer
createdAt*string

ISO 8601 date and time

Errors

400 invalid_inputFix the field named in detail. Each operation's schema is in /api/v1/openapi.json.
401 unauthorizedSend an API key as `Authorization: Bearer tr_live_...`. Create one in Troopy under Settings.
403 forbiddenThe key lacks a scope this operation needs, or its owner lacks the role. detail says which; create a key with the scope, or ask an organization owner or admin.
404 not_foundCheck the path and any id in it. Every operation is listed in /api/v1/openapi.json.
409 conflictThis Idempotency-Key was used for a different request, or that request is still running. Use a new key for a new request.
429 rate_limitedWait the number of seconds in Retry-After, then retry.