B ByPrice
ДОКУМЕНТАЦИЯ ДЛЯ РАЗРАБОТЧИКОВ

API активации кода

Выбери продукт, отправь запрос на активацию и отслеживай результат. Поля и статусы зависят от продукта.

RESTJSONHTTPS
BASE URLhttps://bypriceactivate.pro
Быстрый старт

01 / Как работать с API

Быстрый старт

01

Выбери продукт

Сначала проверь сток и формат запроса для нужного продукта.

02

Отправь запрос

Передай JSON и код активации. У разных продуктов — разные идентификаторы аккаунта.

03

Проверь результат

Для асинхронных заказов опрашивай status_url: очередь ещё не означает успешную активацию.

Какой метод вызывать

ПродуктЗапросДанные аккаунта
ClaudePOST /api/activateorg_id · Claude UUID
ChatGPTPOST /api/gpt/activatesession / account_id
FortnitePOST /api/fortnite/prepareauthorization_code · Epic
GrokPOST /api/activateorg_id · legacy / grok_cookie · ACA
TelegramPOST /api/telegram/activateQR / SMS
PerplexityPOST /api/perplexity/activateuser_id · Perplexity UUID

Код активации и токены сессии — секреты. Не передавай их в URL, публичных логах и скриншотах.

02 / Claude

Claude Pro / Max

Программная активация кодов: отправляешь code + org_id, получаешь order_id и опрашиваешь статус. Авторизация не нужна — сам код является ключом (как на форме активации).

POST /api/activate

Активировать код. org_id — UUID из claude.ai/settings/account.

ТЕЛО ЗАПРОСА · Claude Pro / Max
{
  "code":   "MAX5-GU75-V37P-1SN4",
  "org_id": "a1b2c3d4-1234-1234-1234-123456789abc"
}
CURL
curl -X POST https://bypriceactivate.pro/api/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"MAX5-GU75-V37P-1SN4","org_id":"a1b2c3d4-1234-1234-1234-123456789abc"}'
201 — принято
{
  "order_id": 6231,
  "status":   "queued",
  "product":  "claude_max_5x",
  "org_id":   "a1b2c3d4-1234-1234-1234-123456789abc",
  "status_url": "/api/activate/6231"
}
ОШИБКИ
400  {"detail": "org_id must be a valid UUID (8-4-4-4-12 lowercase hex)"}
400  {"detail": "code is required"}
400  {"detail": "JSON body required: ..."}
404  {"detail": "code not found"}
409  {"detail": "code already claimed"}      // уже использован
409  {"detail": "out of stock for claude_max_5x — try later, your code stays valid"}
GET /api/activate/{order_id}

Статус активации. Следует за цепочкой ретраев — пока идут повторы, статус running; failed только когда попытки исчерпаны.

CURL
curl https://bypriceactivate.pro/api/activate/6231
ОТВЕТ
{
  "order_id": 6231,
  "status":   "done",       // queued | running | done | failed
  "product":  "claude_max_5x",
  "org_id":   "a1b2c3d4-1234-1234-1234-123456789abc",
  "error":    null          // текст ошибки, если status=failed
}
СТАТУСЫ
queuedВ очереди — ждёт обработки.
runningПокупка идёт (вкл. авто-ретраи).
doneПодписка активирована на org_id. ✅
failedАктивация не удалась. Проверь error и состояние кода перед повторной отправкой.
GET /api/stock

Проверка наличия по всем продуктам. available — сколько активаций можно принять прямо сейчас (та же формула, что и в гейте активации, так что сток не «соврёт»). Удобно вызывать перед POST /api/activate. Авторизация не нужна.

CURL
curl https://bypriceactivate.pro/api/stock
ОТВЕТ
{
  "products": {
    "claude_pro":     { "label": "Claude Pro",     "available": 12, "in_stock": true  },
    "claude_max_5x":  { "label": "Claude Max 5×",  "available": 0,  "in_stock": false },
    "claude_max_5x_us": { "label": "Claude Max 5× (US)", "available": 4, "in_stock": true },
    "claude_max_20x": { "label": "Claude Max 20×", "available": 3,  "in_stock": true  },
    "claude_max_20x_us": { "label": "Claude Max 20× (US)", "available": 2, "in_stock": true }
  },
  "as_of": "2026-05-25T00:00:00Z"
}

available — сколько активаций можно принять прямо сейчас; in_stock = available ≥ 1.

GET /api/stock/{product}

Сток по одному продукту: claude_pro · claude_max_5x · claude_max_5x_us · claude_max_20x · claude_max_20x_us.

CURL
curl https://bypriceactivate.pro/api/stock/claude_max_5x
ОТВЕТ
{
  "product":   "claude_max_5x",
  "label":     "Claude Max 5×",
  "available": 0,
  "in_stock":  false,
  "as_of":     "2026-05-25T00:00:00Z"
}
ОШИБКИ
404  {"detail": "unknown product 'xxx' (known: ['claude_pro', 'claude_max_5x', 'claude_max_5x_us', 'claude_max_20x', 'claude_max_20x_us'])"}

Рекомендуемый поллинг

r = POST /api/activate {code, org_id}     # -> order_id
while True:
    s = GET /api/activate/{order_id}
    if s.status in ("done", "failed"): break
    sleep(5)

Продукт определяется самим кодом (Pro / Max 5× / Max 20×). org_id берётся на claude.ai/settings/account.

03 / Telegram

Telegram Premium

Отдельный JSON API для Telegram Premium на 1 месяц. Bearer-токен не нужен: ключом является сам код активации. После запуска опрашивай статус по возвращённому order_id.

GET /api/telegram/stock

Возвращает остаток чеков Telegram Premium. ready — готовые чеки, in_stock — можно ли принять новую активацию.

CURL
curl https://bypriceactivate.pro/api/telegram/stock
{
  "product": "telegram_premium_1m",
  "enabled": true,
  "target": 10,
  "ready": 10,
  "in_stock": true
}
POST /api/telegram/activate

Запусти активацию через QR или SMS. login_mode принимает qr или sms; для SMS добавь phone.

ТЕЛО ЗАПРОСА
{
  "code": "TG-XXXX-XXXX",
  "login_mode": "qr"
}
CURL
curl -X POST https://bypriceactivate.pro/api/telegram/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"TG-XXXX-XXXX","login_mode":"qr"}'
202 — accepted
{
  "ok": true,
  "product": "telegram_premium_1m",
  "order_id": "tg_example",
  "status": "qr_pending",
  "status_url": "/api/telegram/orders/tg_example",
  "qr_url": "/api/telegram/orders/tg_example/qr.png"
}
ОШИБКИ
400  {"ok":false,"error_code":"INVALID_JSON","detail":"..."}
404  {"ok":false,"error_code":"CODE_NOT_FOUND","detail":"..."}
409  {"ok":false,"error_code":"OUT_OF_STOCK","detail":"..."}
Используй полученный order_id для завершения входа:
GET/api/telegram/orders/{order_id}

Опрос статуса; в ответе есть needs_code, needs_password и completed.

GET/api/telegram/orders/{order_id}/qr.png

Возвращает текущий QR PNG; не кэшируй его.

POST/api/telegram/orders/{order_id}/code
{"phone_code":"12345"}
POST/api/telegram/orders/{order_id}/password
{"password":"..."}
POST/api/telegram/orders/{order_id}/resend

Повторно отправляет SMS-код; тело запроса можно оставить пустым.

ОТВЕТ
{
  "ok": true,
  "order_id": "tg_example",
  "status": "completed",
  "completed": true
}
04 / Claude

Повторная отправка чека Claude

Покупка в App Store завершилась и чек сохранён, но Claude не подтвердил подписку. Этот метод повторно отправляет сохранённый чек на исходный аккаунт — без новой покупки.

Где взять session_key: на claude.ai в DevTools (F12) → Application → Cookies → значение cookie sessionKey. Начинается с sk-ant-sid02-.

POST /api/provider-reclaim

Для provider-кодов используется идемпотентный маршрут повторной доставки. Тот же запрос можно отправить на /api/reclaim; повторного redeem кода не будет.

{
  "code": "CLAUDEPRO-XXXX",
  "session_key": "sk-ant-sid02-...",
  "language": "ru"
}
curl -X POST https://bypriceactivate.pro/api/provider-reclaim \
  -H "Content-Type: application/json" \
  -d '{"code":"CLAUDEPRO-XXXX","session_key":"sk-ant-sid02-...","language":"ru"}'

Статус без повторной отправки: POST /api/provider-reclaim/status с телом {"code":"CLAUDEPRO-XXXX"}.

POST /api/reclaim

Переотправить ранее сохранённый Apple-чек на claude.ai/api/apple-iap/receipt. Авторизация не нужна — код + sessionKey являются ключом.

ТЕЛО ЗАПРОСА
{
  "code":        "TR-XXXX-XXXX-XXXX",
  "session_key": "sk-ant-sid02-r6ZfW1pYQYi..."
}
CURL
curl -X POST https://bypriceactivate.pro/api/reclaim \
  -H "Content-Type: application/json" \
  -d '{
    "code":"TR-XXXX-XXXX-XXXX",
    "session_key":"sk-ant-sid02-r6ZfW1pYQYi..."
  }'
200 — подписка зачислена
{
  "ok":             true,
  "kind":           "success",
  "transaction_id": "220003401686407",
  "product_id":     "com.anthropic.claude.pro.monthly.ios"
}
200 — Claude требует IDV (identity verification)
{
  "ok":      false,
  "kind":    "idv",
  "idv_url": "https://withpersona.com/verify?inquiry-id=...",
  "message": "Claude requires identity verification; open idv_url in browser"
}
ОШИБКИ
400  {"detail": "code is required"}
400  {"detail": "session_key must start with sk-ant-sid02-"}
401  {"detail": "sessionKey is invalid or expired — grab a fresh one..."}
404  {"detail": "code not found"}
409  {"detail": "no receipt — subscription not yet purchased (...)"}
502  {"detail": "transport error talking to claude.ai: ..."}
502  {"detail": "Claude returned unexpected 200 body: ..."}
  • Используй только после завершённой покупки, если подписка ещё не появилась в Claude.
  • sessionKey должен быть от личного аккаунта, не от workspace/team.
  • Похожие кириллические символы, попавшие в ключ при копировании, удаляются автоматически; невалидный ключ вернёт 400.
05 / ChatGPT

ChatGPT · iOS / Direct

Один асинхронный метод для ChatGPT iOS и Direct. Для Direct (Plus / Pro 20×) нужен полный session; для iOS достаточно account_id либо полного session. Продукт определяется кодом.

Данные аккаунта берутся на https://chatgpt.com/api/auth/session.

Исходный session не возвращается в ответах или логах.

POST /api/gpt/activate
ТЕЛО ЗАПРОСА · Direct (Plus / Pro 20×)
{
  "code": "GPT20-ABCD-EFGH-IJKL",
  "session": {
    "user": {"id": "user-xxxxxxxx", "email": "user@example.com"},
    "expires": "2026-12-22T10:00:00.000Z",
    "accessToken": "eyJ..."
  }
}
CURL · Direct
curl -X POST https://bypriceactivate.pro/api/gpt/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"GPT20-ABCD-EFGH-IJKL","session":{"user":{"id":"user-xxxxxxxx","email":"user@example.com"},"expires":"2026-12-22T10:00:00.000Z","accessToken":"eyJ..."}}'
202 — accepted
{
  "ok": true,
  "product": "gpt_pro_20x_direct",
  "order_id": "gpt_0123456789abcdef",
  "status": "queued",
  "status_url": "/api/gpt/orders/gpt_0123456789abcdef",
  "existing": false
}
ТЕЛО ЗАПРОСА · iOS (Plus / Go)

Для iOS-кода вместо полного session можно передать account_id.

{
  "code": "GPTI-ABCD-EFGH-IJKL",
  "account_id": "12345678-1234-4234-9234-123456789abc"
}
CURL · iOS
curl -X POST https://bypriceactivate.pro/api/gpt/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"GPTI-ABCD-EFGH-IJKL","account_id":"12345678-1234-4234-9234-123456789abc"}'
ОШИБКИ
400  {"ok":false,"error_code":"SESSION_INVALID","detail":"..."}
404  {"ok":false,"error_code":"CODE_NOT_FOUND","detail":"..."}
409  {"ok":false,"error_code":"CODE_ALREADY_USED","detail":"..."}
429  {"detail":"Too many requests"}
503  {"ok":false,"error_code":"SERVICE_NOT_READY","detail":"..."}
GET /api/gpt/orders/{order_id}

Статусы заказа: queued → running/pending/review → completed либо failed. После финального статуса поллинг прекращается.

CURL
curl https://bypriceactivate.pro/api/gpt/orders/gpt_0123456789abcdef
ОТВЕТ
{
  "public_id": "gpt_0123456789abcdef",
  "code": "GPT20-ABCD-EFGH-IJKL",
  "status": "completed",
  "provider_status": "completed",
  "stage": "completed",
  "message": "ChatGPT Pro 20× успешно активирован.",
  "account_email": "us***@example.com",
  "quoted_amount_minor": 98000,
  "quoted_currency": "PHP",
  "created_at": 1787482000,
  "updated_at": 1787482050,
  "completed_at": 1787482050
}
POST /api/gpt/orders/{order_id}/resend

Только для завершённых iOS-заказов. Повторно отправляет тот же receipt на исходный аккаунт и не расходует сток. Между запросами действует пауза 30 секунд.

CURL
curl -X POST https://bypriceactivate.pro/api/gpt/orders/gpti_0123456789abcdef/resend
200
{
  "ok": true,
  "order_id": "gpti_0123456789abcdef",
  "status": "completed",
  "resent": true,
  "provider_http_status": 200
}
409 — order is not a completed iOS activation · 429 — cooldown · 502/503 — RevenueCat did not confirm the replay
GET /api/gpt/stock

Возвращает готовность GPT Direct, доступное количество Plus и Pro 20×, рассчитанное по доступному балансу провайдера, и число заказов в работе. Оба значения используют один общий баланс и являются альтернативными максимумами — складывать их нельзя. Вызывай перед активацией.

CURL
curl https://bypriceactivate.pro/api/gpt/stock
ОТВЕТ
{
  "ready": true,
  "enabled": true,
  "error": null,
  "stock_source": "provider_spendable_balance",
  "shared_provider_balance": true,
  "provider_balance_fresh": true,
  "available_by_product": {
    "gpt_plus_direct": 55,
    "gpt_pro_20x_direct": 6
  },
  "products": {
    "gpt_plus_direct": {
      "label": "ChatGPT Plus",
      "available": 55
    },
    "gpt_pro_20x_direct": {
      "label": "ChatGPT Pro 20×",
      "available": 6
    }
  },
  "orders_in_progress": 0
}
06 / Fortnite

Fortnite · V-Bucks / Crew

Используй два шага: сначала проверь ник игрока Epic, затем подтверди покупку. Старый одноступенчатый метод остаётся доступен.

Чтобы получить Epic-код, открой адрес ниже, войди в аккаунт и скопируй authorizationCode из JSON-ответа. Код одноразовый — отправляй его сразу.

https://www.epicgames.com/id/api/redirect?flow=login&responseType=code&clientId=af43dc71dd91452396fcdffbd7a8e8a9
POST /api/fortnite/prepare

Проверяет одноразовый Epic-код и возвращает ник для подтверждения. Код активации не списывается, покупка Apple не запускается. Вызови confirm_url до истечения срока.

ТЕЛО ЗАПРОСА
{
  "code": "VB800-ABCD-EFGH-IJKL",
  "authorization_code": "abcdef0123456789abcdef0123456789"
}

Для партии на один Epic-аккаунт передай массив строк codes вместо code.

CURL
curl -X POST https://bypriceactivate.pro/api/fortnite/prepare \
  -H "Content-Type: application/json" \
  -d '{"code":"VB800-ABCD-EFGH-IJKL","authorization_code":"abcdef0123456789abcdef0123456789"}'
200 — prepared
{
  "ok": true,
  "status": "prepared",
  "order_id": "fn_0123456789abcdefghijklmnopqrstuv",
  "order_token": "0123456789abcdefghijklmnopqrstuvwxyzABCDEFG",
  "epic_display_name": "Player",
  "expires_at": 1791045000,
  "items": [{"product": "fortnite_vbucks_800_tr"}],
  "confirm_url": "/api/fortnite/orders/fn_0123456789abcdefghijklmnopqrstuv/confirm"
}

Покажи epic_display_name клиенту и получи подтверждение. Сохрани order_token без логирования. Epic authorization_code уже использован; при подтверждении его повторно не отправляй.

POST /api/fortnite/orders/{order_id}/confirm

После подтверждения ника поставь покупку в очередь с токеном из prepare. Повторный вызов для уже подтверждённой заявки вернёт текущий статус без второй покупки.

curl -X POST https://bypriceactivate.pro/api/fortnite/orders/fn_0123456789abcdefghijklmnopqrstuv/confirm \
  -H "Content-Type: application/json" \
  -d '{"order_token":"0123456789abcdefghijklmnopqrstuvwxyzABCDEFG"}'

Возвращает 202 и тот же статус заявки, что одноступенчатая активация; затем опрашивай status_url.

POST /api/fortnite/activate

Старый одноступенчатый метод: проверяет Epic и сразу запускает покупку, без подтверждения ника. Передай code или массив codes до 500 штук.

ТЕЛО ЗАПРОСА
{
  "code": "VB800-ABCD-EFGH-IJKL",
  "authorization_code": "abcdef0123456789abcdef0123456789"
}
CURL
curl -X POST https://bypriceactivate.pro/api/fortnite/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"VB800-ABCD-EFGH-IJKL","authorization_code":"abcdef0123456789abcdef0123456789"}'
202 — accepted
{
  "ok": true,
  "order_id": "fn_0123456789abcdefghijklmnopqrstuv",
  "order_token": "0123456789abcdefghijklmnopqrstuvwxyzABCDEFG",
  "status": "queued_purchase",
  "status_url": "/api/fortnite/orders/fn_0123456789abcdefghijklmnopqrstuv",
  "product": "fortnite_vbucks_800_tr",
  "vbucks_amount": 800,
  "epic_display_name": "Player"
}

Сохрани order_token: он возвращается один раз и нужен для повторного входа или retry. Не записывай authorization_code в логи.

ОШИБКИ
400  {"ok":false,"error_code":"AUTH_CODE_REQUIRED","detail":"..."}
404  {"ok":false,"error_code":"CODE_NOT_FOUND","detail":"..."}
409  {"ok":false,"error_code":"CODE_USED","detail":"..."}
503  {"ok":false,"error_code":"OUT_OF_STOCK","detail":"..."}
GET /api/fortnite/orders/{order_id}

Опрашивай раз в 5 секунд, пока polling=false. Успешный финальный статус — done.

curl https://bypriceactivate.pro/api/fortnite/orders/fn_0123456789abcdefghijklmnopqrstuv
ОТВЕТ
{
  "ok": true,
  "order_id": "fn_0123456789abcdefghijklmnopqrstuv",
  "status": "done",
  "completed": true,
  "polling": false,
  "credited_vbucks": 800,
  "epic_display_name": "Player",
  "items": [{
    "order_id": "fn_0123456789abcdefghijklmnopqrstuv",
    "status": "done",
    "completed": true,
    "vbucks_amount": 800
  }]
}

Статусы: queued_purchase → purchasing → queued_restore → restoring → done. Статусы, требующие действия: needs_login, restore_review, restore_failed, purchase_failed.

Если purchase_failed содержит error_code=OUT_OF_STOCK, покупка не началась, а неиспользованные коды действительны. После пополнения создай новую заявку со свежим входом Epic; can_retry=false относится только к старой заявке.

POST /api/fortnite/orders/{order_id}/reauth

Если статус стал needs_login, передай новый одноразовый код от того же Epic-аккаунта.

{
  "order_token": "0123456789abcdefghijklmnopqrstuvwxyzABCDEFG",
  "authorization_code": "fedcba9876543210fedcba9876543210"
}
POST /api/fortnite/orders/{order_id}/retry

Повторяет начисление, когда в статусе can_retry=true. Новую покупку этот вызов не создаёт.

{"order_token":"0123456789abcdefghijklmnopqrstuvwxyzABCDEFG"}
GET /api/fortnite/stock

Возвращает доступное количество активаций для каждого Fortnite-продукта.

curl https://bypriceactivate.pro/api/fortnite/stock
ОТВЕТ
{
  "ready": true,
  "error": null,
  "products": {
    "fortnite_vbucks_800_tr": {
      "label": "Fortnite 800 V-Bucks",
      "vbucks": 800,
      "available": 10,
      "in_stock": true
    }
  }
}
07 / Grok

Grok · Pro / Lite · The X Subscription

Grok использует асинхронный поток: POST /api/activate возвращает order_id, затем опрашивай GET /api/activate/{order_id}. Старые коды по-прежнему принимают org_id (Grok User ID); четыре новых типа ниже — grok_cookie. Продукт определяется кодом.

Где взять Grok User ID: открой https://grok.com/api/auth/session в браузере где залогинен в Grok — поле userId (UUID).

POST /api/activate

⚠️ org_id здесь — это Grok User ID, а не Claude Organization ID (оба — UUID).

ТЕЛО ЗАПРОСА
{
  "code":   "GRK-SZI1-J5AN-88SV",
  "org_id": "aaab84aa-7514-4ef6-809b-be62ff1e4efe"
}
CURL
curl -X POST https://bypriceactivate.pro/api/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"GRK-SZI1-J5AN-88SV","org_id":"aaab84aa-7514-4ef6-809b-be62ff1e4efe"}'
201 — принято
{
  "order_id": 6247,
  "status":   "queued",
  "product":  "grok_pro_1m",
  "org_id":   "aaab84aa-7514-4ef6-809b-be62ff1e4efe"
}

Поллинг такой же, как у Claude — см. секцию GET /api/activate/{order_id} выше (status: queued → running → done / failed).

GET /api/grok/stock

Без параметра показывает доступность по клиентским товарам Grok. Добавь ключ продукта, например ?product=grok_7d, чтобы проверить конкретный SKU.

CURL
curl 'https://bypriceactivate.pro/api/grok/stock?product=grok_7d'
ОТВЕТ
{
  "product":   "grok_7d",
  "label":     "Grok 7 дней (US)",
  "in_stock":  true,
  "available": 12
}
08 / Perplexity

Perplexity Pro

Perplexity Pro активируется синхронно: передай код и UUID пользователя. Метод сразу возвращает итоговый результат, опрос статуса не нужен.

Где взять user_id: открой https://www.perplexity.ai/api/auth/session в браузере где залогинен в Perplexity — поле "id".

POST /api/perplexity/activate

Активировать Perplexity Pro на указанный UUID. Авторизация не нужна — сам код является ключом.

ТЕЛО ЗАПРОСА
{
  "code":    "PXY-EW8D-87WK-F8N0",
  "user_id": "aaab84aa-7514-4ef6-809b-be62ff1e4efe"
}
CURL
curl -X POST https://bypriceactivate.pro/api/perplexity/activate \
  -H "Content-Type: application/json" \
  -d '{"code":"PXY-EW8D-87WK-F8N0","user_id":"aaab84aa-7514-4ef6-809b-be62ff1e4efe"}'
200 — активировано
{
  "ok":              true,
  "user_id":         "aaab84aa-7514-4ef6-809b-be62ff1e4efe",
  "transaction_id":  "140003698963470",
  "stock_id":        38,
  "expires_date":    "2026-08-07T17:16:34Z",
  "service_expires_date": "2026-08-07T17:16:34Z",
  "current_period_expires_date": "2026-07-17T17:16:34Z",
  "service_days":    28,
  "delivery":        "automatic_weekly_extensions",
  "product":         "perplexity_pro"
}
ОШИБКИ
400  {"detail": "user_id must be a valid UUID (8-4-4-4-12 lowercase hex)"}
400  {"detail": "code is required"}
404  {"detail": "code not found"}
409  {"detail": "код уже fulfilled"}                  // уже активирован
409  {"detail": "нет свободных receipt в стоке — ..."} // out of stock, код валиден

После 200 OK юзер может нажать Restore Purchases или перезайти. Срок услуги — 28 дней, продление каждые 7 дней выполняется автоматически. expires_date и service_expires_date — конец 28-дневного срока; current_period_expires_date — граница текущего недельного этапа.

GET /api/perplexity/stock

Сколько Perplexity Pro receipt'ов готово к активации прямо сейчас. Удобно вызывать перед POST /api/perplexity/activate, чтобы избежать 409 при пустом стоке.

CURL
curl https://bypriceactivate.pro/api/perplexity/stock
ОТВЕТ
{
  "product":   "perplexity_pro",
  "label":     "Perplexity Pro",
  "in_stock":  true,
  "available": 87
}