TikTok for Developers · Arazzo Workflow

TikTok Upload a Draft to the Creator Inbox

Version 1.0.0

Confirm creator settings, send a video to the user's TikTok inbox as a draft, then poll until it lands.

1 workflow 1 source API 1 provider
View Spec View on GitHub AdvertisingAnalyticsAuthenticationContentSocial-MediaVideoArazzoWorkflows

Provider

tiktok-for-developers

Workflows

inbox-draft-upload
Upload a video as an inbox draft and poll until it reaches the inbox.
Reads the creator's posting settings, initiates a PULL_FROM_URL inbox upload, and polls the publish status until it reaches SENDING_TO_USER_INBOX or PUBLISH_COMPLETE.
3 steps inputs: accessToken, videoUrl outputs: finalStatus, publishId
1
getCreatorInfo
Query the creator's content posting settings before sending a draft to their inbox.
2
initInboxUpload
Initiate an inbox upload that pulls the video from the supplied URL so the user can review and publish it from the TikTok app.
3
pollStatus
Poll the publish status until the draft has been delivered to the user's inbox, the job completes, or it fails.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: TikTok Upload a Draft to the Creator Inbox
  summary: Confirm creator settings, send a video to the user's TikTok inbox as a draft, then poll until it lands.
  description: >-
    Sends a video to a creator's TikTok inbox as a draft using the Content
    Posting API so the user can review and publish it from the TikTok app. The
    workflow first queries the creator's posting settings, then initiates an
    inbox upload that pulls the video from a URL, and finally polls the publish
    status until the draft has been delivered to the user's inbox or the job
    fails. Every step spells out its request inline, including the inline Bearer
    authorization, so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: postApi
  url: ../openapi/tiktok-for-developers-post-api-openapi.yml
  type: openapi
workflows:
- workflowId: inbox-draft-upload
  summary: Upload a video as an inbox draft and poll until it reaches the inbox.
  description: >-
    Reads the creator's posting settings, initiates a PULL_FROM_URL inbox
    upload, and polls the publish status until it reaches SENDING_TO_USER_INBOX
    or PUBLISH_COMPLETE.
  inputs:
    type: object
    required:
    - accessToken
    - videoUrl
    properties:
      accessToken:
        type: string
        description: OAuth 2.0 user access token with video.upload scope.
      videoUrl:
        type: string
        description: Publicly reachable URL of the video to pull into the inbox draft.
  steps:
  - stepId: getCreatorInfo
    description: >-
      Query the creator's content posting settings before sending a draft to
      their inbox.
    operationId: queryCreatorInfo
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      creatorUsername: $response.body#/data/creator_username
      maxDurationSec: $response.body#/data/max_video_post_duration_sec
  - stepId: initInboxUpload
    description: >-
      Initiate an inbox upload that pulls the video from the supplied URL so the
      user can review and publish it from the TikTok app.
    operationId: initInboxVideoUpload
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    requestBody:
      contentType: application/json
      payload:
        source_info:
          source: PULL_FROM_URL
          video_url: $inputs.videoUrl
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      publishId: $response.body#/data/publish_id
  - stepId: pollStatus
    description: >-
      Poll the publish status until the draft has been delivered to the user's
      inbox, the job completes, or it fails.
    operationId: getPublishStatus
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    requestBody:
      contentType: application/json
      payload:
        publish_id: $steps.initInboxUpload.outputs.publishId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/data/status
    onSuccess:
    - name: delivered
      type: end
      criteria:
      - context: $response.body
        condition: $.data.status == "SENDING_TO_USER_INBOX"
        type: jsonpath
    - name: completed
      type: end
      criteria:
      - context: $response.body
        condition: $.data.status == "PUBLISH_COMPLETE"
        type: jsonpath
    - name: failed
      type: end
      criteria:
      - context: $response.body
        condition: $.data.status == "FAILED"
        type: jsonpath
    - name: stillProcessing
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.data.status == "PROCESSING_UPLOAD" || $.data.status == "PROCESSING_DOWNLOAD"
        type: jsonpath
  outputs:
    publishId: $steps.initInboxUpload.outputs.publishId
    finalStatus: $steps.pollStatus.outputs.status

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/tiktok-for-developers-inbox-draft-upload-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.