Skip to content
Get API key (opens in a new tab)

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 on data.post.id.
  • profile is 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

Example 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
versionnumberrequired

The 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.

idstringrequired

Stable 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.

typestringrequired

What 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>required

When the event happened, as an ISO 8601 timestamp.

originobject

Why your endpoint received the event. Omitted when the event was forwarded without a Flow of your own.

origin properties
flowobjectrequired

The Flow that sent the event.

flow properties
idstringrequired

The Flow id, shown in the Flow URL.

namestringrequired

The Flow name at the time of sending.

triggerstringrequired

The event that started the Flow. One of order.fulfilled, order.delivered, product-review.submitted, company-review.submitted, product-review.replied, company-review.replied, upload.completed, post.approved, profile.program-joined, profile.program-left, tier.earned, reward.fulfilled, tier.evaluation-approaching, points.expiration-approaching.

dataobjectrequired

The resources the event carries, keyed by resource name. type decides which resources are included, and resources your plan does not include are left out.

data properties
postobject
post properties
idstringrequired

Cevoid post ID.

profile_idstring

Cevoid profile ID for the contributor, when known.

added_by_workspacebooleanrequired

Whether the post was added by the workspace rather than a profile.

custom_usernamestring

Post-specific display-name override, when set.

typestringrequired

Primary media type. One of IMAGE, VIDEO.

statusstringrequired

Moderation state. One of APPROVED, PENDING, DECLINED, REMOVED, NONE.

mediaobjectrequired
media properties
urlstring<uri>required

Delivery URL for the media asset.

thumbnail_urlstring<uri>

Smaller preview image when available.

sprite_urlstring<uri>

Video sprite image for timeline previews when available.

blurhashstring

BlurHash placeholder for the media asset.

filenamestring

Original filename, when available.

aspect_rationumber

Width divided by height.

duration_secondsnumber

Video duration in seconds.

has_audioboolean

Whether video media includes an audio track.

captionstring

Contributor caption.

hide_captionbooleanrequired

Whether clients should hide the caption.

languagestring

IETF BCP 47 language tag for the caption.

altstring

Alternative text for the media.

video_captionsstring

WebVTT captions for video media.

video_descriptionstring

Accessible description of video content.

sourceobject
source properties
platformstringrequired

External platform where the post originated. One of INSTAGRAM, TIKTOK.

carousel_indexinteger

Zero-based position within the source carousel. Omitted for standalone posts or unknown positions. Group slides by platform and external_id when available.

usernamestring

Source account username when stored with the post.

external_idstring

Post identifier from the external platform.

urlstring<uri>

Original public post URL.

posted_atstring<date-time>

ISO 8601 timestamp when the external post was published.

originobject
origin properties
typestringrequired

How the post entered the workspace. Omitted when the origin is unknown. One of INSTAGRAM_FEED, INSTAGRAM_HASHTAG, INSTAGRAM_TAGGED, INSTAGRAM_MENTIONED, TIKTOK_FEED, CEVOID_GENERAL, CEVOID_CUSTOM, WORKSPACE_UPLOADS, WORKSPACE_COPIES, WORKSPACE_IMPORTS, ACTIVITIES.

custom_linkobject
custom_link properties
urlstring<uri>required

Destination URL.

titlestringrequired

Link title.

descriptionstring

Link description.

image_urlstring<uri>

Link preview image.

labelsstring[]required

Cevoid label IDs assigned to the post.

tagged_productsobject[]required
tagged_products[] properties
product_idstringrequired

Cevoid product ID.

xnumber

Normalized horizontal position.

ynumber

Normalized vertical position.

posted_atstring<date-time>required

Effective content date. Uses the stored posted date, falling back to the Instagram date, TikTok date, then creation date for legacy posts. Does not change list ordering.

created_atstring<date-time>required

ISO 8601 timestamp when the Post was created.

updated_atstring<date-time>required

ISO 8601 timestamp when the Post was last updated.

profileobject
profile properties
idstringrequired

Cevoid profile ID.

external_idstring

Identifier this profile carries in the workspace source system, when known.

namestring

Display name of the profile.

first_namestring

First name of the profile.

last_namestring

Last name of the profile.

emailstring

Email address for the profile.

avatar_urlstring

Profile image URL.

countrystring

Country code associated with the profile.

languagestring

Preferred language code associated with the profile.

locationstring

Free-form location associated with the profile.

social_instagram_handlestring

Instagram handle associated with the profile.

social_tiktok_handlestring

TikTok handle associated with the profile.

social_x_handlestring

X handle associated with the profile.

birthdaystring<date>

Birthday in YYYY-MM-DD format.

biostring

Profile biography text.

notesstring

Merchant notes about the profile.

created_atstring<date-time>required

ISO 8601 timestamp when the profile was created.

updated_atstring<date-time>required

ISO 8601 timestamp when the profile was last updated.