C Claude Pro

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

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

Базовый URL: https://bypriceactivate.pro · Content-Type: application/json

POST /api/activate

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

ТЕЛО ЗАПРОСА
{
  "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"
}
ОШИБКИ
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. Код часто остаётся действителен (out-of-stock).
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_20x": { "label": "Claude Max 20×", "available": 3,  "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_20x.

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_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-.

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: ..."}

💡 Когда использовать: покупка прошла (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".

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-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 дней).

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
}