agentboxd-com Threads API
Conversations, per inbox or across all of them.
Conversations, per inbox or across all of them.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/agentboxd-com:agentboxd-com-threads-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Agentboxd Com Threads API
version: '1'
contact:
name: Agentboxd
url: https://agentboxd.com
email: hello@agentboxd.com
description: 'Operations tagged Threads across 2 of this provider''s published API definitions: agentboxd-com-openapi.json, agentboxd-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.agentboxd.com
security:
- apiKey: []
tags:
- name: Threads
description: Conversations, per inbox or across all of them.
paths:
/v1/inboxes/{id}/threads:
get:
operationId: getInboxesByIdThreads
tags:
- Threads
summary: List an inbox’s threads
description: 'One inbox’s threads, newest activity first, with the same filters.
Permission: `threads:read`.'
x-permission: threads:read
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
- name: cursor
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
default: 25
type: integer
minimum: 1
maximum: 100
- name: inbox_id
in: query
required: false
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
- name: labels
in: query
required: false
schema:
type: string
maxLength: 1000
- name: before
in: query
required: false
schema:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- name: after
in: query
required: false
schema:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- name: participant
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 320
- name: subject
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 200
- name: ascending
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_blocked
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_unscreened
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_held
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
4XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
5XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.agentboxd.com
/v1/threads:
get:
operationId: getThreads
tags:
- Threads
summary: List threads across inboxes
description: 'Threads across every inbox the key can see (a supervisor’s view), newest activity first. Filters, all optional and combined: `inbox_id`, `labels` (comma-separated, all required), `before` / `after` (ISO time of the latest message), `participant` and `subject` (case-insensitive substrings), `ascending=true`, `include_blocked=true`, plus `limit` and `cursor`.
Permission: `threads:read`.'
x-permission: threads:read
parameters:
- name: cursor
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
default: 25
type: integer
minimum: 1
maximum: 100
- name: inbox_id
in: query
required: false
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
- name: labels
in: query
required: false
schema:
type: string
maxLength: 1000
- name: before
in: query
required: false
schema:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- name: after
in: query
required: false
schema:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- name: participant
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 320
- name: subject
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 200
- name: ascending
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_blocked
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_unscreened
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_held
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
4XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
5XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.agentboxd.com
/v1/threads/{id}:
get:
operationId: getThreadsById
tags:
- Threads
summary: Get a thread with its messages
description: 'The thread plus its messages in order. Threads carry `labels` and `metadata`. At most 200 messages: the newest ones, oldest first (`?limit=` for fewer). When there are older ones, `next_cursor` is set: pass it as `?cursor=` to get the page before.
Permission: `threads:read`.'
x-permission: threads:read
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
- name: include_blocked
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: cursor
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 200
- name: include_unscreened
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
- name: include_held
in: query
required: false
schema:
type: string
enum:
- 'true'
- 'false'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
4XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
5XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
patch:
operationId: patchThreadsById
tags:
- Threads
summary: Update a thread
description: '`{ metadata?, add_labels?, remove_labels? }`. Metadata is merged; `null` deletes a key. At most 100 labels, as for messages (`400 too_many_labels`).
Permission: `messages:write`.'
x-permission: messages:write
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
metadata:
type: object
propertyNames:
type: string
pattern: ^[a-zA-Z0-9_.-]{1,64}$
additionalProperties:
anyOf:
- type: string
maxLength: 1000
- type: number
- type: boolean
- type: 'null'
add_labels:
maxItems: 50
type: array
items:
type: string
minLength: 1
maxLength: 64
pattern: ^[^\s,]+$
remove_labels:
maxItems: 50
type: array
items:
type: string
minLength: 1
maxLength: 64
pattern: ^[^\s,]+$
additionalProperties: false
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
4XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
5XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
operationId: deleteThreadsById
tags:
- Threads
summary: Delete a thread
description: 'Deletes the thread with all its messages, attachments and extracted text, and the events that carry copies of them; their pending webhook deliveries are cancelled (`messages:write`). `{ deleted: true, messages, attachments }`. `409 message_sending` while a message in it is still going out; `503 storage_unavailable` if stored mail could not be removed (nothing is deleted then; try again).
Permission: `messages:write`.'
x-permission: messages:write
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
4XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
5XX:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.agentboxd.com
components:
schemas:
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Stable, machine-readable error code.
message:
type: string
description: What happened and how to fix it, in plain words.
details:
description: 'The specifics: which recipient, which limit, until when.'
docs_url:
type: string
format: uri
description: 'For a refused send: its entry on "Why was my send refused?" (https://agentboxd.com/docs/send-refusals).'
securitySchemes:
apiKey:
type: http
scheme: bearer
description: An API key (`mr_…`), scoped to the workspace or one inbox, with a set of permissions.
externalDocs:
description: API reference
url: https://agentboxd.com/docs/api
x-refined-from:
- agentboxd-com-openapi.json
- agentboxd-com-openapi.json