Approvals
Read approval status and consent details, or resend an approval link.
Preview
Preview: the API and MCP server are in private beta; details may change.
An approval (apr_...) is the human checkpoint before a post, or a TikTok target specifically, goes live. Approvals are created as part of POST /posts when approval.mode: "link" (the default), and are always required for a TikTok direct target unless your own UI supplies an explicit consent object (see Platform rules).
Required scope: posts:read to get; posts:write to resend.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /approvals/{id} | Get status and, once decided, the consent snapshot |
| POST | /approvals/{id}/resend | Generate a new link; the old one stops working |
Get an approval
curl https://api.getimma.com/v1/approvals/apr_01J... \
-H "Authorization: Bearer imma_live_xxxxxxxxxxxxxxxxxxxx"Response, before a decision:
{
"id": "apr_01J...",
"post_id": "post_01J...",
"status": "pending",
"url": "https://getimma.com/approve/k8Fq2...",
"expires_at": "2026-10-01T18:30:00+07:00"
}
Response, after approval:
{
"id": "apr_01J...",
"post_id": "post_01J...",
"status": "approved",
"decided_at": "2026-09-28T11:25:00+07:00",
"decided_by_name": "Sekar",
"consent_snapshot": {
"tiktok": {
"privacy_level": "PUBLIC_TO_EVERYONE",
"disable_comment": true,
"disable_duet": true,
"disable_stitch": true,
"is_aigc": true
}
}
}
status is one of pending, approved, rejected, expired or cancelled. consent_snapshot only appears once a decision has been made, and is the record of exactly what the account owner saw and chose.
Resend
curl -X POST https://api.getimma.com/v1/approvals/apr_01J.../resend \
-H "Authorization: Bearer imma_live_xxxxxxxxxxxxxxxxxxxx"
Generates a new token and link. The previous link stops working immediately, even if it had not expired yet.
Errors
| Code | HTTP | When |
|---|---|---|
unauthorized | 401 | Missing or invalid API key |
insufficient_scope | 403 | Key lacks posts:read or posts:write |
not_found | 404 | Approval does not exist, or belongs to another workspace |
already_decided | 409 | The approval already has a decision; only one decision per token is possible |
See Errors for the shared error shape.
Platform notes
For a TikTok target, the account owner picks the privacy level and interaction toggles on the approval page itself; nothing is preselected by whoever created the post or by an AI agent. If a request to POST /posts includes a TikTok privacy_level alongside approval.mode: "link", that value is ignored in favor of the approver's own choice, and the response includes a warning. See Platform rules for the full consent contract.