---
title: "Decide Approval"
method: POST
path: "/v2/approvals/{approval_id}/decide"
tags: ["v2 - Approvals"]
---

# Decide Approval

`POST /v2/approvals/{approval_id}/decide`

## Request

- Base URL: `https://api.jubjubapp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.jubjubapp.com/v2/approvals/{approval_id}/decide`
- Auth: HTTP bearer

Approve or reject an approval request.

A channel approval: only its credential owner. A workspace_owner
approval: the workspace owner, or anyone the owner has granted approval
rights to (read live). Agents need the ``approvals:decide`` scope, off by
default — the owner's own configuration of their own agent.

Approving the last pending approval sends the launch (as scheduled, or
now if its time has passed: `sent_now`). Rejecting cancels the launch.

**Path parameters:**
- `approval_id`: The approval request to decide on

**Request body:**
- `decision`: "approved" or "rejected"
- `reason`: Optional reason (recommended for rejections)

**Responses:**
- 200: Decision recorded successfully
- 400: Invalid decision
- 403: Not the designated approver
- 404: Approval request not found
- 410: Approval request has expired
- 503: Approval service unavailable

## Path parameters

- `approval_id` string, required

## Headers

- `Authorization` string
- `X-JubJub-Service-Key` string
- `X-JubJub-Agent-Key` string
- `X-JubJub-Platform-Key` string
- `Origin` string
- `Referer` string
- `X-JubJub-Trial-Token` string

## Request body

- SrcV2PresentationRoutesApprovalRoutesApprovalDecisionRequest: Request body for POST /v2/approvals/{approval_id}/decide.
  - `decision` string, required: The decision: 'approved' or 'rejected'
  - `reason` string, nullable: Optional reason for the decision (recommended for rejections)

## Response `200`

Successful Response

- ApprovalResponse: Response model for an approval request.
  - `approval_id` string, required
  - `launch_id` string, required
  - `content_id` string, required
  - `workspace_id` string, required
  - `team_id` string, required
  - `approver_profile_id` string, nullable
  - `requester_profile_id` string, nullable
  - `approver` object, nullable
  - `requester` object, nullable
  - `is_approver` boolean
  - `platform` string, required
  - `credential_id` string, required
  - `credential_name` string, nullable
  - `status` string, required
  - `policy_source` string, required
  - `resolution_note` string, nullable
  - `decided_at` string, nullable
  - `decided_by` string, nullable
  - `decided_by_profile` object, nullable
  - `notification_id` string, nullable
  - `created_at` string, nullable
  - `expires_at` string, nullable
  - `updated_at` string, nullable
  - `approver_count` integer
  - `sent_now` boolean
  - `activated` boolean

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/jubjubapp/apis/jubjub-api.md) - [All operations](https://skmtc.dev/jubjubapp/apis/jubjub-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jubjubapp/apis/jubjub-api/revisions/353157b296f2?raw)
