Email registration: send code
Start 2-step email registration on a dedicated FullPool device context using your own residential/mobile proxy (Scale+).
/passport/user/check_email_registered/passport/email/send_code/Scale and upWhat it does & execution pool
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.
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 |
|---|---|---|
emailrequired | string | Unregistered email address you control. e.g. [email protected] |
passwordrequired | string | Account password (8+ characters). e.g. StrongPassword!2026 |
birthdayrequired | string | Date of birth in YYYY-MM-DD format. e.g. 1999-04-15 |
proxyrequired | string | Caller-supplied residential or mobile proxy URL (required; never runs on shared pool IPs). e.g. http://user:[email protected]:8080 |
context_id | string | Optional existing caller-owned device context ID to reuse. |
warmup | boolean | Run initial device bootstrap & warm-up if fresh. e.g. true |
os | string | android or ios. e.g. android |
app_flavour | string | Which app to run as. e.g. tiktok |
app_version | string | A release of that app. Defaults to the current default for (os, app_flavour). e.g. 47.5.41 |
region | string | Two-letter country code for egress and storefront. e.g. US |
city | string | A city in that region. See the supported cities list. e.g. miami |
Pricing
| Plan | Per call | Per 1,000 calls |
|---|---|---|
| Starter | 25 credits | $2.90 |
| Growth | 25 credits | $1.98 |
| Scale | 25 credits | $1.45 |
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. |
otp_channel | string | Decoded otp channel value. |
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. |
code_type | integer | Decoded code type value. |
check_email | object | Structured check email metadata. |
check_email.message | string | Decoded message value. |
check_email.data | object | Structured data metadata. |
result | object | Structured result metadata. |
result.message | string | Decoded message value. |
result.data | object | Structured data metadata. |
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`. 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,
os: 'android',
appFlavour: 'tiktok',
appVersion: '47.5.41',
region: 'US',
city: 'miami',
})
const res = await client.request('POST', '/v1/account/register/email/send', { body: {
email: '[email protected]',
password: 'StrongPassword!2026',
birthday: '1999-04-15',
proxy: 'http://user:[email protected]:8080',
warmup: true,
} })
console.log(res.creditsCost, res.data){
"status": "registration_code_sent",
"otp_channel": "email",
"context_id": "7392011847562901234",
"device_id": "7392011847562901234",
"os": "android",
"app_flavour": "tiktok",
"app_version": "47.5.41",
"region": "US",
"city": "miami",
"email": "[email protected]",
"code_type": 1,
"check_email": {
"message": "success",
"data": {
"is_registered": 0
}
},
"result": {
"message": "success",
"data": {
"next_send_sec": 60
}
}
}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.