curl -X POST https://api.infinipost.co/v1/phones/phone_abc123/accounts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "tiktok",
"name": "Fashion Insider",
"bio": "Daily fashion tips and trends 👗",
"password": "Secure1!",
"warmupKeywords": ["fashion", "ootd", "style"]
}'
const response = await fetch('https://api.infinipost.co/v1/phones/phone_abc123/accounts', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
platform: 'tiktok',
name: 'Fashion Insider',
bio: 'Daily fashion tips and trends 👗',
password: 'Secure1!',
warmupKeywords: ['fashion', 'ootd', 'style']
})
});
const data = await response.json();
import requests
response = requests.post(
'https://api.infinipost.co/v1/phones/phone_abc123/accounts',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'platform': 'tiktok',
'name': 'Fashion Insider',
'bio': 'Daily fashion tips and trends 👗',
'password': 'Secure1!',
'warmupKeywords': ['fashion', 'ootd', 'style']
}
)
print(response.json())
{
"accountId": "acc_1a2b3c4d5e",
"platform": "tiktok",
"name": "Fashion Insider",
"username": null,
"bio": "Daily fashion tips and trends 👗",
"accountStatus": "created_pending_warmup",
"createdAt": "2024-04-21T19:30:00Z"
}
Accounts
Create Account
Create a new TikTok or Instagram account on a specific phone
POST
/
v1
/
phones
/
{phoneId}
/
accounts
curl -X POST https://api.infinipost.co/v1/phones/phone_abc123/accounts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "tiktok",
"name": "Fashion Insider",
"bio": "Daily fashion tips and trends 👗",
"password": "Secure1!",
"warmupKeywords": ["fashion", "ootd", "style"]
}'
const response = await fetch('https://api.infinipost.co/v1/phones/phone_abc123/accounts', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
platform: 'tiktok',
name: 'Fashion Insider',
bio: 'Daily fashion tips and trends 👗',
password: 'Secure1!',
warmupKeywords: ['fashion', 'ootd', 'style']
})
});
const data = await response.json();
import requests
response = requests.post(
'https://api.infinipost.co/v1/phones/phone_abc123/accounts',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'platform': 'tiktok',
'name': 'Fashion Insider',
'bio': 'Daily fashion tips and trends 👗',
'password': 'Secure1!',
'warmupKeywords': ['fashion', 'ootd', 'style']
}
)
print(response.json())
{
"accountId": "acc_1a2b3c4d5e",
"platform": "tiktok",
"name": "Fashion Insider",
"username": null,
"bio": "Daily fashion tips and trends 👗",
"accountStatus": "created_pending_warmup",
"createdAt": "2024-04-21T19:30:00Z"
}
Path Parameters
string
required
The ID of the phone to create the account on.One account per platform per phone: Each phone supports one TikTok account and one Instagram account. Attempting to create a second account on the same platform will return an error.
Request Body
string
required
The platform to create an account on. Either
tiktok or instagram.string
required
The display name for the account (e.g., “John Smith”).
string
The desired username. If not provided, one will be auto-generated.Note: TikTok usernames can only be set after Day 5 of warmup.
string
required
Password for the account.Requirements: Minimum 8 characters, must include at least 1 uppercase letter, 1 lowercase letter, 1 number, and 1 special character (
!, @, #, $, %, etc.).string
Account bio/description.
array
Array of keywords to use for content discovery during warmup (e.g.,
["fashion", "style", "outfit"]).Optional: If not provided, platform-appropriate trending keywords will be used automatically.string
URL of the profile picture to use. Must be a publicly accessible image URL.Requirements: Image must have a 1:1 aspect ratio (square). Non-square images will return an error.
Response
string
Unique identifier for the account.
string
The platform (
tiktok or instagram).string
The account’s display name.
string
The account’s username (may be null for new TikTok accounts).
string
Current status:
awaiting_creation, created_pending_warmup, warming_up, or ready.string
ISO 8601 timestamp of when the account was created.
curl -X POST https://api.infinipost.co/v1/phones/phone_abc123/accounts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "tiktok",
"name": "Fashion Insider",
"bio": "Daily fashion tips and trends 👗",
"password": "Secure1!",
"warmupKeywords": ["fashion", "ootd", "style"]
}'
const response = await fetch('https://api.infinipost.co/v1/phones/phone_abc123/accounts', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
platform: 'tiktok',
name: 'Fashion Insider',
bio: 'Daily fashion tips and trends 👗',
password: 'Secure1!',
warmupKeywords: ['fashion', 'ootd', 'style']
})
});
const data = await response.json();
import requests
response = requests.post(
'https://api.infinipost.co/v1/phones/phone_abc123/accounts',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'platform': 'tiktok',
'name': 'Fashion Insider',
'bio': 'Daily fashion tips and trends 👗',
'password': 'Secure1!',
'warmupKeywords': ['fashion', 'ootd', 'style']
}
)
print(response.json())
{
"accountId": "acc_1a2b3c4d5e",
"platform": "tiktok",
"name": "Fashion Insider",
"username": null,
"bio": "Daily fashion tips and trends 👗",
"accountStatus": "created_pending_warmup",
"createdAt": "2024-04-21T19:30:00Z"
}
Account Creation Process
- Account Setup (a few hours): TikTok/Instagram account is created on the phone
- Status Update: Account status changes from
created_pending_warmuptowarming_up - Warmup (7 days): Gradual engagement ramp-up to avoid platform restrictions
TikTok Username Restriction: New TikTok accounts cannot set a custom username until Day 5 of warmup. The
username field will be null until then.Error Responses
Username Already Taken
{
"error": {
"code": "username_taken",
"message": "The username 'fashioninsider' is already taken"
}
}
Account Limit Reached
{
"error": {
"code": "account_limit_exceeded",
"message": "You have reached your account limit. Upgrade your plan to create more accounts."
}
}
Invalid Profile Picture Ratio
{
"error": {
"code": "invalid_image_ratio",
"message": "Profile picture must have a 1:1 aspect ratio (square). Provided image is 1920x1080."
}
}
Invalid Profile Picture URL
{
"error": {
"code": "invalid_image_url",
"message": "Unable to access the profile picture URL. Please ensure the URL is publicly accessible."
}
}
Missing Required Fields
{
"error": {
"code": "missing_required_fields",
"message": "Missing required field: platform"
}
}
Invalid Platform
{
"error": {
"code": "invalid_platform",
"message": "Platform must be either 'tiktok' or 'instagram'"
}
}
Account Already Exists
{
"error": {
"code": "account_exists",
"message": "This phone already has a TikTok account"
}
}
Phone Not Found
{
"error": {
"code": "not_found",
"message": "Phone phone_abc123 not found"
}
}
Invalid Password
{
"error": {
"code": "invalid_password",
"message": "Password must be at least 8 characters with uppercase, lowercase, number, and special character"
}
}