Domino Capability API guide
Domino provides a deterministic Capability API for strict callers and an Assistant API for clients that want Domino's hosted natural-language runtime.
Authentication and abilities
Create a static bearer token in Domino's Agent Access settings. claude.ai OAuth access tokens are bound to the MCP resource and are not Capability API or Assistant API credentials. Grant only the required abilities:
planning:read;planning:write;planning:rsvp;planning:commit.
Send the token using:
Authorization: Bearer YOUR_TOKEN
Never place the token in URLs, documentation prompts, logs, or user-visible assistant replies.
Use Create, test, rotate, and revoke Agent Access tokens for exact web instructions and least-privilege examples.
Capability API
Execute a current capability using:
POST /api/v2/capabilities/{capability}
Recommended request envelope:
{
"version": "CURRENT_CAPABILITY_VERSION",
"input": {
"field": "value"
}
}
Fetch the generated OpenAPI document or generated capability reference for exact names and schemas.
Request headers
Use:
Content-Type: application/json
Accept: application/json
X-Domino-Client: your-client-name
X-Request-Id: optional-correlation-id
Writes and external-effect commits require:
Idempotency-Key: caller-stable-intent-key
Reuse the same key only for an exact replay of the same intended mutation. Use a new key for intentionally changed input.
Typed outcome contract
Capability responses use:
domino.capability-outcome.v1
Important fields include:
status;outcome.kind;outcome.facts;outcome.resources;outcome.collection;outcome.disclosures;outcome.next_actions;outcome.confirmation;effects.confirmedandeffects.unconfirmed;- normalized
errors; execution_idandreplayedwhen applicable.
Use the structured fields for control flow. outcome.fallback_text is safe presentation fallback, not a replacement for checking status and confirmed effects.
For asynchronous singular capture, clarification continuation, and generation-safe multi-item roundups, read Idea capture and roundup workflows with the Capability API.
Status handling
completed— the capability reached its terminal result.unchanged— the requested state already held; no new effect was needed.accepted— work started but is not terminal. Follow the returned next action or poll.needs_input— obtain the missing information and make an intentional follow-up request.failed— inspect normalized errors and recovery guidance.
Poll a returned execution when instructed:
GET /api/v2/capability-executions/{executionId}
Do not resubmit a new write merely because accepted work has not finished.
Prepared actions and commit
Direct consequential capabilities cannot be called through the v2 endpoint. They must use the centralized prepared-action protocol:
- Create or update the private draft.
- Invoke the relevant prepare capability.
- Present the exact action, disclosures, recipients, and confirmation state.
- Stop and obtain later explicit approval.
- Commit
actions.commitwith the prepared handle from the same API token/principal and a stable idempotency key.
For the hosted Assistant API, commit a returned prepared handle through:
POST /api/v2/assistant/prepared-actions/{handle}/commit
with a unique request_key and the same channel identity when one was supplied.
Assistant API
Use Domino's hosted conversational runtime through:
POST /api/v2/assistant/turns
Example:
{
"message": "Find coffee with Andrew in the West Loop",
"request_key": "turn-001",
"channel_identity": "optional-stable-conversation-key"
}
The Assistant API owns natural-language interpretation and durable conversation state. The Capability API does not.
HTTP recovery
401: authenticate again.403: the token lacks the required ability or access.404: capability or current authorized reference is unavailable.409: conflict, in-progress execution, reference revision, or confirmation safety issue.422: the structured input is invalid.429: wait forRetry-After.503: a required dependency is unavailable; retry according to returned guidance.
LLM and integration guidance
- Never guess request fields. Fetch the generated schema.
- Never send numeric internal resource IDs when the public schema expects handles or selectors.
- Never claim an effect from HTTP success alone; inspect
statusandeffects.confirmed. - Keep Capability API and Assistant API reasoning boundaries distinct.
- Use Capability API recipes for complete request sequences, polling, invitation preparation, RSVP, and Assistant API commit behavior.