Reference
View as MarkdownApprovals API
Production approvals for AI clients.
3 operations. Every call needs a session cookie or an Authorization: Bearer nct_… token unless marked Public. Conventions, errors and scopes
/approvals/{approvalId}Get a production approval request
The plan an AI client's production change needs a person to approve: what will happen, who asked (token and MCP client), when it expires and whether you can decide. Signed-in members who can read the project only; tokens are refused.
| Parameter | In | Type | Description |
|---|---|---|---|
approvalIdrequired | path | string |
Response 200 · OK · application/json
- canDecidebooleanrequired
- createdAtstring (date-time)required
- decidedAtstring (date-time)
- decidedBystringName of the person who decided
- decidedViaenum: web | elicitation
- environmentIdstringrequired
- expiresAtstring (date-time)required
- idstringrequired
- ApprovalPlanrequired
- projectIdstringrequired
- ApprovalRequesterrequired
- statusenum: pending | approved | declined | used | expired | stalerequired
401Unauthorized403Forbidden404Not Found422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/approvals/{approvalId}/approveApprove a production change
Lets the waiting call proceed once, with exactly the plan shown. Owner, Admin or Developer with deploy rights on the project, signed in. The approval is valid for ten minutes from the request and void when the service changes in the meantime.
| Parameter | In | Type | Description |
|---|---|---|---|
approvalIdrequired | path | string |
Response 200 · OK · application/json
- canDecidebooleanrequired
- createdAtstring (date-time)required
- decidedAtstring (date-time)
- decidedBystringName of the person who decided
- decidedViaenum: web | elicitation
- environmentIdstringrequired
- expiresAtstring (date-time)required
- idstringrequired
- ApprovalPlanrequired
- projectIdstringrequired
- ApprovalRequesterrequired
- statusenum: pending | approved | declined | used | expired | stalerequired
401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/approvals/{approvalId}/declineDecline a production change
Refuses the waiting call. The same call stays refused for one minute. Same permissions as approving.
| Parameter | In | Type | Description |
|---|---|---|---|
approvalIdrequired | path | string |
Response 200 · OK · application/json
- canDecidebooleanrequired
- createdAtstring (date-time)required
- decidedAtstring (date-time)
- decidedBystringName of the person who decided
- decidedViaenum: web | elicitation
- environmentIdstringrequired
- expiresAtstring (date-time)required
- idstringrequired
- ApprovalPlanrequired
- projectIdstringrequired
- ApprovalRequesterrequired
- statusenum: pending | approved | declined | used | expired | stalerequired
401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.