Account Configuration

Account Configuration – Profile Setup API

Configure TikTok and Instagram account details via the TokPortal API. Set username, display name, bio, and profile picture.

Account Configuration

Configure the account details for a bundle. Account configuration is required before a bundle can be published.


Configure Account

Set or update the account details for a bundle.

PUT /bundles/:id/account

Request Body

FieldTypeRequiredDescription
usernamestringYesAccount username. 1-24 characters, alphanumeric plus . and _.
visible_namestringYesDisplay name. 1-30 characters.
biographystringYesAccount biography. Max 80 characters.
profile_picture_urlstringYesURL to the profile picture image.
link_in_biostringNoLink displayed in the bio. Instagram only.
niche_warming_instructionsstringNoInstructions for niche warming behavior. Only applies when niche_warming is enabled.

Validation Rules

FieldRule
username1-24 characters. Allowed: [a-zA-Z0-9_.]
visible_name1-30 characters.
biographyMax 80 characters.
profile_picture_urlMust be a valid URL.
link_in_bioMust be a valid URL. Instagram only.

WARNING: Avoid duplicated wording across accounts Do not create multiple accounts that reuse the same words in the username or visible_name. Prefer unique usernames and nicknames for every account. Reusing the same words across many accounts on the same platform increases the risk of mass-ban detection by the platform's anti-spam systems.

Requirements

  • Bundle must be in pending_setup or configured status.
  • You cannot modify account configuration after the bundle has been published (unpublish first).

Example

curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_abc123/account \
  -H "X-API-Key: sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "streetstyle.nyc",
    "visible_name": "Street Style NYC",
    "biography": "Daily street fashion from New York City.",
    "profile_picture_url": "https://cdn.example.com/profiles/streetstyle.jpg",
    "niche_warming_instructions": "Engage with fashion and streetwear content in NYC area."
  }'

Response

{
  "data": {
    "id": "acc_xyz789",
    "bundle_id": "bnd_abc123",
    "status": "configured",
    "platform": "tiktok",
    "username": "streetstyle.nyc",
    "visible_name": "Street Style NYC",
    "biography": "Daily street fashion from New York City.",
    "profile_picture_url": "profile-pictures/bnd_abc123/streetstyle.jpg",
    "link_in_bio": null,
    "country": "US",
    "is_niche_warmed": false,
    "is_deep_warmed": false,
    "deep_warming_verification_status": null,
    "niche_warming_instructions": "Engage with fashion and streetwear content in NYC area.",
    "feedback": null,
    "created_at": "2026-02-10T10:00:00Z"
  }
}

NOTE: Response shape The account fields are returned flat under data — there is no nested data.account wrapper. The id field is the account ID (not the bundle ID). Use bundle_id to reference the parent bundle.

If an external profile_picture_url was provided, it is automatically downloaded and re-hosted; the response will include _info.profile_picture_rehosted: true. If the profile picture is missing, the response will include a _warnings array.

curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_d4e5f6/account \
  -H "X-API-Key: sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "cafe.paris_",
    "visible_name": "Caf\u00e9 Paris",
    "biography": "Les meilleurs caf\u00e9s parisiens.",
    "profile_picture_url": "https://cdn.example.com/profiles/cafeparis.jpg",
    "link_in_bio": "https://cafeparis.example.com"
  }'

Response

{
  "data": {
    "id": "acc_pqr456",
    "bundle_id": "bnd_d4e5f6",
    "status": "configured",
    "platform": "instagram",
    "username": "cafe.paris_",
    "visible_name": "Caf\u00e9 Paris",
    "biography": "Les meilleurs caf\u00e9s parisiens.",
    "profile_picture_url": "profile-pictures/bnd_d4e5f6/cafeparis.jpg",
    "link_in_bio": "https://cafeparis.example.com",
    "country": "FR",
    "is_niche_warmed": false,
    "is_deep_warmed": false,
    "deep_warming_verification_status": null,
    "niche_warming_instructions": null,
    "feedback": null,
    "created_at": "2026-02-10T10:15:00Z"
  }
}

Get Account

Retrieve the current account configuration for a bundle.

GET /bundles/:id/account

Example

curl -X GET https://app.tokportal.com/api/ext/bundles/bnd_abc123/account \
  -H "X-API-Key: sk_xxx"

Response

{
  "data": {
    "id": "acc_xyz789",
    "bundle_id": "bnd_abc123",
    "status": "configured",
    "platform": "tiktok",
    "username": "streetstyle.nyc",
    "visible_name": "Street Style NYC",
    "biography": "Daily street fashion from New York City.",
    "profile_picture_url": "profile-pictures/bnd_abc123/streetstyle.jpg",
    "link_in_bio": null,
    "country": "US",
    "is_niche_warmed": false,
    "is_deep_warmed": false,
    "deep_warming_verification_status": null,
    "niche_warming_instructions": "Engage with fashion and streetwear content in NYC area.",
    "feedback": null,
    "created_at": "2026-02-10T10:00:00Z"
  }
}

Error Responses

StatusCodeDescription
400invalid_usernameUsername does not match allowed pattern [a-zA-Z0-9_.] or exceeds 24 characters.
400invalid_visible_nameVisible name is empty or exceeds 30 characters.
400biography_too_longBiography exceeds 80 characters.
400invalid_urlprofile_picture_url or link_in_bio is not a valid URL.
400link_in_bio_instagram_onlylink_in_bio is only supported on Instagram.
409invalid_statusBundle is not in pending_setup or configured status.
409DUPLICATE_ACCOUNT_BUNDLEAn active bundle already exists for this username on the same platform. details.existing_bundle_id contains the conflicting bundle. Does not apply to videos_only bundles.
404bundle_not_foundBundle does not exist.