## Get a CRM dictionary entry

`GET /v1/crm-dictionaries/:dictionary/:id`

Retrieves a CRM dictionary entry by its string ID: a communication type, an activity provider, or a stage outcome.

> **This feature is rolling out.** It requires a CRM update after `26.2200.0` and administrator activation. The release version has not been published. Until available, requests return `422 METHOD_NOT_YET_AVAILABLE` with `error.release`.

## Parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| `dictionary` (path) | string | yes | Dictionary from the table below |
| `id` (path) | string | yes | Nonempty entry ID from the [list of entries in this dictionary](/docs/entities/crm-v3-dictionaries/list). Preserve its case |

| `dictionary` | Contents | Example `id` |
|---|---|---|
| `activity-providers` | Activity providers | `CRM_TODO` |
| `email-types` | Email address types | `WORK` |
| `phone-types` | Phone number types | `WORK` |
| `im-types` | Messenger types | `FACEBOOK` |
| `web-types` | Website types | `WORK` |
| `stage-semantics` | Stage outcomes | `F` |

Query parameters and a request body are not accepted. `READONLY` keys with the `crm` scope can read entries.

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/crm-dictionaries/activity-providers/CRM_TODO" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/crm-dictionaries/activity-providers/CRM_TODO" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const response = await fetch(
  'https://vibecode.bitrix24.com/v1/crm-dictionaries/activity-providers/CRM_TODO',
  {
    headers: {
      'X-Api-Key': 'YOUR_API_KEY'
    }
  }
)
const { success, data } = await response.json()
```

### JavaScript — OAuth application

```javascript
const response = await fetch(
  'https://vibecode.bitrix24.com/v1/crm-dictionaries/activity-providers/CRM_TODO',
  {
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      Authorization: 'Bearer USER_SESSION_TOKEN'
    }
  }
)
const { success, data } = await response.json()
```

## Response fields

HTTP `200 OK`.

| Field | Type | Description |
|---|---|---|
| `success` | boolean | `true` on success |
| `data` | object | Entry from the selected dictionary |
| `data.id` | string | Entry ID from the [dictionary list](/docs/entities/crm-v3-dictionaries/list) |

### Activity providers

| Field | Type | Description |
|---|---|---|
| `data.name` | string | Activity provider name |
| `data.isAvailable` | boolean | Available in the Bitrix24 account |
| `data.isActive` | boolean | Active |
| `data.types` | array | Activity types offered by the provider |
| `data.types[].providerTypeId` | string | Type ID within this provider |
| `data.types[].name` | string | Activity type name |
| `data.types[].directions` | object | Direction labels. Keys `incoming`, `outgoing`, and `undefined` have string values. An activity type without directions returns `{}` |
| `data.defaultTypeId` | string / null | Default type ID from `data.types[].providerTypeId`, if provided |
| `data.capabilities` | string[] | Provider capability codes |

### Email, phone, messenger, and website types

| Field | Type | Description |
|---|---|---|
| `data.name` | string / null | Type name |
| `data.nameShort` | string / null | Short name |
| `data.isDeprecated` | boolean | The type is deprecated |

### Stage outcomes

| Field | Type | Description |
|---|---|---|
| `data.name` | string | Stage outcome name |

## Response example

Activity provider:

```json
{
  "success": true,
  "data": {
    "id": "CRM_TODO",
    "name": "To-do",
    "isAvailable": true,
    "isActive": true,
    "types": [
      {
        "providerTypeId": "TODO",
        "name": "To-do",
        "directions": {}
      }
    ],
    "defaultTypeId": "TODO",
    "capabilities": [
      "calendar",
      "completion",
      "ping",
      "badge",
      "timeline"
    ]
  }
}
```

Email address type:

```json
{
  "success": true,
  "data": {
    "id": "WORK",
    "name": "Work email",
    "nameShort": "Work",
    "isDeprecated": false
  }
}
```

Stage outcome:

```json
{
  "success": true,
  "data": {
    "id": "F",
    "name": "Failed"
  }
}
```

## Error response example

404 — entry not found:

```json
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Record with ID = `DUMMY_UNKNOWN` was not found"
  }
}
```

## Errors

| HTTP | Code | Description |
|---|---|---|
| 400 | `INVALID_PARAMS` | Invalid request shape |
| 400 | `UNKNOWN_FILTER_FIELD` | A query parameter was supplied |
| 404 | `ENTITY_NOT_FOUND` | No entry exists with the specified ID |
| 422 | `METHOD_NOT_YET_AVAILABLE` | The feature is not yet available. Update information is provided in `error.release` |
| 502 | `BITRIX_UNAVAILABLE` | Invalid response from Bitrix24 |
| 401 | `MISSING_API_KEY` | Missing `X-Api-Key` |
| 401 | `TOKEN_MISSING` | No Bitrix24 tokens are configured |
| 403 | `SCOPE_DENIED` | The key requires the `crm` scope |

For shared API errors, see [Errors](/docs/errors).

## See also

- [List CRM dictionary entries](/docs/entities/crm-v3-dictionaries/list)
- [CRM dictionaries and settings](/docs/entities/crm-v3-dictionaries)
