API reference / Connected sessions / Email registration: verify code

Email registration: verify code

Complete 2-step email registration with the OTP code and persist a caller-owned Connected Workspace account_id (Scale+).

Raw .mdAsk ClaudeAsk ChatGPTllms-full.txt
POSTapi.tikultra.com/v1/account/register/email/verify50 credits
Upstream
/passport/email/register_verify_login/
Access
Scale and up
Execution pool
Caller-Owned Account · Dedicated 1:1 FullPool
Billing
Failed calls cost 0 credits

What this endpoint does

Complete 2-step email registration with the OTP code and persist a caller-owned Connected Workspace account_id (Scale+). Executes `/passport/email/register_verify_login/` on the caller-owned Connected Workspace session (`account_id`), preserving 1:1 hardware identity, cookie state, `X-Cylons` session binding, and city-level egress.

Runs exclusively on a Connected Workspace account_id you own. Executes on the dedicated 1:1 mobile hardware fingerprint, persistent MSSDK sec_device_token, cookie jar, and city egress bound to your own account_id (connected via session import, email OTP login, or Scale+ BYO-proxy email registration). 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.
  • 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: 50 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.

End-to-end endpoint sequence

Click any step in the chain to open its parameters and SDK snippets. The current endpoint is highlighted.

1
Check desired @username availabilityOptionalGET/v1/user/check-username2 cr

Verify your target handle is free with GET /v1/user/check-username (2 credits) before starting registration.

2
Bootstrap device & send registration codePOST/v1/account/register/email/send25 cr

Pass email, password, birthday (YYYY-MM-DD), region/city, and your residential/mobile proxy URL. Save the returned context_id.

3
Verify email OTP & persist account_idCurrent endpointPOST/v1/account/register/email/verify50 cr

Submit the 6-digit email code along with the exact same context_id and proxy URL to finalize registration and mint account_id.

4
Claim @username & set bio/avatarOptionalPOST/v1/account/profile/username25 cr

Set your handle (/v1/account/profile/username), bio (/v1/account/profile/update), and avatar (/v1/account/profile/avatar).

5
Calibrate initial For You nicheOptionalPOST/v1/account/warm/niche25 cr

Warm the newly registered session with organic topic searches and feed dwells via POST /v1/account/warm/niche.

Agent & operator tip: Registration requires Scale or Enterprise plus a caller-supplied residential/mobile proxy (byo_proxy_required). Always pass the identical context_id and proxy in both step 1 and step 2.

Authorization & parameters

x-api-keyheader · stringrequired

Your API key. Create one in API keys.

Body

Send JSON with content-type: application/json.

context_idstringrequired

The context_id returned by /v1/account/register/email/send. For example 7392011847562901234.

emailstringrequired

The same email address. For example [email protected].

codestringrequired

One-time registration code delivered to the email. For example 591024.

passwordstringrequired

The same password. For example StrongPassword!2026.

birthdaystringrequired

The same YYYY-MM-DD birthday. For example 1999-04-15.

proxystringrequired

The same caller-supplied residential or mobile proxy URL. For example http://user:[email protected]:8080.

Client and egress

Executes on the dedicated 1:1 FullPool mobile context and city-level egress bound to context_id + proxy. See Connected sessions.

What it returns

Returns `200 OK` `application/json` decoded from `/passport/email/register_verify_login/`. 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 HeaderMeaning
x-credits-costExact credits billed for this call (50 on 200 OK; always 0 on failed calls).
x-credits-tierPricing tier bucket (fixed).
x-credits-remainingLive remaining credit balance on your API key after this response.

Response fields

Key top-level and nested fields decoded from the mobile upstream payload:

statusstring

Current lifecycle or health status.

account_idstring

Connected session identifier bound to a dedicated FullPool mobile context.

context_idstring

Isolated device/proxy context identifier in LeanPool or FullPool.

device_idstring

Provisioned mobile device identifier.

osstring

Decoded os value.

app_flavourstring

Decoded app flavour value.

app_versionstring

Decoded app version value.

regionstring

Two-letter ISO 3166-1 country code associated with the item or context.

citystring

City-level egress or location identifier.

emailstring

Decoded email value.

uidstring

Numeric 64-bit TikTok user ID.

sec_uidstring

Encrypted stable account identifier used across mobile endpoints.

usernamestring

Decoded username value.

session_persistedboolean

Whether session persisted is enabled or true.

Errors & pool isolation

Errors return a JSON body with a stable code and cost 0 credits. See Errors and retries.

Scale & Enterprise + BYO Proxy required. 2-step email registration requires a Scale or Enterprise plan (403 scale_plan_required) and a caller-supplied residential or mobile proxy URL (400 byo_proxy_required).