Email registration: verify code
Complete 2-step email registration with the OTP code and persist a caller-owned Connected Workspace account_id (Scale+).
/passport/email/register_verify_login/Scale and upWhat it does & execution pool
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.
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.
| Step | Endpoint | Purpose |
|---|---|---|
| 1 | GET /v1/user/check-username | Check desired @username availability: Verify your target handle is free with GET /v1/user/check-username (2 credits) before starting registration. |
| 2 | POST /v1/account/register/email/send | Bootstrap device & send registration code: Pass email, password, birthday (YYYY-MM-DD), region/city, and your residential/mobile proxy URL. Save the returned context_id. |
| 3 ★ | POST /v1/account/register/email/verify | Verify email OTP & persist account_id: Submit the 6-digit email code along with the exact same context_id and proxy URL to finalize registration and mint account_id. |
| 4 | POST /v1/account/profile/username | Claim @username & set bio/avatar: Set your handle (/v1/account/profile/username), bio (/v1/account/profile/update), and avatar (/v1/account/profile/avatar). |
| 5 | POST /v1/account/warm/niche | Calibrate initial For You niche: Warm the newly registered session with organic topic searches and feed dwells via POST /v1/account/warm/niche. |
Parameters
| Name | Type | Description |
|---|---|---|
context_idrequired | string | The context_id returned by /v1/account/register/email/send. e.g. 7392011847562901234 |
emailrequired | string | The same email address. e.g. [email protected] |
coderequired | string | One-time registration code delivered to the email. e.g. 591024 |
passwordrequired | string | The same password. e.g. StrongPassword!2026 |
birthdayrequired | string | The same YYYY-MM-DD birthday. e.g. 1999-04-15 |
proxyrequired | string | The same caller-supplied residential or mobile proxy URL. e.g. http://user:[email protected]:8080 |
Pricing
| Plan | Per call | Per 1,000 calls |
|---|---|---|
| Starter | 50 credits | $5.80 |
| Growth | 50 credits | $3.96 |
| Scale | 50 credits | $2.91 |
Connected sessions run on dedicated 1:1 FullPool contexts strictly for accounts you own, import, log into, or register. Scale and up.
Response fields
| Field | Type | Description |
|---|---|---|
status | string | Current lifecycle or health status. |
account_id | string | Connected session identifier bound to a dedicated FullPool mobile context. |
context_id | string | Isolated device/proxy context identifier in LeanPool or FullPool. |
device_id | string | Provisioned mobile device identifier. |
os | string | Decoded os value. |
app_flavour | string | Decoded app flavour value. |
app_version | string | Decoded app version value. |
region | string | Two-letter ISO 3166-1 country code associated with the item or context. |
city | string | City-level egress or location identifier. |
email | string | Decoded email value. |
uid | string | Numeric 64-bit TikTok user ID. |
sec_uid | string | Encrypted stable account identifier used across mobile endpoints. |
username | string | Decoded username value. |
session_persisted | boolean | Whether session persisted is enabled or true. |
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`. Every response carries x-credits-cost, x-credits-tier and x-credits-remaining. Error codes
import { TikUltra } from 'tikultra'
const client = new TikUltra({ apiKey: process.env.TIKULTRA_KEY })
const res = await client.request('POST', '/v1/account/register/email/verify', { body: {
context_id: '7392011847562901234',
email: '[email protected]',
code: '591024',
password: 'StrongPassword!2026',
birthday: '1999-04-15',
proxy: 'http://user:[email protected]:8080',
} })
console.log(res.creditsCost, res.data){
"status": "registered",
"account_id": "acc_9Kp4",
"context_id": "7392011847562901234",
"device_id": "7392011847562901234",
"os": "android",
"app_flavour": "tiktok",
"app_version": "47.5.41",
"region": "US",
"city": "miami",
"email": "[email protected]",
"uid": "6970000000000000002",
"sec_uid": "MS4wLjABAAAAkbfan991xQp2mN8vR4wL7tH3zK5y",
"username": "user849201938",
"session_persisted": true
}More in Connected sessions · Sign-in, registration & sessions
Ready to build?
Start with 2,500 free credits and test every public endpoint, then pick a plan.