Активации
Товары с needs_activation включаются на аккаунте ВАШЕГО клиента: после выдачи в заказе появляется активация, и ей нужны данные клиента.
Как проходит активация
- in_progressОпределяем, что просить
Сразу после выдачи: у одного товара бывают партии разных поставщиков. Пока вид не определён, спрашивать клиента не о чем.
- awaiting_customerЖдём данные клиента
Пришло событие
activation.needs_input(в нёмcredential_kindи подсказкаhint) — или читайтеGET /v1/activations/{id}. Отправьте данные:POST /v1/сactivations/ {id}/ credential {"value": "…"}иIdempotency-Key. - in_progressУ поставщика
События
activation.submitted, затемactivation.in_progress; делать ничего не нужно. - activatedПодписка включена
activation.activated.
activation.failed, причина — в reason_codeactivation.manualactivation.verification_required ) или новые данныеПоле state: awaiting_customer · in_progress · manual · failed · activated · canceled — отменена, например при возврате.
full_session: true — поставщику нужна сессия целиком: не вырезайте из неё поля.
verification_url — сервис просит клиента пройти проверку (событие activation.); ссылка ведёт только на домены сервиса.
POST /v1/ — повтор на тех же данных. Каждая подача и каждый повтор тратят попытку на реальном ключе.
Что просить у клиента
Вид данных становится известен после выдачи: ждите activation.needs_input — в нём credential_kind и подсказка hint.
Session key аккаунта Claude. Достаётся только расширением Claude Session Key при активном входе на claude.ai — начинается с sk-ant-sid02-…. С телефона получить его нельзя, нужен компьютер
Organization ID аккаунта Claude: claude.ai/settings/account, в самом низу раздела Account. В командном пространстве этот ID принадлежит КОМАНДЕ — сначала переключитесь на личное
Данные аккаунта ChatGPT: откройте chatgpt.com/api/auth/session и вставьте весь ответ целиком — мы возьмём из него только идентификатор аккаунта. Если знаете свой account_id, можно вставить только его
Данные сессии ChatGPT: откройте chatgpt.com/api/auth/session и скопируйте ВЕСЬ ответ — от «{» до «}». Одного account_id недостаточно
UID аккаунта Grok из настроек профиля
Почта аккаунта у сервиса (card_pay «на аккаунте клиента»); дальше — ссылка входа из письма сервиса
Почему активация встала
Код причины — reason_code в активации и событиях; наш текст для клиента приходит полем reason_text, дата — отдельным полем reason_until:
account_has_planУже действует платный тариф: дождаться окончания или включить поверх — forceaccount_workspaceПрислали рабочее пространство — нужен личный профильsession_invalidДанные не подошли — скопировать заново целикомrecent_activationНедавняя активация — повторить через несколько часовprovider_out_of_stockНет свободных мест у поставщикаkey_usedКлюч не принят поставщиком — выдадим новыйprovider_temporaryВременный сбой поставщика — продолжим самиservice_unknownГотовим активацию — данные попросим, когда будет пораaccount_has_plan:На аккаунте уже действует платный тариф — сервис не пропустит вторую подписку. Отмена тарифа этого не меняет: он работает до конца оплаченного периода. Дождитесь окончания и нажмите «Активировать» — ключ не потрачен, данные вводить заново не нужно.
Неверный формат
Формат проверяем до поставщика: неверный — 422 credential_invalid с причиной (reason), ключ не тронут. Непривычный, но допустимый формат принимается с warning (credential_warning).
expected_session_jsonнужен весь JSON со страницы сервисаexpected_session_json_got_uuid прислан идентификаторexpected_session_json_got_token прислан токенsession_json_brokenсессия обрезана или повреждена — скопировать зановоsession_json_logged_out в сессии нет входа — войти в сервис и скопировать сноваsession_json_no_account в сессии нет идентификатора аккаунтаsession_json_no_session_token в сессии нет sessionToken, а этому поставщику он нуженexpected_session_keyнужен session key (sk-ant-sid…)expected_session_key_got_uuid прислан UUIDexpected_uuid_got_session_key прислан session keyexpected_uuid_got_jwtприслан JWTuuid_incompleteUUID обрезан при копированииtoo_shortзначение слишком короткое — скопировано не целикомexpected_emailнужна почта аккаунтаlooks_like_emailприслана почта, а нужен идентификатор или ключlooks_like_textприслан текст, а не значение: кириллица, фраза со страницыwarning — стоит переспросить клиентаsession_json_unfamiliar сессия непривычного видаunexpected_formatформат не похож на ожидаемыйОтказ действия
Отказ действия — 409 invalid_state с причиной:
| reason | Что это |
|---|---|
kind_unknown |
что просить, ещё не определено (или это «новый аккаунт от нас» — просить нечего) |
login_started |
вход по почте уже начат — нужна ссылка входа, а не новая почта |
provider_ref_live |
заявка уже у поставщика — данные под ней менять нельзя |
manual |
активацией занимается наш сотрудник (state: manual) — ни повтор, ни новые данные не принимаются, ждите события |
no_credential |
повторять нечем — данные ещё не присылали |
force_unavailable |
«включить поверх тарифа» здесь неуместно |
terminal |
активация уже завершена или отменена |
У действий с одной активацией свой лимит в минуту (раздел «Лимиты»; превышение — 429 rate_limited · activation).
