Reference · 7 operations
Actions: catalog and runs
Every capability as one operation actions.<family>.<verb>: one target
model, dry run, lifecycle and audit (the catalog is GET /action-types).
Last updated from API version 2026-10-06 at (live spec, refreshed hourly). openapi.json
Action types
The action catalog: every actions.* operation.
/api/v1/action-types- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
Operation id, summary, safety class, input JSON schema, accepted target
kinds, sync support, price, approval floor and the rate-limit bucket
it spends. Generated from this document, so the CLI, MCP and docs
read one source. Filter with class. Not paginated (one entry per
operation).
Parameters
- classquerystring
Safety class: decides scope, approval, caps and enforcement.
readwritespendexternal_writesend
Responses
200Every action operation, sorted by id.Show schema
ActionTypeListResponse
- 0
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/action-types" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"One action operation of the catalog.
/api/v1/action-types/{operationId}- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
Parameters
- operationIdpathstringrequired
An action operation id, e.g.
actions.find.provider_id.
Responses
200The operation.Show schema
ActionTypeResponse
- 0
One action operation, from this document's
x-owlbound-action. - 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/action-types/$OPERATION_ID" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Action runs
List the workspace's actions, newest first.
/api/v1/actions- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
Every action run in the workspace, by any key, session or agent.
Filters: kind (an operation id), status, createdAfter
(milliseconds since the epoch). tableId is reserved. Cursor-paginated.
Parameters
- limitqueryinteger
Page size.
default 50min 1max 200 - cursorquerystring
Opaque cursor from
meta.page.nextCursor. Reusing it with other filters is400 CURSOR_MISMATCH. - kindquerystring
- statusquerystringpending_approvalqueuedrunningsucceededfailedrejectedcanceledexpiredpartial
- tableIdquerystring
Reserved: any value is
400 UNSUPPORTED_FILTERuntil table targets ship. - createdAfterqueryinteger
Responses
200One page of actions.Show schema
ActionListResponse
- 0
- 0
Metadata on a paginated success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/actions" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Get one action, optionally waiting for it to finish.
/api/v1/actions/{id}- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
waitSeconds (0 to 30) holds the request until the action reaches a
terminal status or the time is up, whichever comes first; poll again
for longer waits. Without it the current state returns at once.
Parameters
- idpathstringrequired
The action id.
- waitSecondsqueryintegermin 0max 30
Responses
200The action.Show schema
ActionResponse
- dataobjectrequired0
+ Show child fields− Hide child fields
- 0
One action run. Read it again with
GET /api/v1/actions/{id}.
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/actions/$ID" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Cancel an action's targets that have not started.
/api/v1/actions/{id}/cancel- Scope
- read
- Credits
- Free
- Idempotency-Key
- optional
Queued, scheduled and pending-approval targets become canceled; a
running target finishes. Needs the scope of the action's class (read
for a read action, enrich for a spend action). Idempotent: cancelling
a finished action returns it unchanged. On an async run the open
batches close (their credit holds are released, or settled for what
already committed) and the action ends canceled shortly after.
Parameters
- idpathstringrequired
The action id.
- Idempotency-Keyheaderstring
1 to 255 printable ASCII characters, scoped to the API key (a rotated key shares its predecessor's keys) and kept 24 h. Accepted on every POST, PATCH and DELETE (ignored on GET); required from v1 keys where the operation says
x-owlbound-idempotent: required(missing:400 VALIDATION_ERROR,param: Idempotency-Key). Same key and body after completion: the stored response is replayed withIdempotent-Replayed: true. Results over 64 KB are not stored; their replay is409 IDEMPOTENCY_RESULT_UNAVAILABLEwithdetails.originalRequestId(check state with a GET). Same key while the first request runs:409 IDEMPOTENCY_IN_PROGRESSwithRetry-After. Same key, other body or operation:422 IDEMPOTENCY_KEY_REUSED. A request that ended 5xx may be retried with the same key. 4xx results are stored and replayed too: a402 INSUFFICIENT_CREDITSreplays even after a top-up, so use a new Idempotency-Key after adding credits.min length 1max length 255
Responses
200The action after the cancel.Show schema
ActionResponse
- dataobjectrequired0
+ Show child fields− Hide child fields
- 0
One action run. Read it again with
GET /api/v1/actions/{id}.
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 409 IDEMPOTENCY_IN_PROGRESS (the first request with this key is still
running; `Retry-After` is the lease left, at most 60 s) or
IDEMPOTENCY_RESULT_UNAVAILABLE (the original result was too large to
store; `details.originalRequestId`).
· 422 IDEMPOTENCY_KEY_REUSED (the key was used with another body or operation), or an action that cannot run · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl -X POST "https://app.owlbound.ai/api/v1/actions/$ID/cancel" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Idempotency-Key: $(uuidgen)"Targets
The action's targets and their outcomes.
/api/v1/actions/{id}/targets- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
One row per target: status, skip or failure reason, result.
Filters status and reason. Cursor-paginated.
Parameters
- idpathstringrequired
The action id.
- limitqueryinteger
Page size.
default 50min 1max 200 - cursorquerystring
Opaque cursor from
meta.page.nextCursor. Reusing it with other filters is400 CURSOR_MISMATCH. - statusquerystringqueuedpending_approvalscheduledrunningsucceededskippedfailedcanceled
- reasonquerystring
Responses
200One page of targets.Show schema
ActionTargetListResponse
- 0
- 0
Metadata on a paginated success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/actions/$ID/targets" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Audit
The action's per-target audit trail, newest first.
/api/v1/actions/{id}/audit- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
One row per target outcome: who acted (actor), the payload hash,
the outcome and reason, the provider reference. Message bodies are
never in the audit. Cursor-paginated.
Parameters
- idpathstringrequired
The action id.
- limitqueryinteger
Page size.
default 50min 1max 200 - cursorquerystring
Opaque cursor from
meta.page.nextCursor. Reusing it with other filters is400 CURSOR_MISMATCH.
Responses
200One page of audit rows.Show schema
ActionAuditListResponse
- 0
- 0
Metadata on a paginated success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/actions/$ID/audit" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Models on this page
Shared objects the operations above link to. Clients must ignore fields they do not know.
ActionTypeobject
One action operation, from this document's x-owlbound-action.
- operationIdstringrequired0
- methodstringrequired0
- pathstringrequired0
- summarystringrequired0
- descriptionstring | nullrequired0
- classstringrequired
Safety class: decides scope, approval, caps and enforcement.
readwritespendexternal_writesend - scopestringrequired0
- targetsarray of stringrequiredcontactcontactsrowsviewrecordsnone
- syncbooleanrequired0
- maxTargetsintegerrequired0
- supportsDryRunbooleanrequired0
- approvalstringrequired
The floor; the key's approval mode can raise it.
noneoptionalrequired - idempotentstringrequiredrequiredoptionalnone
- priceobjectrequired0
+ Show child fields− Hide child fields
- capabilityIdstring | nullrequired0
- perTargetobjectrequired0
+ Show child fields− Hide child fields
- minnumberrequired0
- maxnumberrequired0
- rateLimitobjectrequired0
+ Show child fields− Hide child fields
- weightintegerrequired0
- sendBucketstring | nullrequired0
- writesBackarray of stringrequired0
- inputSchemaanyrequired0
JSON schema of the request's
input. - availablebooleanrequired0
False while the server does not run this class yet (the dry run still works).
ResponseMetaobject
Metadata on every success response.
- requestIdstringrequired0
- 0
- pagePageMeta0
Cursor pagination.
hasMoreis the only end signal; pages may be short. - dryRunboolean0
True only on a dry-run response (action operations).
CreditsMetaobject
- usednumberrequired0
Credits charged by this request. Reads are free.
- balancenumber0
- estimatednumber0
Dry run only (action operations).
- availablenumber0
Dry run only (action operations).
- reservationIdstring | null0
Async operations only; the job settles this reservation.
PageMetaobject
Cursor pagination. hasMore is the only end signal; pages may be short.
- nextCursorstring | nullrequired0
- hasMorebooleanrequired0
- limitintegerrequiredmin 1max 200
Actionobject
One action run. Read it again with GET /api/v1/actions/{id}.
- idstringrequired0
- kindstringrequired0
The operation id.
- classstringrequired
Safety class: decides scope, approval, caps and enforcement.
readwritespendexternal_writesend - statusstringrequiredpending_approvalqueuedrunningsucceededfailedrejectedcanceledexpiredpartial
- identityIdstring | nullrequired0
- 0
- costobjectrequired0
+ Show child fields− Hide child fields
- estimatednumberrequired0
- chargednumberrequired0
- reservationIdstring | nullrequired0
- 0
- targetobjectrequired0
+ Show child fields− Hide child fields
- kindstringrequired0
- tableIdstring0
- viewIdstring0
- columnIdstring0
The send column this action runs (tables.rows.push target column).
- outputobject | nullrequired0
- resultanyrequired0
The single target's result (sync), or null; bulk results are per target.
- 0
- 0
Who started the action.
agentis an LLM-driven caller (the in-app agent, MCP) acting for the key or member inonBehalfOf. - createdAtnumberrequired0
- updatedAtnumberrequired0
ActionApprovalobject
- modestringrequirednonealwaysover_threshold
- urlstring | nullrequired0
- decidedBystring | nullrequired0
- decidedAtnumber | nullrequired0
- expiresAtnumber | nullrequired0
ActionCountsobject
- totalintegerrequired0
- queuedintegerrequired0
- scheduledintegerrequired0
- runningintegerrequired0
- succeededintegerrequired0
- skippedintegerrequired0
- failedintegerrequired0
- canceledintegerrequired0
ActionErrorobject
- codestringrequired0
- messagestringrequired0
ActionActorobject
Who started the action. agent is an LLM-driven caller (the in-app
agent, MCP) acting for the key or member in onBehalfOf.
- kindstringrequiredapiKeysessionagentjob
- idstringrequired0
API key id, user id, agent run id or job id.
- onBehalfOfobject0
Agent only.
+ Show child fields− Hide child fields
- kindstringrequiredapiKeysession
- idstringrequired0
PagedResponseMetaobject
Metadata on a paginated success response.
- requestIdstringrequired0
- 0
- 0
Cursor pagination.
hasMoreis the only end signal; pages may be short.
ActionTargetobject
- idstringrequired0
- actionIdstringrequired0
- refobjectrequired0
+ Show child fields− Hide child fields
- contactIdstring0
- rowIdstring0
- recordIndexinteger0
- pageinteger0
List actions only, the provider page.
- statusstringrequiredqueuedpending_approvalscheduledrunningsucceededskippedfailedcanceled
- notBeforenumber | nullrequired0
- reasonstring | nullrequired0
Skip or failure code, e.g. NO_LINKEDIN_URL, PROFILE_NOT_FOUND.
- resultanyrequired0
Operation-specific, e.g. {providerId, publicIdentifier, profileUrl, fullName}.
- creditsnumberrequired0
- attemptsintegerrequired0
- updatedAtnumberrequired0
ActionAuditEntryobject
- idstringrequired0
- actionIdstringrequired0
- targetIdstringrequired0
- operationIdstringrequired0
- classstringrequired
Safety class: decides scope, approval, caps and enforcement.
readwritespendexternal_writesend - 0
Who started the action.
agentis an LLM-driven caller (the in-app agent, MCP) acting for the key or member inonBehalfOf. - identityIdstring | nullrequired0
- payloadHashstringrequired0
SHA-256 of the canonical request input; message bodies are never stored here.
- outcomestringrequiredsucceededskippedfailedcanceledunknown
- reasonstring | nullrequired0
- providerstring | nullrequired0
- providerRefstring | nullrequired0
- creditsnumberrequired0
- dryRunbooleanrequired0
- requestIdstringrequired0
- atnumberrequired0