На главную

Первый вызов API за 5 минут

3 шага от регистрации до первого бизнес-запроса

Среднее время: 5 минут

Шаг 1 Регистрация и создание приложения

~3 минуты

1.1 Зарегистрируйтесь на портале

Создайте аккаунт на портале разработчика — в нём будут жить ваши приложения и ключи доступа.

Создать аккаунт
Что вводить:
  • Email — рабочий адрес, на него придёт письмо для подтверждения
  • Пароль — минимум 8 символов: латинские буквы, цифры и спецсимвол
  • Подтверждение пароля — повторите тот же пароль
  • Согласие на обработку персональных данных

1.2 Подтвердите email

На вашу почту придёт письмо от портала. Перейдите по ссылке в письме — это активирует аккаунт.

Нет письма? Проверьте папку «Спам»: доставка занимает до 2–3 минут.

1.3 Заполните профиль компании

Профиль компании нужен, чтобы создавать приложения и работать с API: данные организации используются в договоре и в обращениях в поддержку. При первом входе на портал справа сама откроется панель «Настройки компании». Закрыть её, пока профиль не заполнен, нельзя — это требование портала, а не ошибка.

Заполнить профиль
Что подготовить:
  • Страна
  • Наименование юридического лица
  • Тип компании
  • ИНН, а для российских компаний — ещё и ОГРН
  • Email и телефон контактного лица по вопросам интеграции
  • Мессенджер для связи и имя пользователя в нём
  • Планируемое количество ресторанов для интеграции

Пока профиль не заполнен, кнопка «Создать приложение» остаётся неактивной.

1.4 Создайте приложение

Вернитесь на портал и нажмите «Создать приложение» в разделе «Мои приложения».

Создать приложение
Обязательные поля:
  • Название — например, «Моя интеграция»
  • Категория — выберите подходящую из списка
  • Тип приложения — укажите свой вариант
  • Краткое описание — одно-два предложения о вашей интеграции

Необязательные: подробное описание, возможности, логотип (до 10 МБ).

Client Secret показывается только один раз. Сразу после сохранения приложения система покажет Client Secret. Скопируйте его и сохраните в надёжном месте — менеджере паролей или .env-файле: закрыв окно, вы больше его не увидите. Если окно не появилось, сбросьте Client Secret в карточке приложения.

1.5 Получите API-ключ в iikoWeb

API-ключ создаётся в iikoWeb и открывает доступ к данным организации.

Путь в iikoWeb: Интеграции → API-ключи → Создать ключ

Пошаговая инструкция: Как получить API-ключ

После шага 1 у вас должно быть:
  • appId — виден в карточке приложения на портале
  • clientSecret — секретный ключ приложения, показывается один раз при создании
  • apiKey — API-ключ организации из iikoWeb; в старых инструкциях назывался apiLogin
Если что-то пошло не так
Проблема Причина Решение
«Email уже зарегистрирован» Аккаунт с таким адресом уже существует Войдите через форму входа или восстановите пароль
Кнопка «Создать приложение» неактивна Не подтверждён email или не заполнен профиль компании Перейдите по ссылке из письма и заполните панель «Настройки компании» — её открывает портал при входе
Панель «Настройки компании» открылась сама и не закрывается Профиль компании ещё не заполнен — это обязательный шаг перед созданием приложения Заполните поля со звёздочкой и нажмите «Сохранить» — панель закроется сама. Вернуться к ней потом можно кнопкой «Заполнить профиль»
Не приходит письмо Письмо попало в спам или задержалось Проверьте папку «Спам» и подождите 2–3 минуты

Шаг 2 Получение JWT-токена

~1 минута

JWT-токен — временный ключ сессии для запросов к API. Срок жизни — 1 час, refresh-токена нет: после истечения запросите новый тем же способом. В каждом запросе к API нужен заголовок Authorization: Bearer {token}.

Эндпоинт

POST https://api-ru.iiko.services/api/v2/access_token

Тело запроса — три значения из шага 1: appId, clientSecret и apiKey.

// Получить JWT-токен
curl -X POST "https://api-ru.iiko.services/api/v2/access_token" \
  -H "Content-Type: application/json" \
  -d '{"appId":"{your_appId}","clientSecret":"{your_clientSecret}","apiKey":"{your_apiKey}"}'

// {
//   "token": "eyJhbGciOiJIUzI1NiIs...",
//   "correlationId": "abc-123-def"
// }
# Получить JWT-токен
import requests

url = "https://api-ru.iiko.services/api/v2/access_token"
payload = {
    "appId": "{your_appId}",
    "clientSecret": "{your_clientSecret}",
    "apiKey": "{your_apiKey}"
}

response = requests.post(url, json=payload)
print(response.json()["token"])
// Получить JWT-токен
const response = await fetch(
  "https://api-ru.iiko.services/api/v2/access_token",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      appId: "{your_appId}",
      clientSecret: "{your_clientSecret}",
      apiKey: "{your_apiKey}"
    })
  }
);
const { token } = await response.json();
// Получить JWT-токен
import java.net.http.*;
import java.net.URI;

var client = HttpClient.newHttpClient();
var body = "{\"appId\":\"{your_appId}\",\"clientSecret\":\"{your_clientSecret}\",\"apiKey\":\"{your_apiKey}\"}";

var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api-ru.iiko.services/api/v2/access_token"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();

var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
// Получить JWT-токен
using System.Net.Http;
using System.Text;

var client = new HttpClient();
var payload = "{\"appId\":\"{your_appId}\",\"clientSecret\":\"{your_clientSecret}\",\"apiKey\":\"{your_apiKey}\"}";
var content = new StringContent(payload, Encoding.UTF8, "application/json");

var response = await client.PostAsync(
    "https://api-ru.iiko.services/api/v2/access_token", content);
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);
Успешный ответ:
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "correlationId": "abc-123-def"
}

Сохраните значение token — оно понадобится на шаге 3.

Если что-то пошло не так
Ошибка HTTP-код Причина Решение
Неверные учётные данные 401 Ошибка в appId, clientSecret или apiKey Проверьте appId и clientSecret в карточке приложения, apiKey — в iikoWeb → Интеграции → API-ключи
Неверный формат запроса 400 Ошибка в JSON или заголовках Проверьте, что отправляете заголовок Content-Type: application/json
Connection refused — Неверный адрес Домен должен быть api-ru.iiko.services

Шаг 3 Первый бизнес-запрос

~1 минута

Организация — это ресторан. Запрос вернёт список всех организаций, к которым у вас есть доступ по API-ключу.

Эндпоинт

POST https://api-ru.iiko.services/api/1/organizations

В заголовке — токен из шага 2, тело запроса — пустой объект: так вернутся все доступные организации.

// Получить список организаций
curl -X POST "https://api-ru.iiko.services/api/1/organizations" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {your_token}" \
  -d '{}'

// {
//   "organizations": [
//     { "id": "...", "name": "..." }
//   ],
//   "correlationId": "..."
// }
# Получить список организаций
import requests

url = "https://api-ru.iiko.services/api/1/organizations"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {your_token}"
}

response = requests.post(url, headers=headers, json={})
data = response.json()

for org in data["organizations"]:
    print(f"ID: {org['id']}, {org['name']}")
// Получить список организаций
const url = "https://api-ru.iiko.services/api/1/organizations";

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer {your_token}"
  },
  body: JSON.stringify({})
});

const data = await response.json();
console.log(data.organizations);
// Получить список организаций
import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api-ru.iiko.services/api/1/organizations"))
    .header("Content-Type", "application/json")
    .header("Authorization", "Bearer {your_token}")
    .POST(HttpRequest.BodyPublishers.ofString("{}"))
    .build();

HttpResponse<String> response = client.send(request,
    HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
// Получить список организаций
using System.Net.Http;
using System.Text;

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,
    "https://api-ru.iiko.services/api/1/organizations");

request.Headers.Add("Authorization",
    "Bearer {your_token}");
request.Content = new StringContent("{}",
    Encoding.UTF8, "application/json");

var response = await client.SendAsync(request);
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);
Успешный ответ:
{
  "organizations": [
    {
      "id": "a1b2c3d4-e5f6-...",
      "name": "My restaurant",
      ...
    }
  ],
  "correlationId": "abc-123-def"
}
  • organizations[].id — UUID организации, нужен в других методах API
  • organizations[].name — название ресторана
  • correlationId — идентификатор запроса: укажите его при обращении в поддержку
Если что-то пошло не так
Ошибка HTTP-код Причина Решение
Токен истёк 401 JWT-токен живёт 1 час Повторите шаг 2 и получите новый токен
Список организаций пуст 200 API-ключ не привязан к организации Привяжите ключ к организации в iikoWeb
Неверный формат запроса 400 Ошибка в заголовках Проверьте заголовок Authorization: Bearer {token}

Поздравляем! Первый вызов iiko API сделан.

Ваше время: —

Дальше можно вызывать любые методы Cloud API — от меню и заказов до лояльности и документов.

Что дальше?