API Tier1.shop
Подключите свой сервис или ИИ-агента: регистрация, тарифы, заказы, ссылки и статус оплаты через один API. Данные клиента доступны только по его отзывному ключу.
https://tier1.shop/wp-json/tier1-api/v1С чего начать
Создайте ключ
Откройте «API и подключения» в кабинете или запросите ссылку создания ключа по email через POST /api-key-requests.
Подтвердите email
Агент вызывает POST /registration-intents. Вы переходите по письму и подтверждаете адрес; только после этого создаются аккаунт и ключ. Telegram можно добавить позже.
Первый заказ — пять шагов
- Выберите тариф.
GET /catalog/tariffsиGET /balancesпокажут актуальные цены и остатки. - Подтвердите состав.Согласуйте с агентом количество, URL, анкоры и валюту до создания checkout.
- Получите ссылку на оплату.
POST /checkout-intentsвернёт одноразовый URL; оплата происходит только на сайте. - Проверьте оплату.
GET /checkout-intents/{id}покажет статус и номер покупки WooCommerce. - Откройте ссылки.
GET /orders/by-wc/{id}найдёт внутренние заказы;placement_progressпокажет выполнение.
/orders/by-wc/{id}, для внутреннего ID — /orders/{id}.Авторизация
Передавайте ключ в HTTPS-заголовке. Не вставляйте его в адрес ссылки, общедоступный промпт или логи. Ключ можно отозвать в кабинете; его полный текст показывается только при создании.
Authorization: Bearer t1c_sk_ВАШ_КЛЮЧРазрешения ключа (scopes)8
profile:readПрофиль и состояние подключенийbalance:readБалансы услуг и кошельковorders:readПросмотр заказовlinks:readПросмотр ссылокcatalog:readКаталоги и тарифыorders:writeМассовое заполнение и отправка заказовlinks:writeURL, анкоры, окружающий текст и отправка в работуcheckout:createСоздание защищённых ссылок на оплатуКлюч не даёт агенту напрямую списывать деньги с кошелька. Для изменяющих запросов нужен случайный Idempotency-Key длиной 8–128 символов. Если ответ потерян, повторите тот же запрос с тем же ключом; для нового действия создайте новый.
Методы API
Методы собраны в 9 группах. Откройте нужный для параметров и примера ответа; полный машинный контракт — в OpenAPI JSON.
Обнаружение 2
GET/capabilitiesВозможности API и актуальные ссылки подключения.
Пример ответа
{
"name": "Tier1.shop API",
"api_enabled": true,
"public_registration": true
}GET/openapi.jsonПолный контракт OpenAPI 3.1.
Пример ответа
{
"openapi": "3.1.0",
"info": {
"title": "Tier1.shop Client API"
}
}Регистрация 3
POST/registration-intentsНачать регистрацию нового клиента с обязательным подтверждением email.
JSON запроса
{
"email": "client@example.com",
"telegram_username": "@client",
"locale": "ru",
"issue_api_key": true
}Пример ответа
{
"accepted": true,
"request_id": "…",
"status_token": "…",
"status": "pending_email",
"expires_in": 86400
}GET/registration-intents/{id}?status_token={token}Проверить состояние конкретной регистрации.
Пример ответа
{
"status": "pending_email|email_verified|expired",
"email_verified": false,
"telegram_status": "not_requested|pending_bot_message|verified"
}POST/api-key-requestsЗапросить одноразовую ссылку создания ключа для существующего аккаунта.
JSON запроса
{
"email": "client@example.com",
"name": "Мой агент"
}Пример ответа
{
"accepted": true,
"next_action": "…"
}Аккаунт 2
GET/profileПрофиль, подтверждение email и все Telegram-каналы.
Пример ответа
{
"account": {
"email": "client@example.com",
"email_verified": true,
"telegram_username": "@client",
"telegram_usernames": [
"@client",
"@manager"
]
}
}GET/balances?geo=allКошельки ₽/$ и неиспользованные услуги RU/intl.
Пример ответа
{
"wallets": {
"rub": {
"currency": "RUB",
"amount_minor": 0
},
"usd": {
"currency": "USD",
"amount_minor": 0
}
},
"service_balances": []
}Заказы 3
GET/orders?geo=all&page=1&per_page=20Постраничный список заказов кабинета. per_page ограничен 50: продолжайте по next_page.
Пример ответа
{
"orders": [
{
"cabinet_order_id": 123,
"wc_order_id": 456,
"placement_progress": {
"completed": 2,
"total": 3,
"fully_placed": false
}
}
],
"page": 1,
"per_page": 20,
"has_more": false,
"next_page": null
}GET/orders/{id}Один заказ и ссылки по cabinet_order_id, не по номеру WooCommerce из письма.
Пример ответа
{
"order": {
"cabinet_order_id": 123,
"wc_order_id": 456,
"geo": "ru"
},
"links": []
}GET/orders/by-wc/{id}Все внутренние заказы и ссылки по принадлежащему клиенту номеру WooCommerce.
Пример ответа
{
"wc_order_id": 456,
"count": 2,
"orders": [
{
"order": {
"cabinet_order_id": 123
},
"links": []
}
]
}Ссылки 1
GET/links?geo=all&page=1&per_page=20Ссылки с фильтрами geo, status и link_type; продолжение по next_page.
Пример ответа
{
"links": [],
"page": 1,
"per_page": 20,
"total": 0,
"has_more": false,
"next_page": null
}Каталог 2
GET/catalog/tariffs?geo=ruАктуальные товары, цены, валюты и точный состав слотов.
Пример ответа
{
"geo": "ru",
"currency": "RUB",
"tariffs": [
{
"product_id": 3708,
"name": "…",
"price": {
"amount_minor": 200000
}
}
]
}GET/catalog/burzh-igamingАнонимизированные iGaming-доноры, метрики, цена и свободные слоты.
Пример ответа
{
"donors": [],
"count": 0,
"price": {
"currency": "USD",
"amount_minor": 9400
}
}Черновики 3
PATCH/links/{id}Изменить URL, анкор, окружающий текст или расписание, не отправляя ссылку в работу.
JSON запроса
{
"url": "https://example.com/page",
"anchor": "пример",
"context_text": "Окружающий текст с анкором пример.",
"scheduled_at": "2026-09-01T09:00:00Z"
}Пример ответа
{
"link": {
"id": 456,
"status": "awaiting_confirmation"
}
}PUT/links/{id}Алиас PATCH для клиентов, которые отправляют частичный набор изменяемых полей.
JSON запроса
{
"anchor": "новый анкор"
}Пример ответа
{
"link": {
"id": 456,
"status": "awaiting_confirmation"
}
}POST/orders/{id}/bulk-updateМассово заполнить строки заказа без отправки в работу.
JSON запроса
{
"links": [
{
"url": "https://example.com/a",
"anchor": "ключ"
},
{
"url": "https://example.com/b",
"anchor": "другой ключ"
}
]
}Пример ответа
{
"updated": 2,
"errors": []
}Отправка 2
POST/links/{id}/submitПосле подтверждения клиента отправить одну готовую ссылку в работу.
JSON запроса
[]Пример ответа
{
"link": {
"id": 456,
"status": "in_progress"
}
}POST/orders/{id}/submit-allПосле подтверждения клиента отправить все готовые строки заказа.
JSON запроса
[]Пример ответа
{
"submitted": 2,
"skipped": 0
}Оплата 2
POST/checkout-intentsСоздать защищённую одноразовую ссылку на штатный checkout; деньги не списываются.
JSON запроса
{
"geo": "ru",
"items": [
{
"product_id": 3708,
"quantity": 1
}
],
"links": [
{
"type": "yearly",
"url": "https://example.com/page",
"anchor": "пример"
}
]
}Пример ответа
{
"intent_id": "32-символьный ID",
"checkout_url": "https://tier1.shop/?t1c_agent_checkout=…",
"expires_at": "…",
"summary": {
"currency": "RUB",
"total_minor": 200000
},
"payment_preview": {
"wallet_available_minor": 0,
"nominal_wallet_gap_minor": 200000,
"final_amount_at_checkout": true
}
}GET/checkout-intents/{id}Проверить оплату и появление заказов кабинета по intent_id без повторного открытия одноразовой ссылки.
Пример ответа
{
"intent_id": "…",
"state": "paid",
"wc_order_id": 456,
"cabinet_order_ids": [
123
],
"fulfilment_pending": false
}Если запрос не прошёл
Списки отдают максимум 50 строк за страницу. Если has_more=true, переходите к next_page. Предварительная сумма в API не заменяет итоговую сумму и доступные способы оплаты на checkout.
Нужен MCP, а не REST API?
Тот же отзывной ключ подходит для MCP-клиента с HTTP-заголовками. Можно также подключиться через OAuth, если приложение это поддерживает.
Открыть инструкцию MCP



