Skip to content

frame.ready

POST

A frame finished rendering and its image is ready. Shootika sends this POST to every active webhook endpoint of the store that subscribes to frame.ready. Any 2xx answer within 10 seconds is a success; anything else is tried up to 8 times over about 24 hours. Verify the Shootika-Signature header before trusting the body.

Shootika-Signature
required
string

t=<unix seconds>,v1=<hex>. v1 is the hex HMAC-SHA256 of the string <t>.<raw request body>, keyed with the endpoint’s whole whsec_... secret. Recompute it over the raw bytes you received, compare in constant time, and reject a t more than 5 minutes from your clock.

Media typeapplication/json
object
id
required

Unique per event (evt_...). Use it to ignore a delivery you already handled.

string
type
required
string
Allowed values: frame.ready frame.failed frame.approved frame.unapproved webhook.test
created_at
required
string format: date-time
data
required

frame for the four frame events; empty for webhook.test.

object
frame
object
id
required
string format: uuid
product_id
required
string format: uuid
source_image_id
required
string format: uuid
scene_id
required
string format: uuid
regenerate_of
required

The frame this one retries, or null.

string | null format: uuid
status
required

queued waiting to start, processing being made, ready finished, failed could not be made (and refunded), canceled stopped.

string
Allowed values: queued processing ready failed canceled
approved
required
boolean
approved_at
required
string | null format: date-time
image
required
Any of:
object
url
required
string format: uri
width
required
integer | null
height
required
integer | null
expires_at
required

When an unapproved frame is deleted. Null once the frame is approved.

string | null format: date-time
error
required
Any of:
object
code
required
string
Allowed values: generation_failed generation_timeout service_busy
message
required
string
credit_refunded
required

True when the frame failed, because a failed frame is always refunded. Null otherwise.

boolean | null
created_at
required
string format: date-time
ready_at
required
string | null format: date-time
type
required
Allowed value: frame.ready

Received. The body is ignored.