Email registration: send code
Start 2-step email registration on a dedicated FullPool device context using your own residential/mobile proxy (Scale+).
- Upstream
/passport/user/check_email_registered/passport/email/send_code/- Access
- Scale and up
- Execution pool
- Caller-Owned Account · Dedicated 1:1 FullPool
- Client
os,app_flavour,app_versionselectable- Billing
- Failed calls cost 0 credits
What this endpoint does
Start 2-step email registration on a dedicated FullPool device context using your own residential/mobile proxy (Scale+). Executes `/passport/user/check_email_registered, /passport/email/send_code/` on the caller-owned Connected Workspace session (`account_id`), preserving 1:1 hardware identity, cookie state, `X-Cylons` session binding, and city-level egress.
- Never an SMM panel: Tikultra never executes likes, follows, comments, DMs, or uploads from shared or internal pool accounts. Passing an unowned or corpus account_id returns 403 account_forbidden.
- Predictable billing: 25 cr on HTTP 200; upstream 5xx, rate-limit 429, and validation 4xx responses always charge 0 credits.
- Plan & proxy requirement: available on Scale and Enterprise plans and requires a caller-supplied residential or mobile `proxy` URL.
How to use it: 2-Step Scale+ Email Registration with BYO Proxy
Register a brand-new account on a fresh FullPool hardware profile routed strictly through your own residential or mobile proxy, verify the email OTP, and immediately configure the profile.
Click any step in the chain to open its parameters and SDK snippets. The current endpoint is highlighted.
Verify your target handle is free with GET /v1/user/check-username (2 credits) before starting registration.
Pass email, password, birthday (YYYY-MM-DD), region/city, and your residential/mobile proxy URL. Save the returned context_id.
Submit the 6-digit email code along with the exact same context_id and proxy URL to finalize registration and mint account_id.
Set your handle (/v1/account/profile/username), bio (/v1/account/profile/update), and avatar (/v1/account/profile/avatar).
Warm the newly registered session with organic topic searches and feed dwells via POST /v1/account/warm/niche.
Authorization & parameters
Your API key. Create one in API keys.
Body
Send JSON with content-type: application/json.
Unregistered email address you control. For example [email protected].
Account password (8+ characters). For example StrongPassword!2026.
Date of birth in YYYY-MM-DD format. For example 1999-04-15.
Caller-supplied residential or mobile proxy URL (required; never runs on shared pool IPs). For example http://user:[email protected]:8080.
Optional existing caller-owned device context ID to reuse.
Run initial device bootstrap & warm-up if fresh. For example true.
android or ios. One of android, ios.
Which app to run as. One of tiktok, lite, lite_coin, pro, studio, shop, tv, douyin.
A release of that app. Defaults to the current default for (os, app_flavour). For example 47.5.41.
Two-letter country code for egress and storefront. For example US.
A city in that region. See the supported cities list. For example miami.
Client and egress
Executes on the dedicated 1:1 FullPool mobile context and city-level egress bound to context_id + proxy, with optional client fields documented above. See Connected sessions.
What it returns
Returns `200 OK` `application/json` decoded from `/passport/user/check_email_registered`. Field names (`aweme_id`, `uid`, `sec_uid`, `unique_id`, `room_id`, `product_id`) are consistent across all 200+ endpoints so outputs pipe directly into follow-up calls. If TikTok returns an upstream timeout, empty challenge, or 5xx error, the gateway surfaces a structured error `code` and sets `x-credits-cost: 0`.
| Response Header | Meaning |
|---|---|
x-credits-cost | Exact credits billed for this call (25 on 200 OK; always 0 on failed calls). |
x-credits-tier | Pricing tier bucket (fixed). |
x-credits-remaining | Live remaining credit balance on your API key after this response. |
Response fields
Key top-level and nested fields decoded from the mobile upstream payload:
Current lifecycle or health status.
Decoded otp channel value.
Isolated device/proxy context identifier in LeanPool or FullPool.
Provisioned mobile device identifier.
Decoded os value.
Decoded app flavour value.
Decoded app version value.
Two-letter ISO 3166-1 country code associated with the item or context.
City-level egress or location identifier.
Decoded email value.
Decoded code type value.
Structured check email metadata.
Decoded message value.
Structured data metadata.
Structured result metadata.
Decoded message value.
Structured data metadata.
Errors & pool isolation
Errors return a JSON body with a stable code and cost 0 credits. See Errors and retries.
403 scale_plan_required) and a caller-supplied residential or mobile proxy URL (400 byo_proxy_required).