IMMA AI Docs
API reference

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

MethodPathDescription
GET/approvals/{id}Get status and, once decided, the consent snapshot
POST/approvals/{id}/resendGenerate 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

CodeHTTPWhen
unauthorized401Missing or invalid API key
insufficient_scope403Key lacks posts:read or posts:write
not_found404Approval does not exist, or belongs to another workspace
already_decided409The 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.

On this page