---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.2
alternate:
  - https://yandex.ru/dev/direct/doc/dg-v4/en/concepts/JSON.md
  - https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/JSON.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/direct/doc/dg-v4/ru/llms.txt

# Формат JSON

Взаимодействие с API Яндекс Директа в формате JSON.

Преимущество JSON в большей компактности по сравнению с SOAP/XML, а также в скорости анализа запросов на стороне Яндекс Директа.

Во многих языках программирования существуют модули и библиотеки для работы с JSON. Ниже перечислены рекомендуемые модули и библиотеки для популярных языков.

- **Perl**: модуль [JSON](http://search.cpan.org/~makamaka/JSON-2.90/lib/JSON.pm).
- **PHP**: встроенная поддержка JSON началась в версии 5.2.0. В предыдущих версиях можно использовать библиотеку [Services_JSON](http://pear.php.net/package/Services_JSON).
- **Python**: модуль [json](https://docs.python.org/library/json.html).

## Запросы JSON {#json-request}

Запросы в формате JSON передаются методом HTTP POST на следующий адрес:

**Версия 4**

 
```httpget
https://api.direct.yandex.ru/v4/json/ 
```

**Версия Live 4**

```httpget
https://api.direct.yandex.ru/live/v4/json/
```

Запрос всегда содержит ключ `method` с именем вызываемого метода и в большинстве случаев ключ `param` (см. пример ниже). Некоторые методы не имеют входных параметров, и для них ключ `param` не требуется.

## Пример запроса JSON

Пример демонстрирует вызов метода `GetClientInfo`. В ключе `param` передается массив из одной строки, которая является логином пользователя. Ключ `locale` устанавливает русский язык для ответных сообщений. Ключ `token` — авторизационный токен, выданный OAuth-сервером Яндекса с согласия пользователя (подробнее см. [Авторизационные токены](https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/auth-token.md)).

```javascript
POST /v4/json/ HTTP/1.1
Host: api.direct.yandex.ru
Content-Length: 204
Content-Type: application/json; charset=utf-8

{
    "method": "GetClientInfo",
    "param": ["agrom"],
    "locale": "ru",
    "token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"
}
```

## Язык ответных сообщений {#locale}

Запрос может содержать ключ `locale`, указывающий язык ответных сообщений. На выбранном языке возвращаются статусы кампаний, статусы баннеров и сообщения об ошибках. Возможны следующие значения `locale`:

- ru — русский;
- en — английский.

Если ключ `locale` отсутствует, подразумевается английский язык.

## Сообщения об ошибках {#errors}

При возникновении ошибок обработка запроса прекращается и возвращается сообщение об ошибке в формате JSON. Пример сообщения показан ниже.

```javascript
{
    "error_detail":"Метод HTTP запроса должен быть POST",
    "error_str":"Неверный метод запроса",
    "error_code":512
}
```

Параметр `error_code` содержит код ошибки, `error_str` — краткое описание ошибки, `error_detail` — дополнительные пояснения, если имеются. Краткое описание и дополнительное пояснение могут выводиться на разных языках, что определяется параметром [locale](https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/JSON.md#locale), указанным при вызове метода.

## Узнайте больше

- [Описание формата JSON](http://www.json.org/json-ru.html)

