EasyDrop REST API
Three endpoints over plain HTTP: list the accounts you have connected, send a video to one of them, follow the job until it lands. No SDK, no client library. Publishing goes through TikTok’s official Content Posting API.
Authentication
Every request carries an EasyDrop API key as a Bearer token:
Authorization: Bearer YOUR_API_KEY
Keys are issued and revoked in Settings, and your base URL is shown there beside them. The key authorises EasyDrop rather than TikTok: revoking it stops the integration without touching the social accounts, whose authorisations stay on our side.
The endpoints
GET /v1/accounts- Every connected TikTok account: id, display name, avatar, whether its token is still valid, and the scopes it was granted. The id is what the upload endpoint takes.
POST /v1/uploads- Upload a video to one connected account, as multipart form data. Returns a job rather than a finished post.
GET /v1/uploads/status- Where a job has got to, by its id. This is the endpoint that tells you whether the post actually went live.
Fields on an upload
Sent as multipart form data. The five required fields are required by TikTok rather than by us, which is why none of them has a default we could quietly supply.
filerequired- The video itself.
socialAccountIdrequired- Which account to publish to, from GET /v1/accounts.
titlerequired- The caption.
privacyLevelrequired- PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR or SELF_ONLY. There is no default, because TikTok does not allow one.
musicConfirmedrequired- Must be true. TikTok requires music-rights confirmation on every post.
disableCommentoptional- Defaults to true, meaning comments are off. Send false to allow them.
disableDuetoptional- Defaults to true. Send false to allow duets.
disableStitchoptional- Defaults to true. Send false to allow stitches.
An upload returns a job
The response is an identifier, not a published post. The file still has to reach TikTok, which transcodes it and puts it through review, and the queue paces each account separately because TikTok limits posting requests per authorised account.
Pass that id to GET /v1/uploads/status and poll until the job reaches published or failed. A failed job carries the reason, so a retry can be an informed decision rather than a guess.
A job can also wait. TikTok caps how many accounts may post through one app per day; when that cap is reached the status response carries holdReason and holdUntil, the job stays pending, and it goes out on its own once a slot frees. Nothing to retry.
Getting a key
Create an account, authorise the TikTok accounts you want to publish to, then issue a key in Settings. Full request and response examples, filled in with your own base URL, live in the dashboard.
Free while in beta. No card.
Questions before you integrate
How do I authenticate against the EasyDrop API?
With an API key sent as a Bearer token in the Authorization header, on every request. Keys are created and revoked in Settings. The key authorises EasyDrop, not TikTok: the social authorisations stay on our side, bound to the accounts you approved on TikTok's own consent screen.
Why must musicConfirmed be true?
Because TikTok requires the person publishing to confirm they hold the rights to any music used, and no application is allowed to assume that on your behalf. A request without it is rejected rather than published.
Why are comments, duets and stitches off unless I say otherwise?
TikTok does not permit interaction settings to be pre-enabled for you, so the defaults disable them and you opt in per upload. Send the flag as false to turn one on.
Does a successful upload call mean the video is live?
No. The call returns a job, and publishing continues asynchronously: the file goes to TikTok, which transcodes and reviews it. Poll the status endpoint until the job reaches published or failed.