# TikTok publish status

> Poll a TikTok publish until it completes or fails.

Canonical: <https://www.tryadeli.com/docs/api/posts/get-tiktok-publish-status>

`GET https://app.tryadeli.com/api/v1/posts/tiktok/status`

Authorization: `Bearer <API key>` — see [Authentication](https://www.tryadeli.com/docs/authentication)

Polls a post that [Publish to TikTok](https://www.tryadeli.com/docs/api/posts/publish-tiktok) accepted
with `202`.

**Query parameters**

| Name        | Type     | Required | Description                                                                       |
| ----------- | -------- | -------- | --------------------------------------------------------------------------------- |
| `accountId` | `uuid`   | Yes      |                                                                                   |
| `publishId` | `string` | Yes      | From the publish response. 1–200 characters of \[A-Za-z0-9.\_\~-].                |
| `profileId` | `uuid`   |          | Optional, because accountId names its profile. If you pass both, they must agree. |

**Fields**

| Name                | Type                      | Required | Description                                                                                                                                                                     |
| ------------------- | ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status`            | `string`                  |          | `PROCESSING_DOWNLOAD` while TikTok fetches the media; then `PUBLISH_COMPLETE`, `SEND_TO_USER_INBOX` (a draft was delivered), or `FAILED`. The last three are final.             |
| `publicPostIds`     | `string[]`                |          | The TikTok post ids, once the post is public. They can arrive up to a few minutes after PUBLISH\_COMPLETE, so keep polling until they do. Absent for posts that are not public. |
| `failureReason`     | `string \| null`          |          | TikTok's machine-readable reason when `FAILED`, such as `frame_rate_check_failed`, `video_pull_failed`, or `spam_risk_too_many_posts` (the daily limit).                        |
| `publiclyAvailable` | `boolean \| null`         |          | Whether the post is publicly viewable. `false` after TikTok reports it is no longer public — moderation, or the creator made it private. `null` when not yet known.             |
| `source`            | `"webhook" \| "provider"` |          | Whether the answer came from a TikTok webhook Adeli received or a live status call.                                                                                             |

## Request examples

**cURL**

```bash
curl --fail-with-body "https://app.tryadeli.com/api/v1/posts/tiktok/status?accountId=00000000-0000-0000-0000-000000000000&publishId=v_pub_url%7Ev1.2345123456789123456" \
  -H "Authorization: Bearer $ADELI_API_KEY"
```

**JavaScript**

```javascript
const response = await fetch("https://app.tryadeli.com/api/v1/posts/tiktok/status?accountId=00000000-0000-0000-0000-000000000000&publishId=v_pub_url%7Ev1.2345123456789123456", {
  headers: {
    Authorization: `Bearer ${process.env.ADELI_API_KEY}`,
  },
});
console.log(await response.json());
```

**Python**

```python
import os

import requests

response = requests.get(
    "https://app.tryadeli.com/api/v1/posts/tiktok/status",
    headers={"Authorization": f"Bearer {os.environ['ADELI_API_KEY']}"},
    params={
        "accountId": "00000000-0000-0000-0000-000000000000",
        "publishId": "v_pub_url~v1.2345123456789123456",
    },
)
print(response.json())
```

## Responses

### 200

```json
{
  "platform": "tiktok",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "profileId": "00000000-0000-4000-8000-000000000001",
  "publishId": "v_pub_url~v1.2345123456789123456",
  "status": "PUBLISH_COMPLETE",
  "publicPostId": "7300000000000000000",
  "publicPostIds": ["7300000000000000000"],
  "failureReason": null,
  "publiclyAvailable": true,
  "source": "webhook"
}
```

### 429

```json
{
  "error": {
    "code": "rate_limited",
    "message": "TikTok rate limit reached; retry later"
  }
}
```
