---
title: "GET /{projectKey}"
method: GET
path: "/{projectKey}"
---

# GET /{projectKey}

`GET /{projectKey}`

## Request

- Base URL: `https://history.europe-west1.gcp.commercetools.com`
- URL: `https://history.europe-west1.gcp.commercetools.com/{projectKey}`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.europe-west1.gcp.commercetools.com/oauth/token` scopes: `view_associate_roles:{projectKey}`, `view_audit_log:{projectKey}`, `view_business_units:{projectKey}`, `view_cart_discounts:{projectKey}`, `view_categories:{projectKey}`, `view_customers:{projectKey}`, `view_customers:{projectKey}:{storeKey}`, `view_customer_groups:{projectKey}`, `view_discount_codes:{projectKey}`, `view_key_value_documents:{projectKey}`, `view_orders:{projectKey}`, `view_orders:{projectKey}:{storeKey}`, `view_payments:{projectKey}`, `view_products:{projectKey}`, `view_product_selections:{projectKey}`, `view_quotes:{projectKey}`, `view_quote_requests:{projectKey}`, `view_shipping_methods:{projectKey}`, `view_shopping_lists:{projectKey}`, `view_shopping_lists:{projectKey}:{storeKey}`, `view_staged_quotes:{projectKey}`, `view_standalone_prices:{projectKey}`, `view_states:{projectKey}`, `view_stores:{projectKey}`, `view_tax_categories:{projectKey}`, `view_types:{projectKey}`
- TypeScript: <https://skmtc.dev/commercetools/apis/commercetools-change-history-api/docs/:projectKey/get.ts> (a function with typed inputs; its response is checked against the schema)

The `view_audit_log:{projectKey}` scope is required, and depending on the [resource type](ctp:history:type:ChangeHistoryResourceType) queried, their respective scopes must be granted.

If the request exceeds the rate limit, a [TooManyRequests](ctp:history:type:TooManyRequestsError) error is returned.

## Query parameters

- `resourceTypes` ChangeHistoryResourceType[]
- `date.from` union
  - 'now'
  - string, datetime
  - number, double
- `date.to` union
  - 'now'
  - string, datetime
  - number, double
- `limit` integer
- `offset` integer
- `userId` string
- `userIds` string[]
- `clientId` string
- `customerId` string
- `associateId` string
- `businessUnit` string
- `type` string
- `resourceId` string
- `resourceIds` string[]
- `resourceKey` string
- `source` 'MerchantCenter' | 'ImpEx' | 'ApiClient'
- `changes` string[]
- `stores` string[]
- `excludePlatformInitiatedChanges` PlatformInitiatedChange[]
- `expand` boolean
- `withTotal` boolean

## Response `200`

Records of the resource under query.

- RecordPagedQueryResponse
  - `limit` integer, required
  - `count` integer, required
  - `total` integer
  - `offset` integer, required
  - `results` Record[], required
    - `version` integer, required
    - `previousVersion` integer, required
    - `type` string, required
    - `modifiedBy` ModifiedBy, required
      - `isPlatformClient` boolean, required
      - `id` string
      - `type` string, required
      - `clientId` string
      - `anonymousId` string
      - `customer` Reference
        - `typeId` 'approval-flow' | 'approval-rule' | 'associate-role' | 'attribute-group' | 'business-unit' | 'cart' | 'cart-discount' | 'category' | 'channel' | 'customer' | 'customer-email-token' | 'customer-group' | 'customer-password-token' | 'direct-discount' | 'discount-code' | 'discount-group' | 'extension' | 'inventory-entry' | 'key-value-document' | 'order' | 'order-edit' | 'payment-method' | 'payment' | 'product' | 'product-discount' | 'product-price' | 'product-selection' | 'product-tailoring' | 'product-type' | 'quote' | 'quote-request' | 'recurrence-policy' | 'recurring-order' | 'review' | 'shipping-method' | 'shopping-list' | 'staged-quote' | 'standalone-price' | 'state' | 'store' | 'subscription' | 'tax-category' | 'type' | 'zone', required
        - `id` string, required
      - `associate` Reference
        - `typeId` 'approval-flow' | 'approval-rule' | 'associate-role' | 'attribute-group' | 'business-unit' | 'cart' | 'cart-discount' | 'category' | 'channel' | 'customer' | 'customer-email-token' | 'customer-group' | 'customer-password-token' | 'direct-discount' | 'discount-code' | 'discount-group' | 'extension' | 'inventory-entry' | 'key-value-document' | 'order' | 'order-edit' | 'payment-method' | 'payment' | 'product' | 'product-discount' | 'product-price' | 'product-selection' | 'product-tailoring' | 'product-type' | 'quote' | 'quote-request' | 'recurrence-policy' | 'recurring-order' | 'review' | 'shipping-method' | 'shopping-list' | 'staged-quote' | 'standalone-price' | 'state' | 'store' | 'subscription' | 'tax-category' | 'type' | 'zone', required
        - `id` string, required
    - `modifiedAt` string, required
    - `label` Label, required
      - `type` string, required
    - `previousLabel` Label, required
      - `type` string, required
    - `changes` Change[], required
      - `type` string, required
      - `change` string, required
    - `resource` ResourceIdentifier, required
      - `id` string
      - `key` string
      - `typeId` 'approval-flow' | 'approval-rule' | 'associate-role' | 'attribute-group' | 'business-unit' | 'cart' | 'cart-discount' | 'category' | 'channel' | 'customer' | 'customer-email-token' | 'customer-group' | 'customer-password-token' | 'direct-discount' | 'discount-code' | 'discount-group' | 'extension' | 'inventory-entry' | 'key-value-document' | 'order' | 'order-edit' | 'payment-method' | 'payment' | 'product' | 'product-discount' | 'product-price' | 'product-selection' | 'product-tailoring' | 'product-type' | 'quote' | 'quote-request' | 'recurrence-policy' | 'recurring-order' | 'review' | 'shipping-method' | 'shopping-list' | 'staged-quote' | 'standalone-price' | 'state' | 'store' | 'subscription' | 'tax-category' | 'type' | 'zone', required
    - `stores` KeyReference[], required
      - `typeId` 'approval-flow' | 'approval-rule' | 'associate-role' | 'attribute-group' | 'business-unit' | 'cart' | 'cart-discount' | 'category' | 'channel' | 'customer' | 'customer-email-token' | 'customer-group' | 'customer-password-token' | 'direct-discount' | 'discount-code' | 'discount-group' | 'extension' | 'inventory-entry' | 'key-value-document' | 'order' | 'order-edit' | 'payment-method' | 'payment' | 'product' | 'product-discount' | 'product-price' | 'product-selection' | 'product-tailoring' | 'product-type' | 'quote' | 'quote-request' | 'recurrence-policy' | 'recurring-order' | 'review' | 'shipping-method' | 'shopping-list' | 'staged-quote' | 'standalone-price' | 'state' | 'store' | 'subscription' | 'tax-category' | 'type' | 'zone', required
      - `key` string, required
    - `businessUnit` KeyReference
      - `typeId` 'approval-flow' | 'approval-rule' | 'associate-role' | 'attribute-group' | 'business-unit' | 'cart' | 'cart-discount' | 'category' | 'channel' | 'customer' | 'customer-email-token' | 'customer-group' | 'customer-password-token' | 'direct-discount' | 'discount-code' | 'discount-group' | 'extension' | 'inventory-entry' | 'key-value-document' | 'order' | 'order-edit' | 'payment-method' | 'payment' | 'product' | 'product-discount' | 'product-price' | 'product-selection' | 'product-tailoring' | 'product-type' | 'quote' | 'quote-request' | 'recurrence-policy' | 'recurring-order' | 'review' | 'shipping-method' | 'shopping-list' | 'staged-quote' | 'standalone-price' | 'state' | 'store' | 'subscription' | 'tax-category' | 'type' | 'zone', required
      - `key` string, required
    - `withoutChanges` boolean, required

## Other responses

- `400`: Bad Request. A 400 is the most commonly expected error response and indicates that a request failed due to providing bad input. Bad input can be a malformed request body, missing required parameters, wrongly typed or malformed parameters or a parameter that references another resource that does not exist. Clients need to resolve the problems mentioned in the response before re-sending the request.
- `401`: Unauthorized. Indicate that the request is not properly authenticated.
- `403`: Forbidden. Indicates that the authenticated client is not allowed to perform the request.
- `429`: Too Many Requests. Indicates that the client has exceeded the API rate limit. Reduce the date range and resource types in your query to minimize the token usage, or retry the request after some time (indicated in the `Retry-After` header).
- `500`: Internal Server Error. A 500 indicates that the request failed due to a server-side problem that needs to be resolved before subsequent requests can succeed. It either indicates a temporary unavailability or permanent server-side problem that needs to be reported and resolved.
- `503`: Service Unavailable. The following general error codes can appear in responses with the HTTP status code `503` - `OverCapacity` The service is having trouble handling the load. The client application should retry the request with exponential backoff up to a point where further delay is unacceptable.

## Changes

- **2026-09-21** `0e9494260abb`: 2 info
  - added the new optional `query` request parameter `resourceIds`
  - added the new optional `query` request parameter `userIds`
- **2026-07-10** `cc3c63466b74`: 1 breaking, 1 info
  - the response property `total` became optional for the status `200`
  - added the new optional `query` request parameter `withTotal`
- **2026-05-27** `75cd6cce1b64`: 1 info
  - added `SetTransactionInterfaceIdChange` discriminator mapping keys to the `results/items/changes/items/` response property for the response status `200`
- **2025-12-16** `fd93e445a418`: 7 info
  - the security scope `view_shipping_methods:{projectKey}` was added to the endpoint's security scheme `oauth_2_0`
  - the security scope `view_standalone_prices:{projectKey}` was added to the endpoint's security scheme `oauth_2_0`
  - added the enum value `shipping-method` to the property `items/` of the `query` request parameter `resourceTypes`
  - added the enum value `standalone-price` to the property `items/` of the `query` request parameter `resourceTypes`
  - …3 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/commercetools/apis/commercetools-change-history-api/changes/:projectKey/get.md)

---

[API](https://skmtc.dev/commercetools/apis/commercetools-change-history-api.md) - [All operations](https://skmtc.dev/commercetools/apis/commercetools-change-history-api/llms.txt) - [OpenAPI document](https://skmtc.dev/commercetools/apis/commercetools-change-history-api/revisions/0e9494260abb?raw)
