---
title: "List Project System Placeholders"
method: GET
path: "/projects/{projectId}/system-placeholders"
tags: ["Placeholders"]
---

# List Project System Placeholders

`GET /projects/{projectId}/system-placeholders`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/projects/{projectId}/system-placeholders`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/docs/projects/:projectId/system-placeholders/get.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `project.placeholder` (Read only).

Returns every placeholder Crowdin ships, with the state it has in this project. The catalogue is fixed and always comes in the same order, so `isEnabled` is the only value that changes between requests. See [Placeholders](#tag/Placeholders) for what each key matches.

## Path parameters

- `projectId` integer, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Project system placeholders list

- ProjectSystemPlaceholderCollectionResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` ProjectSystemPlaceholderResource[], required
    - `data` ProjectSystemPlaceholderResponse, required: A placeholder Crowdin ships, turned on or off per project
      - `id` 'wrappedAmpersand' | 'appleStringsdictPlural' | 'dollarInsideBraces' | 'dollarOutsideBraces' | 'wrappedColon' | 'wrappedDollar' | 'dollarParentheses' | 'i18nextNesting' | 'i18nextLegacy' | 'rubyInterpolation' | 'mailchimpMergeTag' | 'swiftInterpolation' | 'bracesTriple' | 'bracesDouble' | 'bracesSingle' | 'bracesDoubleFormatted' | 'dateTimePattern' | 'appleStringCatalogNamed' | 'printfSpecifier' | 'pythonPercentFormat' | 'railsI18n' | 'javaMessageFormat' | 'dotNetCompositeFormat' | 'twig' | 'phpInterpolation' | 'freemarkerDirective' | 'wrappedPercent' | 'dateTimeSpecifier', required: Key of the system placeholder. Name it in the `path` of a batch operation to turn the placeholder on or off
      - `isEnabled` boolean, required: If `false`, this project stops recognizing the placeholder in the QA checks and in the Editor. The Editor keeps highlighting a construct another enabled placeholder still claims __Note:__ A construct that a blocking custom placeholder also matches is reported under that placeholder once this one is off, so its mismatch becomes non-ignorable
      - `label` string, required: Name of the placeholder, in the language of the request. Carries no syntax example — `examples` does
      - `examples` string[], required: Constructs the placeholder matches, written out. Never localized, so they can be rendered as code. A placeholder that merges several patterns lists all of them
      - `description` string, required: One line saying where the construct comes from, in the language of the request. Carries no syntax example — `examples` does, and it repeats neither that nor `label`
  - `pagination` Pagination: Pagination Response Model
    - `offset` integer
    - `limit` integer

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project Not Found
- `405`: Method Not Allowed

---

[API](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/revisions/dc68744c5384?raw)
