---
title: "Update campaign approval state"
method: POST
path: "/v3/campaigns/bulk/approve"
tags: ["BulkCampaignOperations"]
---

# Update campaign approval state

`POST /v3/campaigns/bulk/approve`

Approve campaigns within a specified namespace. Campaign approval may take longer due to GCS rate-limiting during backend processing.

## Request body

- V3BulkCampaignApprovalRequest
  - `campaigns` V3BulkApproveCampaignRequest[], required — Request object for bulk approval of multiple campaigns, each specifying campaign type, ID, and approval state.
    - `campaignType` 'CAMPAIGN_TYPE_BANNER' | 'CAMPAIGN_TYPE_BANNERX' | 'CAMPAIGN_TYPE_DISPLAY'
    - `id` string — The unique identifier of the campaign to be approved.
    - `approval` Campaignv3Approval
      - `state` 'APPROVAL_STATE_PENDING' | 'APPROVAL_STATE_APPROVED' | 'APPROVAL_STATE_REJECTED'
      - `rejectionReason` string — The reason a campaign has been rejected. Mandatory field if status is APPROVAL_STATE_REJECTED

## Response `200`

Provides the details of the updated campaigns after bulk approval.

- V3BulkCampaignApprovalResponse
  - `bulkId` string — Unique identifier for the bulk operation.
  - `status` 'BULK_OPERATION_SUBMITTED' | 'BULK_OPERATION_IN_PROGRESS' | 'BULK_OPERATION_COMPLETED' | 'BULK_OPERATION_FAILED'
  - `message` string — Status message providing additional details about the bulk operation.

## Other responses

- `400` — There was a problem with input.
- `401` — Login failed or token not valid.
- `403` — Access denied due to insufficient permissions.
- `default` — An unexpected error response.

---

[API](https://skmtc.net/citrusad/apis/citrus-auth-api.md) · [All operations](https://skmtc.net/citrusad/apis/citrus-auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/citrusad/citrus-auth-api/revisions/a040003c7378/schema)
