Skip to content

Approvals 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

GET/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.

ParameterInTypeDescription
approvalIdrequiredpathstring
Response 200 · OK · application/json
ApprovalView
  • canDecidebooleanrequired
  • createdAtstring (date-time)required
  • decidedAtstring (date-time)
  • decidedBystring
    Name of the person who decided
  • decidedViaenum: web | elicitation
  • environmentIdstringrequired
  • expiresAtstring (date-time)required
  • idstringrequired
  • ApprovalPlanrequired
  • projectIdstringrequired
  • ApprovalRequesterrequired
  • statusenum: pending | approved | declined | used | expired | stalerequired
Errors
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Unprocessable Entity
  • 500Internal Server Error

Errors are RFC 9457 application/problem+json with a stable code field.

POST/approvals/{approvalId}/approve

Approve 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.

ParameterInTypeDescription
approvalIdrequiredpathstring
Response 200 · OK · application/json
ApprovalView
  • canDecidebooleanrequired
  • createdAtstring (date-time)required
  • decidedAtstring (date-time)
  • decidedBystring
    Name of the person who decided
  • decidedViaenum: web | elicitation
  • environmentIdstringrequired
  • expiresAtstring (date-time)required
  • idstringrequired
  • ApprovalPlanrequired
  • projectIdstringrequired
  • ApprovalRequesterrequired
  • statusenum: pending | approved | declined | used | expired | stalerequired
Errors
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Unprocessable Entity
  • 500Internal Server Error

Errors are RFC 9457 application/problem+json with a stable code field.

POST/approvals/{approvalId}/decline

Decline a production change

Refuses the waiting call. The same call stays refused for one minute. Same permissions as approving.

ParameterInTypeDescription
approvalIdrequiredpathstring
Response 200 · OK · application/json
ApprovalView
  • canDecidebooleanrequired
  • createdAtstring (date-time)required
  • decidedAtstring (date-time)
  • decidedBystring
    Name of the person who decided
  • decidedViaenum: web | elicitation
  • environmentIdstringrequired
  • expiresAtstring (date-time)required
  • idstringrequired
  • ApprovalPlanrequired
  • projectIdstringrequired
  • ApprovalRequesterrequired
  • statusenum: pending | approved | declined | used | expired | stalerequired
Errors
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Unprocessable Entity
  • 500Internal Server Error

Errors are RFC 9457 application/problem+json with a stable code field.