Skip to content

The event log, newest first

GET
/v1/system-events
curl --request GET \
--url 'https://api.threadkite.app/v1/system-events?limit=25' \
--header 'Authorization: Bearer <token>'

Everything Threadkite emitted for your organisation in the last 90 days (3 on Free), with what each subscriber did with it: webhooks, contact-events (automations and sales) and push. Filter by type (thread.assigned, or a namespace like thread.*), subject, contact, chain (correlationId) or time. For owners and admins, or keys with webhooks:manage. Needs a plan with the API.

limit
integer
default: 25 >= 1 <= 100
cursor
string
<= 200 characters
type
string
<= 100 characters
subjectType
string
<= 50 characters
subjectId
string
<= 200 characters
contactId
string format: uuid
correlationId
string format: uuid
from
string format: date-time
to
string format: date-time
Media typeapplication/json
object
data
required
Array<object>
object
id
required
string format: uuid
type
required
string
occurredAt
required
string format: date-time
recordedAt
required
string format: date-time
subject
required
object
type
required
string
id
required
string
contactId
required
string format: uuid
nullable
actor
required
object
type
required

user, api_key, connection, flow, assistant or system

string
id
required
string
nullable
origin
required
string
causationId
required

The event whose handling caused it

string format: uuid
nullable
correlationId
required

The first event in its chain

string format: uuid
depth
required
number
isTest
required
boolean
data
required

What it carried (as webhooks get it); null once cleared

object
key
additional properties
any
outcomes
required
Array<object>
object
subscriber
required

webhooks, contact-events (automations, sales) or push

string
status
required
string
Allowed values: pending handled skipped retrying failed
attempts
required
number
error
required
string
nullable
finishedAt
required
string format: date-time
nullable
nextCursor
required

Pass as cursor to get the next page; null on the last page

string
nullable

Example

{
"data": [
{
"type": "thread.assigned",
"outcomes": [
{
"subscriber": "webhooks",
"status": "pending"
}
]
}
]
}

Missing or invalid API key

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

The organisation is on the Free plan (code upgrade_required)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
feature
required

The feature that needs Pro

string
nullable
Allowed values: extraSeats connections aiAssistant aiReplies rules fullReports api inboxes bulkMessages videoMessages
upgradePath
required

Where to upgrade or pay, in the web app

string

Example

{
"statusCode": 402,
"code": "upgrade_required",
"message": "Connections are part of Pro. Upgrade to connect texts, calls and more.",
"feature": "extraSeats",
"upgradePath": "/settings/billing"
}

The key does not have the scope (or the person the permission)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Rate limit reached

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
retryAfter
required

Seconds until another request will be accepted

number

Example

{
"statusCode": 429,
"code": "rate_limited",
"message": "Too many requests. Each key can make 120 requests a minute; try again in 12 seconds.",
"retryAfter": 12
}