---
title: "Get change request"
method: GET
path: "/v1/sponsored-product-ads/change-requests/{requestId}"
tags: ["SponsoredProductAds V1"]
---

# Get change request

`GET /v1/sponsored-product-ads/change-requests/{requestId}`

## Request

- Base URL: `https://api.otto.market`
- URL: `https://api.otto.market/v1/sponsored-product-ads/change-requests/{requestId}`
- Auth: HTTP bearer

Retrieve the current status and details of a change request. Use this endpoint to check whether a previously submitted write operation was accepted or rejected, and to obtain the rejection reason if applicable.

Common rejection reasons:
- `"The specified SKU does not exist in the product catalog."` — SKU provided in a target creation was not found in OTTO's product catalog.
- `"Negative keywords are not supported for MANUAL campaigns."` — illustrative rejection reason when keyword creation includes a negative keyword for a `MANUAL` campaign.
- `"The partner account is blocked and cannot create or modify campaigns."` — the partner has been blocked; no write operations will be processed until the block is lifted.
- `"An internal error occurred while processing the request. Please retry."` — transient internal failure; the entity was not modified and the request can be safely retried.

## Path parameters

- `requestId` string, uuid, required

## Response `200`

Change request details retrieved successfully.

- ChangeRequestResponseSponsoredProductAdsV1
  - `requestId` string, uuid, required
  - `requestType` 'CREATE_CAMPAIGN' | 'UPDATE_CAMPAIGN' | 'CREATE_TARGETS' | 'UPDATE_TARGETS' | 'DELETE_TARGETS' | 'CREATE_KEYWORDS' | 'UPDATE_KEYWORDS' | 'DELETE_KEYWORDS', required
  - `status` 'PENDING' | 'ACCEPTED' | 'REJECTED', required
  - `lastModifiedAt` string, date-time, required: Timestamp of the last status change of this change request.
  - `rejectionReason` string, nullable: Human-readable explanation of why the request was rejected. Only present when `status` is `REJECTED`. See the `getChangeRequest` operation description for a list of common rejection reasons.
  - `entityIds` string[], nullable: IDs of the entities affected by this request. `null` for CREATE operations while still PENDING (entities not yet assigned). Populated with entity IDs once the request is ACCEPTED.
  - `_links` object, required: Navigation links. Always contains `self`. When status is `ACCEPTED`, also contains a `campaign` link in the current implementation.
    - `self` LinkSponsoredProductAdsV1, required: A HAL link object as defined in draft-kelly-json-hal.
      - `href` string, uri, required: The URL of the linked resource.
    - `campaign` LinkSponsoredProductAdsV1: A HAL link object as defined in draft-kelly-json-hal.
      - `href` string, uri, required: The URL of the linked resource.

## Other responses

- `401`: Unauthorized. Missing or invalid authentication token.
- `403`: Forbidden. Insufficient permissions or resource access denied.
- `404`: Not found. The requested resource does not exist.
- `500`: Internal server error.

## Changes

- **2026-09-10** `3d020f15ab4d`: 1 info
  - endpoint added
- **2026-09-08** `06ee9d8814bd`: 1 breaking
  - api path removed without deprecation
- **2026-09-01** `b1bc133112bd`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/otto/apis/otto-market-api/changes/v1/sponsored-product-ads/change-requests/:requestId/get.md)

---

[API](https://skmtc.dev/otto/apis/otto-market-api.md) - [All operations](https://skmtc.dev/otto/apis/otto-market-api/llms.txt) - [OpenAPI document](https://skmtc.dev/otto/apis/otto-market-api/revisions/cc8a74b62e87?raw)
