API активации кода
Программная активация кодов: отправляешь code
+ org_id, получаешь
order_id и опрашиваешь статус.
Авторизация не нужна — сам код является ключом (как на форме активации).
Базовый URL: https://bypriceactivate.pro
· Content-Type: application/json
Активировать код. org_id — UUID из claude.ai/settings/account.
{
"code": "MAX5-GU75-V37P-1SN4",
"org_id": "a1b2c3d4-1234-1234-1234-123456789abc"
}
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"}'
{
"order_id": 6231,
"status": "queued",
"product": "claude_max_5x",
"org_id": "a1b2c3d4-1234-1234-1234-123456789abc"
}
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"}
Статус активации. Следует за цепочкой ретраев — пока идут повторы, статус running; failed только когда попытки исчерпаны.
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. Код часто остаётся действителен (out-of-stock). |
Проверка наличия по всем продуктам. available — сколько активаций можно принять прямо сейчас (та же формула, что и в гейте активации, так что сток не «соврёт»). Удобно вызывать перед POST /api/activate. Авторизация не нужна.
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_20x": { "label": "Claude Max 20×", "available": 3, "in_stock": true }
},
"as_of": "2026-05-25T00:00:00Z"
}
available — сколько активаций можно принять прямо сейчас; in_stock = available ≥ 1.
Сток по одному продукту: claude_pro · claude_max_5x · claude_max_20x.
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_20x'])"}
Рекомендуемый поллинг
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.
🔁 Reclaim — повторная отправка чека на claude.ai
Apple купил подписку, наш сервер сохранил receipt, но Claude почему-то не активировал её на аккаунте (редкая race-condition или IDV-gate на стороне Claude). Этот API берёт **уже хранящийся** receipt по твоему activation-коду и переотправляет его на claude.ai от имени пользователя (по его sessionKey).
Где взять session_key: на claude.ai в DevTools (F12) → Application → Cookies → значение cookie sessionKey. Начинается с sk-ant-sid02-.
Переотправить ранее сохранённый Apple-чек на claude.ai/api/apple-iap/receipt. Авторизация не нужна — код + sessionKey являются ключом.
{
"code": "TR-XXXX-XXXX-XXXX",
"session_key": "sk-ant-sid02-r6ZfW1pYQYi..."
}
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..."
}'
{
"ok": true,
"kind": "success",
"transaction_id": "220003401686407",
"product_id": "com.anthropic.claude.pro.monthly.ios"
}
{
"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: ..."}
💡 Когда использовать: покупка прошла (status=done), но в Claude юзера всё ещё нет Pro. Обычно лечится за 1 запрос.
💡 sessionKey должен быть из consumer org (не workspace/team) — Claude отказывает workspace-org'ам с ошибкой "org is not a consumer org".
💡 Если копипастишь sessionKey из браузера — иногда туда попадают кириллические homoglyphs (буква «В» вместо латинской «B»). Endpoint их сам выкидывает, но если после strip получился невалидный — вернётся 400.
🟣 Perplexity Pro
Отдельный API для активации Perplexity Pro. В отличие от Claude
(асинхронно через worker), активация Perplexity проходит синхронно в один запрос — без order_id и поллинга. Передаёшь code + Perplexity user_id (UUID), получаешь итоговый ответ за 1-2 сек.
Где взять user_id: открой
https://www.perplexity.ai/api/auth/session в браузере где залогинен в Perplexity — поле "id".
Активировать Perplexity Pro на указанный UUID. Авторизация не нужна — сам код является ключом.
{
"code": "PXY-EW8D-87WK-F8N0",
"user_id": "aaab84aa-7514-4ef6-809b-be62ff1e4efe"
}
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"}'
{
"ok": true,
"user_id": "aaab84aa-7514-4ef6-809b-be62ff1e4efe",
"transaction_id": "140003698963470",
"stock_id": 38,
"expires_date": "2026-07-17T17:16:34Z",
"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 на стороне Perplexity юзеру нужно сделать Restore Purchases в приложении или просто перезайти — Pro подтянется мгновенно. expires_date — когда Apple попытается списать renewal (обычно +30 дней).
Сколько Perplexity Pro receipt'ов готово к активации прямо сейчас. Удобно вызывать перед POST /api/perplexity/activate, чтобы избежать 409 при пустом стоке.
curl https://bypriceactivate.pro/api/perplexity/stock
{
"product": "perplexity_pro",
"label": "Perplexity Pro",
"in_stock": true,
"available": 87
}