Platform Guides

Create Instagram Account Bundles with TokPortal API

Create and configure Instagram bundles with TokPortal API: account profile, Reels, posts, carousels, publishing, and delivered account access.

Create Instagram Account Bundles with TokPortal API

Use platform: "instagram" when creating a TokPortal bundle. The API can create account-only bundles, account-and-video bundles, or videos-only bundles for an existing delivered account.

This guide covers the public contract. It does not promise reach, engagement, account immunity, or any specific platform outcome.

1. Create an Instagram bundle

curl -X POST https://app.tokportal.com/api/ext/bundles \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "bundle_type": "account_and_videos",
    "platform": "instagram",
    "country": "US",
    "title": "US Instagram launch",
    "videos_quantity": 3,
    "external_ref": "ig-launch-us"
  }'

The response includes data.bundle_id, credits_charged, credits_remaining, and cost_breakdown.

Reference: Create Bundle

2. Configure the account profile

Account configuration is required before publishing.

curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_abc123/account \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "mybrand.us",
    "visible_name": "My Brand",
    "biography": "New drops every week.",
    "profile_picture_url": "https://cdn.example.com/mybrand/profile.jpg",
    "link_in_bio": "https://example.com"
  }'

For Instagram, link_in_bio is supported. Keep biography under 80 characters and use unique usernames/display names across accounts.

Reference: Account Configuration

3. Configure an Instagram Reel

For a Reel video, use video_type: "video" and instagram_content_type: "reel".

curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_abc123/videos/1 \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "video_type": "video",
    "instagram_content_type": "reel",
    "description": "Morning routine with the new collection #style",
    "target_publish_date": "2026-06-05",
    "video_url": "https://cdn.example.com/reels/reel-01.mp4",
    "instagram_audio_name": "Original audio",
    "external_ref": "ig-reel-01"
  }'

video_url can be any public/direct URL or a public_url returned by Media Upload.

4. Configure an Instagram carousel post

For a swipeable Instagram carousel, use video_type: "carousel" and instagram_content_type: "post".

Upload images first and use the returned storage_path values:

curl -X POST https://app.tokportal.com/api/ext/upload/image/from-url \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://cdn.example.com/carousel/slide-1.jpg",
    "bundle_id": "bnd_abc123",
    "purpose": "carousel"
  }'

Then configure the slot:

curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_abc123/videos/2 \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "video_type": "carousel",
    "instagram_content_type": "post",
    "description": "Which look is your favorite?",
    "target_publish_date": "2026-06-07",
    "carousel_images": [
      "carousel-images/org_xxx/bnd_abc123/slide-1.jpg",
      "carousel-images/org_xxx/bnd_abc123/slide-2.jpg"
    ],
    "instagram_location": "Los Angeles, California"
  }'

Reference: Configure Videos

Advanced warming

Advanced warming is the recommended warming option (deep warming has been discontinuedwants_deep_warming: true is rejected with DEEP_WARMING_DEPRECATED). Provide 3-30 search terms (multiples of 3) at 3 credits per term; the manager searches each term while screen-recording, and every recording is verified into a client report. See Advanced Warming.

curl -X POST https://app.tokportal.com/api/ext/bundles \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "bundle_type": "account_and_videos",
    "platform": "instagram",
    "country": "US",
    "videos_quantity": 3,
    "wants_advanced_warming": true,
    "advanced_warming_terms": ["street style outfits", "capsule wardrobe", "outfit inspo daily"],
    "external_ref": "ig-advanced-warming-us"
  }'

wants_advanced_warming and wants_niche_warming are mutually exclusive. The API returns validation errors if incompatible options are sent.

Bulk Instagram creation

POST /bundles/bulk accepts one country and one or more platforms. To cover several countries, call it once per country.

curl -X POST https://app.tokportal.com/api/ext/bundles/bulk \
  -H "X-API-Key: sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "platforms": ["instagram"],
    "country": "US",
    "accounts_count": 5,
    "upload_accounts_count": 2,
    "videos_per_account": 6,
    "wants_advanced_warming": true,
    "advanced_warming_terms": ["street style outfits", "capsule wardrobe", "outfit inspo daily"],
    "external_ref": "ig-bulk-us"
  }'

This creates 5 Instagram bundles in the selected country. Two include video slots; three are account-only.

Reference: Create Bulk

Delivered account access

After delivery, accounts are available through the Delivered Accounts API:

curl -X GET "https://app.tokportal.com/api/ext/accounts?platform=instagram" \
  -H "X-API-Key: sk_your_key_here"

Credential reveal is a separate endpoint and triggers the support disclaimer described in Delivered Accounts:

curl -X POST https://app.tokportal.com/api/ext/accounts/acc_abc123/reveal-credentials \
  -H "X-API-Key: sk_your_key_here"

Related docs: Media Upload, Publish & Unpublish, Analytics, MCP Server.