post.approved
Sent when a post is approved or added already approved, with the post and, when it has a creator, the creator's profile.
Use it to reward creators once their content is cleared for use, for example with loyalty points in another system.
When it fires
- When a post is approved in the inbox, one at a time or in bulk.
- When a post is added already approved, such as a workspace upload or an auto-approved Instagram or TikTok import.
- Saving a post that is already approved sends nothing.
- If a post is set back to pending and approved again, it fires again with a new
id. To act once per post, deduplicate ondata.post.id. profileis there only when the post has a creator. Most Instagram and TikTok imports have none.
Receive it
Pick post.approved in a webhook destination's events, or tick All events. See Create a destination.
To filter it or wait before sending, send it from a Flow on the Post approved trigger instead. See Send from a Flow.
Payload
{
"created_at": "2026-11-02T09:30:00.000Z",
"data": {
"post": {
"added_by_workspace": false,
"alt": "Person wearing a linen shirt",
"caption": "Summer outfit",
"created_at": "2026-08-01T10:00:00.000Z",
"custom_link": {
"description": "Explore the complete look.",
"image_url": "https://cdn.cevoid.com/links/summer.jpg",
"title": "Shop the summer edit",
"url": "https://shop.example.com/summer"
},
"hide_caption": false,
"id": "pst_summerlook",
"labels": [
"lbl_summer",
"lbl_featured"
],
"language": "en",
"media": {
"aspect_ratio": 1.25,
"blurhash": "LEHV6nWB2yk8pyo0adR*.7kCMdnj",
"duration_seconds": 12.5,
"filename": "summer-look.jpg",
"has_audio": true,
"sprite_url": "https://cdn.cevoid.com/posts/pst_summerlook-sprite.jpg",
"thumbnail_url": "https://cdn.cevoid.com/posts/pst_summerlook-thumbnail.jpg",
"url": "https://cdn.cevoid.com/posts/pst_summerlook.jpg"
},
"origin": {
"type": "INSTAGRAM_TAGGED"
},
"posted_at": "2026-08-01T09:00:00.000Z",
"profile_id": "prf_sarah",
"source": {
"external_id": "18000000000000000",
"platform": "INSTAGRAM",
"posted_at": "2026-08-01T09:00:00.000Z",
"url": "https://www.instagram.com/p/example/",
"username": "sarah.lifestyle"
},
"status": "APPROVED",
"tagged_products": [
{
"product_id": "prd_abc123def456gh",
"x": 0.35,
"y": 0.65
}
],
"type": "VIDEO",
"updated_at": "2026-08-02T10:00:00.000Z",
"video_captions": "WEBVTT\n\n00:00.000 --> 00:02.000\nSummer outfit.",
"video_description": "A person shows a summer outfit."
},
"profile": {
"avatar_url": "https://cdn.cevoid.com/avatars/prf_sarah/profile.jpg",
"bio": "Lifestyle creator and photography enthusiast",
"birthday": "1992-04-18",
"country": "US",
"created_at": "2026-01-15T09:30:00.000Z",
"email": "sarah.johnson@example.com",
"external_id": "customer_7391056823401",
"first_name": "Sarah",
"id": "prf_sarah",
"language": "en",
"last_name": "Johnson",
"location": "San Francisco, CA",
"name": "Sarah Johnson",
"notes": "VIP customer; prefers email communication",
"social_instagram_handle": "sarah.lifestyle",
"social_tiktok_handle": "sarah.creates",
"social_x_handle": "sarah_j",
"updated_at": "2026-01-20T14:22:15.000Z"
}
},
"id": "evt_m3p82kdq5xw7tz4c",
"type": "post.approved",
"version": 1
}Show all 81 linesShow fewer lines
versionnumberrequiredThe version of this event type. A published version only gains fields, so ignore fields you do not use; a breaking change is a new version.
idstringrequiredStable event id (evt_ plus 16 characters), also sent as the webhook-id header. Retries and manual replays send the same id, so ignore an event whose id you have already processed.
typestringrequiredWhat data describes. New types are added over time, and an endpoint on "All events" receives them, so ignore any type you do not handle.
created_atstring<date-time>requiredWhen the event happened, as an ISO 8601 timestamp.
originobjectWhy your endpoint received the event. Omitted when the event was forwarded without a Flow of your own.
dataobjectrequiredThe resources the event carries, keyed by resource name. type decides which resources are included, and resources your plan does not include are left out.