Sign in to run requests with your own sandbox key. Sign in

Bulk approve / deny / assign_to_me

POST /api/v1/executions/review_bulk_actions
executions:write Async

Always asynchronous. Approve/deny enqueue the resume per execution (enqueued counts them). Cap of 25 ids per request. Ids that do not resolve in the caller's scope are reported as not_found in skipped so existence is not leaked. Requires executions:write.

Request body

application/json · BulkReviewRequest · required

The action to apply and the executions to apply it to.

  • execution_ids array of integer required
  • bulk_action string required One of approve deny assign_to_me
  • note string
Example request
{
  "execution_ids": [
    1842,
    1843,
    1844,
    1845,
    1846
  ],
  "bulk_action": "approve",
  "note": "Manual review batch 2026-09-09 — OFAC and credit clean."
}

Responses

  • 202 Bulk action processed application/json
    • data BulkReviewResult

      Schema: BulkReviewResult

      • object string
      • applied integer
      • enqueued integer
      • skipped array of object
        • id integer
        • reason string One of not_awaiting_review review_not_pending assigned_elsewhere live_mode_forbidden already_assigned not_found
    • meta Meta

      Schema: Meta

      • request_id string required Correlation id for this request. Also sent as the `X-Request-Id` response header; quote it when contacting support.
    202 example
    {
      "data": {
        "object": "bulk_review_result",
        "applied": 4,
        "enqueued": 4,
        "skipped": [
          {
            "id": 1846,
            "reason": "not_found"
          }
        ]
      },
      "meta": {
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f"
      }
    }
  • 401 Missing, malformed, expired or revoked bearer token. The WWW-Authenticate header carries the RFC 6750 challenge. application/json

    Schema: ErrorEnvelope

    401 example
    {
      "error": {
        "code": "unauthorized",
        "message": "A valid bearer token is required.",
        "details": [],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/unauthorized"
      }
    }
  • 403 Token does not hold the required scope. details lists the scope(s) that were checked. application/json

    Schema: ErrorEnvelope

    403 example
    {
      "error": {
        "code": "insufficient_scope",
        "message": "This token does not have the required scope.",
        "details": [
          {
            "field": "scope",
            "message": "executions:write"
          }
        ],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/insufficient_scope"
      }
    }
  • 422 validation_failed — unknown bulk_action, empty execution_ids, or more than 25 ids application/json

    Schema: ErrorEnvelope

    422 example
    {
      "error": {
        "code": "validation_failed",
        "message": "Bulk action exceeds the per-request maximum.",
        "details": [
          {
            "field": "execution_ids",
            "message": "max 25 ids per request"
          }
        ],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/validation_failed"
      }
    }
  • 429 Rate limit exceeded (60 req/min per IP on /api/v1, 600 req/hour per token prefix, or 300 req/5 min per IP globally). The body is the standard error envelope and Retry-After gives the seconds until the window resets. application/json

    Schema: ErrorEnvelope

    429 example
    {
      "error": {
        "code": "rate_limited",
        "message": "Rate limit exceeded. Retry later.",
        "details": [],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/rate_limited"
      }
    }
Was this page helpful?