TikTok publish_id status: poll it after the Sume job webhook fires

The TikTok Direct Post page I read returns a publish_id to check status and mentions no webhook. Let Sume's webhook trigger the post, then poll TikTok.

5 min readSume
All posts

TikTok's Direct Post reference returns a publish_id that you use to check the status of a post, and the page I read mentions no webhook for it. Build the chain in two hops: Sume's signed job.completed webhook starts the post, then your worker polls TikTok's status for the publish_id until it settles.

Sume pushes terminal job events only, so the first hop is push and the second is a poll you own.

Who tells you what?

Each hop has its own signal.

Signals in a Sume to TikTok chain (read 2026-10-05)
HopSignalMechanism
Render donejob.completed, job.failed or job.canceledSigned Sume webhook, with status_url polling as backup
Post startedpublish_id from initTikTok init response
Post settledStatus of the publish_idPoll TikTok's status endpoint

How do I dedupe the first hop?

Sume retries until it gets a 2xx and tells receivers to use job_id as the idempotency key. Insert the job id once; ignore repeats. The sample uses SQLite.

import sqlite3

db = sqlite3.connect(":memory:")
db.execute("create table seen (job_id text primary key)")


def first_time(job_id: str) -> bool:
    cur = db.execute("insert or ignore into seen values (?)", (job_id,))
    db.commit()
    return cur.rowcount == 1


if __name__ == "__main__":
    print(first_time("job_1"), first_time("job_1"))

What if a webhook never arrives?

After 10 refused attempts a delivery fails but the job still reached its terminal state. Keep status_url polls as the recovery path, or redeliver with POST /v1/jobs/{job_id}/webhook/redeliver (Webhooks).

Sources

Related posts

More in Developers

All Developers posts

Written by Sume