Документация по формату вызова и ответа API
Обратите внимание: Информация в статье не заменяет базовых знаний, необходимых для использования функционала API. Статья рассчитана на опытных пользователей.
Протокол
Функции АПИ доступны только по HTTPS-протоколу (SSL)
PHP SDK
Вы можете воспользоваться нашим SDK
Авторизация
Отдельной авторизации не требуется.
Для авторизации необходимо при каждом запросе передать секретный ключ как параметр key POST-запроса. Подробнее о том, как сгенерировать секретный ключ API, читайте в отдельной статье.
Действие
Действие передается как параметр action POST-запроса
Параметры действия
Параметры для действия передаются в формате JSON, закодированного в base64 в параметре params POST-запроса
Примечание
Импорт или экспорт данных по API доступны только на платных тарифах GetCourse. На ознакомительном тарифе этот функционал закрыт.
Формат ответа
Ответ возвращается в формате JSON:
{ "success":"true/false", // результат вызова "action":"вызванное действие", "result":{ "deal_id":"уникальный id заказа", "deal_number":"номер заказа", "success":"true/false", // результат действия "user_id":"id пользователя", "user_status":"статус пользователя", "payment_link":"ссылка на страницу оплаты", "error_message":"сообщение об ошибке", "error":"true/false", // наличие ошибок } }
Импорт пользователей
Метод предназначен для импорта данных, а не для оперативного управления объектами!
Импорт пользователя находится по адресу:
https://{account_name}.getcourse.ru/pl/api/users
Для добавления пользователя необходимо передать действие add, секретный ключ и параметры добавляемого пользователя:
curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "https://{account_name}.getcourse.ru/pl/api/users" -d "action=add&key={secret_key}¶ms={params}"
Параметры пользователя:
base64_encode { "user":{ "email":"email", "phone":"телефон", "first_name":"имя", "last_name":"фамилия", "city":"город", "country":"страна", "group_name":[ // для добавления пользователя в группы "Группа1", // простое добавление в групп ["Группа2", "2018-08-01 21:21"], // добавление в группу с указанием произвольного момента ["Группа4", "2018-08-02"] ], "addfields":{"Доп.поле1":"значение","Доп.поле2":"значение"} // для добавления дополнительных полей пользователя }, "system":{ "refresh_if_exists":0, // обновлять ли существующего пользователя 1/0 да/нет "partner_email":"email партнера (для пользователя)*" }, "session":{ "utm_source":"", "utm_medium":"", "utm_content":"", "utm_campaign":"", "utm_group":"", "gcpc":"", "gcao":"", "referer":"" } }
Если в системе не существует пользователя с указанным email — будет создан новый пользователь.
Если пользователь существует и system.refresh_if_exists == 1 — данные пользователя будут обновлены, а список его групп дополнен группами, указанными в параметре user.group_name. Если этот флаг не установлен, то никакие данные пользователя изменены не будут.
Данные из объекта session будут зафиксированы как параметры регистрации нового пользователя. Если происходит обновление данных (только при system.refresh_if_exists == 1), то предыдущие будут заменены.
Для пользователя можно установить партнера двумя разными способами:
а) с помощью параметра system.partner_email;
б) с помощью параметра session.gcpc (имеет более высокий приоритет).
Если указанный для создаваемого/обновляемого пользователя партнер существует, то пользователь в системе будет помечен как реферал этого партнера. Если пользователь-партнер не существует — будет возвращена ошибка. Если пользователь-партнер существует, но не является партнером, то указанный пользователь автоматически получит статус партнера.
Управление группами пользователя
Метод предназначен для импорта данных, а не для оперативного управления объектами!
Импорт информации о группах пользователя находится по адресу:
https://{account_name}.getcourse.ru/pl/api/users
Для обновления информации о группах пользователя необходимо передать действие update, секретный ключ и параметры пользователя:
Параметры пользователя:
base64_encode { "user":{ "id":"id пользователя", "group_name": ["Группа 1", "Группа 2"] // список групп } }
В результате выполнения запроса пользователь будет состоять во всех группах, указанных в списке group_name. Если ранее пользователь состоял в каких-либо группах, не указанных в group_name — он будет удален из этих групп.
Импорт заказов
Метод предназначен для импорта данных, а не для оперативного управления объектами!
Импорт сделки находится по адресу:
https://{account_name}.getcourse.ru/pl/api/deals
Для добавления сделки необходимо передать действие add, секретный ключ, параметры сделки, параметры пользователя, для которого создается сделка:
curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "https://{account_name}.getcourse.ru/pl/api/deals" --data "action=add&key={secret_key}¶ms={params}"
base64_encode { "user":{ // как в импорте пользователя }, "system":{ "refresh_if_exists":0, // обновлять ли существующего пользователя 1/0 да/нет "partner_email":"email партнера (для пользователя)*", "multiple_offers":0, // добавлять несколько предложений в заказ 1/0 "return_payment_link":0, // возвращать ссылку на оплату 1/0 "return_deal_number":0 // возвращать номер заказа 1/0 }, "session":{ // как в импорте пользователя }, "deal":{ "deal_number":"номер заказа", "offer_code":"уникальный код предложения", "product_title":"наименование предложения", "product_description":"описание предложения", "quantity":1, // количество "deal_cost":"сумма заказа", "deal_status":"код статуса заказа", "deal_is_paid": "нет", // оплачен да/нет 1/0 "manager_email":"email менеджера", "deal_created_at":"дата заказа", "deal_finished_at":"дата оплаты/завершения заказа", "deal_comment":"комментарий", "payment_type":"тип платежа из списка", "payment_status":"статус платежа из списка", "partner_email":"email партнера (для заказа)", "addfields":{"Доп.поле1":"значение","Доп.поле2":"значение"}, // для добавления дополнительных полей заказа "deal_currency":"код валюты заказа" // например, "EUR", параметр не является обязательным, если он не используется в запросе - валютой заказа будут рубли (RUB) "funnel_id":"ID доски продаж", "funnel_stage_id":"ID этапа на доске продаж" } }
Для импорта сделки обязательно должен существовать пользователь — владелец сделки.
Если переданный пользователь не существует — он создается.
Если существует пользователь с указанным email, то он используется как владелец заказа.
Если передан параметр system.refresh_if_exists == 1 И пользователь существует, то его данные будут обновлены аналогично операции импорта пользователя (за исключением объекта session — см. далее)
При импорте сделки проверяется, существует ли сделка с указанным номером.
В зависимости от этого создается новая сделка, или обновляется существующая.
Если флаг system.multiple_offers == 1 и обновляется существующий заказ, то переданные позиции в сделке добавляются к существующим, а не заменяют их.
Параметр system.refresh_if_exists никак не влияет на создание/обновление сделки (этот параметр используется только для пользователей!).
Объект session при импорте сделки содержит UTM-параметры, которые фиксируются как контекст создания заказа.
Дополнительно, если при импорте сделки происходит создание нового пользователя, то объект session используется так же и как контекст регистрации пользователя. Однако, при обновлении данных пользователя при импорте сделки объект session используется только для сделки, но не для пользователя.
Заказ может иметь указание на партнера, отличное от партнера пользователя. Партнер заказа может быть установлен двумя способами:
а) с помощью параметра deal.partner_email;
б) с помощью параметра session.gcpc (имеет более высокий приоритет).
Если указанный для сделки партнер существует, то для нее будет установлен этот партнер.
Если пользователь-партнер не существует — будет возвращена ошибка.
Если пользователь-партнер существует, но не является партнером, то указанный пользователь автоматически получит статус партнера.
Обратите внимание:
1. Минимально необходимыми параметрами для создания нового заказа являются:
- уникальный код предложения* или наименование предложения
- сумма заказа
- email пользователя
Для редактирования существующего заказа — те же параметры, но также:
- номер заказа
- параметр refresh_if_exists = 1
* - находится в настройках необходимого предложения:

Изменение статуса заказа (сделки)
Статус заказа можно изменить по адресу:
https://{account_name}.getcourse.ru/pl/api/deals
Для изменения статуса сделки необходимо передать действие add, секретный ключ, и следующий набор параметров сделки и пользователя:
base64_encode { "user":{ "email":"email@yopmail.com" }, "deal":{ "deal_number":"13667463", "deal_status":"new" } }
Коды статусов заказа (deal_status)
- new
- payed
- cancelled
- false
- in_work
- payment_waiting
- part_payed
- waiting_for_return
- not_confirmed
- pending
Коды статусов платежей (payment_status)
- expected
- accepted
- returned
- tobalance
- frombalance
- returned_to_balance
Коды методов оплаты (payment_type)
- 2CO — 2Checkout
- ALFA — Альфа-банк
- BILL — Безналичный расчёт
- CARD — Банковской картой
- CARD_TERMINAL — Банковская карта через терминал
- CASH — Наличные
- cloud_payments — CloudPayments
- cloud_payments_kz — CloudPaymentsKz
- fondy — Fondy
- hutki_grosh — Хуткi Грош
- INTERNAL — Внутренний баланс
- justclick — Justclick
- kvit — Квитанция в банк
- OTHER — Другое
- payanyway — PayAnyWay
- PAYPAL — PayPal
- perfect_money — Perfect Money
- PERFECTMONEY — Perfect Money
- QIWI — Qiwi (устаревшее)
- qiwi_kassa — QIWI Касса
- QUICKTRANSFER — Системы быстрых переводов
- RBK — РБК Деньги
- rbkmoney — РБК Деньги (устаревшее)
- rbkmoney_new — РБК Деньги (2018 г)
- ROBOKASSA — Робокасса
- SBER — Sberbank
- sberbank — Сбербанк эквайринг
- tinkoff — Тинькофф Банк
- tinkoffcredit — Тинькофф Кредит
- VIRTUAL — Бонусный счет
- walletone — Единая касса
- wayforpay — WayForPay
- WEBMONEY — Webmoney
- yandex_kassa — Яндекс.Касса
- YANDEXMONEY — Яндекс.Деньги
- ZPAYMENT — Z-payment
- ebanx — EBANX
- swedbank — Swedbank
Коды валют
- RUB
- USD
- EUR
- GBP
- BYR
- BYN
- KZT
- UAH
- AUD
- DKK
- CHF
- SEK
- ZAR
- AMD
- RON
- BRL
- ILS
- MYR
- SGD
- KGS
- CAD
- MXN
- JPY
- UZS
- PLN
- AZN
- AED
- TRY
- INR
- RSD
- CZK
- MNT
- NZD
Обратите внимание: Если заказ имеет статус «Завершён» и вы меняете статус при помощи API на любой другой, то активные покупки, связанные с заказом, не будут отменены. То есть без изменения статуса покупки у пользователя сохранится доступ, выданный этой покупкой.
При изменении статуса заказа с помощью API на "Завершен" (payed) в заказе будет создан платеж, так же как при передаче параметра deal_is_paid.
Чтобы забирать доступ по покупке, рекомендуем использовать другой способ:
1. Создайте или используйте существующее дополнительное поле заказа.
2. Затем передайте по API желаемый статус заказа в это дополнительное поле.
3. После этого при помощи настроенного процесса автоматически измените статус заказа в соответствии со значением дополнительно поля.
В результате связанные с заказом покупки будут отменены и пользователь потеряет доступ.
Пример добавления пользователя (PHP)
<?php $accountName = 'XXXXXX'; $secretKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $user = []; $user['user']['email'] = 'xxxxx@xxxxx.xxx'; $user['user']['phone'] = '+74951234567'; $user['user']['first_name'] = 'Василий'; $user['user']['last_name'] = 'Пупкин'; $user['user']['city'] = 'Москва'; $user['user']['country'] = 'Россия'; $user['user']['group_name'] = ['Группа1', 'Группа2']; $user['system']['refresh_if_exists'] = 1; $json = json_encode($user); $base64 = base64_encode($json); if( $curl = curl_init() ) { curl_setopt($curl, CURLOPT_URL, 'https://' . $accountName . '.getcourse.ru/pl/api/users'); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, 'action=add&key=' . $secretKey . '¶ms=' . $base64); $out = curl_exec($curl); echo $out; curl_close($curl); } else { echo 'Failed initialization'; } ?>
Export API
Export API предназначен для периодической выгрузки данных из Геткурса для анализа.
Геткурс только предоставляет данные и не влияет на возможности обработки этих данных во внешних системах.
Export API не предназначен для оперативной передачи данных отдельно по каждому объекту.
Находится по адресу:
https://{account_name}.getcourse.ru/pl/api/account
Какие данные можно выгружать через API:
Структура данных для каждого объекта соответствует тому, что выгружается в CSV с помощью интерфейса экспорта в соответствующих разделах
Обратите внимание:
— экспорт по API производится в один поток, т.е. не предусмотрена возможность обработки запроса на формирование нового файла экспорта пока не закончено формирование файла экспорта по предыдущему запросу;
— в рамках одного аккаунта за 2 часа может быть обработано не более 100 запросов, относящихся к методам export API.
Экспорт пользователей
Для получения данных нужно:
1. Отправить действие users, секретный ключ и хотя бы один фильтр объектов для экспорта:
«https://{account_name}.getcourse.ru/pl/api/account/users?key={secret_key}&....»
Вместо «....» добавляются необходимые параметры фильтра (см. далее).
Это действие запускает задачу на сбор данных и возвращает ключ экспорта в JSON-строке, который понадобится для проверки статуса готовности и для получения данных.
2. Отправить действие exports, ключ экспорта и секретный ключ:
«https://{account_name}.getcourse.ru/pl/api/account/exports/{export_id}?key={secret_key}»
Это действие проверяет статус готовности и возвращает поток данных в JSON-строке.
Параметры фильтров:
- Дата создания пользователей
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Статус пользователя
- status=active/in_base
Ознакомиться со списком экспортируемых полей можно в отдельной статье.
Экспорт групп
Данные можно получить одним из способов:
1.1 Для получения списка всех групп пользователей необходимо отправить действие groups и секретный ключ:
«https://{account_name}.getcourse.ru/pl/api/account/groups?key={secret_key}»
Выгружаются следующие данные:
- id — ID группы;
- name — название группы;
- last_added_at — дата и время добавления последнего пользователя в группу в формате «гггг-мм-дд чч-мм-сс». Если пользователей еще не добавляли в группу, значение будет «null».
1.2 Для экспорта данных пользователей по группе используйте ID группы при отправке запроса в формате:
«https://{account_name}.getcourse.ru/pl/api/account/groups/{ID}/users?key={secret_key}&....»
Параметр {ID} замените на ID группы. Вместо «....» добавьте хотя бы один из параметров фильтра (см. далее).
Это действие запускает задачу на сбор данных и возвращает ключ экспорта в JSON-строке, который понадобится для проверки статуса готовности и для получения данных.
Списк экспортируемых полей находится в отдельной статье. Дополнительно к ним выгружаются следующие поля:
- ID группы;
- Добавлен в группу - в формате «гггг-мм-дд чч-мм-сс».
2. Далее отправьте действие exports, ключ экспорта и секретный ключ:
«https://{account_name}.getcourse.ru/pl/api/account/exports/{export_id}?key={secret_key}»
Это действие проверяет статус готовности и возвращает поток данных в JSON-строке.
Параметры фильтров:
- Дата создания пользователей
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Статус пользователя
- status=active/in_base
- Дата добавления в группу (дополнение к фильтру group_id)
- added_at[from]=YYYY-MM-DD
- added_at[to]=YYYY-MM-DD
Экспорт заказов
Для получения данных нужно:
1. Отправить действие deals, секретный ключ и хотя бы один фильтр объектов для экспорта
«https://{account_name}.getcourse.ru/pl/api/account/deals?key={secret_key}&....»
Вместо «....» добавляются необходимые параметры фильтра (см. далее).
Это действие запускает задачу на сбор данных и возвращает ключ экспорта в JSON-строке, который понадобится для проверки статуса готовности и для получения данных.
2. Отправить действие exports, ключ экспорта и секретный ключ:
«https://{account_name}.getcourse.ru/pl/api/account/exports/{export_id}?key={secret_key}»
Это действие проверяет статус готовности и возвращает поток данных в JSON-строке.
Параметры фильтров:
- Дата создания заказов
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Статус заказа
- status=deal_status
- Дата оплаты заказа
payed_at[from]=YYYY-MM-DD
payed_at[to]=YYYY-MM-DD
- Дата завершения заказа
- finished_at[from]=YYYY-MM-DD
- finished_at[to]=YYYY-MM-DD
- Дата изменения статуса заказа
- status_changed_at[from]=YYYY-MM-DD
- status_changed_at[to]=YYYY-MM-DD
Список возможных статусов заказа:
- new
- payed
- cancelled
- in_work
- payment_waiting
- part_payed
- waiting_for_return
- not_confirmed
- pending
Экспорт платежей
Для получения данных нужно:
1. Отправить действие payments, секретный ключ и хотя бы один фильтр объектов для экспорта
«https://{account_name}.getcourse.ru/pl/api/account/payments?key={secret_key}&....»
Вместо «....» добавляются необходимые параметры фильтра (см. далее).
Это действие запускает задачу на сбор данных и возвращает ключ экспорта в JSON-строке, который понадобится для проверки статуса готовности и для получения данных.
2. Отправить действие exports, ключ экспорта и секретный ключ:
«https://{account_name}.getcourse.ru/pl/api/account/exports/{export_id}?key={secret_key}»
Это действие проверяет статус готовности и возвращает поток данных в JSON-строке.
Параметры фильтров:
- Дата создания платежей
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Статус платежа
- status=deal_status
- Дата изменения статуса платежа
status_changed_at[from]=YYYY-MM-DD
status_changed_at[to]=YYYY-MM-DD
Список возможных статусов платежа:
- expected
- accepted
- returned
- tobalance
- frombalance
- returned_to_balance
Вы можете ознакомиться со списком экспортируемых полей в статье.
Получение справочников дополнительных полей пользователя и дополнительных полей заказа
Находится по адресу
https://{account_name}.getcourse/pl/api/account/fields
Для получения списка полей необходимо передать действие key (секретный ключ API аккаунта) и action (должен быть указан «Get»):
curl -i -H «Accept: application/json; q=1.0, */*; q=0.1» «https://{account_name}.getcourse.ru/pl/api/account/fields» -d «action=get&key={secret_key}»
Обратите внимание: если в вашем аккаунте настроен принудительный редирект с системного адреса аккаунта «ваш_аккаунт.getcourse.ru» на добавленный домен «ваш_домен.ru», и вы хотите использовать методы API в формате cURL — необходимо использовать домен «ваш_домен.ru» вместо «ваш_аккаунт.getcourse.ru» в адресе, по которому происходит запрос
Лимиты Import API
На создание новых объектов по API предусмотрены лимиты. На изменение уже созданных объектов эти лимиты не распространяются.
⚠️ Обратите внимание! Эти лимиты предназначены для создания объектов с помощью API и не влияют на экспорт данных с помощью ExportAPI или операций «вызвать URL» в процессах (вебхуков).
Тариф | Кол-во пользователей | Добавление пользователей в месяц | Добавление заказов в месяц | Добавление платежей в месяц |
Старт | 1 000 | 2 000 | 1 000 | 100 |
Любитель | 2 000 | 3 000 | 2 000 | 150 |
Профессионал | 5 000 | 8 000 | 5 000 | 200 |
Эксперт | 10 000 | 15 000 | 10 000 | 300 |
Продюсер | 17 000 | 22 000 | 17 000 | 400 |
Гуру | 25 000 | 35 000 | 25 000 | 500 |
Полководец | 50 000 | 60 000 | 50 000 | 750 |
Бизнес | 100 000 | 100 000 | 100 000 | 1 000 |
VIP | 200 000 | 200 000 | 200 000 | 1 500 |
Tesla | 300 000 | 300 000 | 300 000 | 2 000 |
S400 | 400 000 | 400 000 | 400 000 | 2 000 |
На платформе есть возможность индивидуального согласования лимитов. Для уточнения информации обратитесь в поддержку по ссылке.
Статистика использования API
Чтобы учесть лимиты при загрузке новых данных, отслеживайте статистику использования API.
Для этого:
- Перейдите на страницу с адресом вида:
- http://ВАШ_АККАУНТ.getcourse.ru/saas/account/api — для системного адреса аккаунта;
- http://ВАШ_ДОМЕН/saas/account/api — для привязанного домена.
- Нажмите «Статистика использования API».

В статистике отображается ежемесячная информация о создании объектов с помощью API.
