Setting up Dynamic Graphics Render API events with Adobe I/O Events
These instructions describe how to set up and use Adobe I/O Events for Dynamic Graphics Render (DGR) job notifications. You can stream render job lifecycle updates to your own infrastructure instead of relying only on polling the status URL returned by the Render API.
Introduction
DGR follows an asynchronous job model. After you start a render job, you can poll the Get Status API for completion and output URLs. Adobe I/O Events complements that pattern by delivering near real-time notifications to a webhook you register in Adobe Developer Console, using the CloudEvents specification.
This guide focuses on third-party (external) integrations that use Adobe Developer Console, OAuth credentials, and an HTTPS webhook. Adobe internal services may use different integration paths on Adobe's network.
How notifications work
When a render job reaches certain lifecycle points, the service emits events that are routed through Adobe's event pipeline. A filtering and transformation layer ensures that only events relevant to your IMS organization are forwarded. Adobe I/O Events wraps those events in a CloudEvents 1.0 envelope and delivers them to your subscription.
For webhooks, Adobe recommends batch delivery when your use case allows it, so your endpoint can process multiple notifications per request (see the InDesign APIs events setup guide for similar guidance).
Setup Adobe I/O
Start with Getting Started with Adobe I/O Events. The steps below mirror other Firefly Services APIs (for example InDesign APIs - Firefly Services events), adapted for Dynamic Graphics Render.
Open Adobe Developer Console and sign in. When prompted, use the actions in the Console UI to proceed.
-
Select Create new project (or open an existing project where you want to add the subscription).
-
Select Add for Events (or Add to Project and choose Event).
-
Under Configure event registration, filter providers by Creative Cloud (or the filter your team uses for Firefly Services event providers).
-
Select the Dynamic Graphics Render provider:
{DGR_EVENTS_PROVIDER_NAME}(replace with the exact label shown in Console once your team publishes it). -
Subscribe to the event types your application needs:
{LIST_OF_EVENT_TYPES}(replace with the codes listed for that provider in Console). -
Add OAuth Server-to-Server credentials to the project if you have not already. This credential type uses the OAuth 2.0
client_credentialsgrant to obtain access tokens for API calls. -
Complete Event registration: provide a name and description for this subscription.
-
Under Configure event registration, choose delivery:
- Webhook — Provide a public HTTPS URL. The endpoint must respond correctly to Adobe's GET challenge (return the
challengequery parameter when present) and acknowledge POST deliveries so Adobe I/O Events does not disable the webhook after retries. - Runtime action — Alternatively, forward events to Adobe I/O Runtime. Select a namespace and action as described in Runtime documentation.
- Webhook — Provide a public HTTPS URL. The endpoint must respond correctly to Adobe's GET challenge (return the
-
Save the registration and confirm the status is Active. If you chose a webhook, confirm it passed the challenge without errors.
data-variant=info
data-slots=heading, text
{DGR_EVENTS_PROVIDER_NAME} and {LIST_OF_EVENT_TYPES} with the values your engineering or program team supplies. They must match what appears in Adobe Developer Console for your organization.Event data structure
Events are JSON and follow the CloudEvents 1.0 shape. Field names and nested payloads may vary by release; treat the examples below as illustrative until you capture a live delivery from your subscription.
Third-party webhook payloads are sanitized and typically include only job identification, high-level status, and a URL you can use to fetch full job details (for example the same status URL returned when you started the render job). Confirm exact property names (job_id vs jobId, and so on) with your engineering contact.
Example event (single)
{
"data": {
"key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"source": "dynamic-graphics-render",
"value": {
"job_id": "ff7b0f8e-47f3-4d8f-9a8b-7a9f9b2f4c42",
"status": "succeeded",
"status_url": "https://audio-video-api.adobe.io/v1/status/ff7b0f8e-47f3-4d8f-9a8b-7a9f9b2f4c42"
}
},
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"source": "urn:uuid:00000000-0000-4000-8000-000000000001",
"specversion": "1.0",
"type": "{DGR_EVENT_TYPE_EXAMPLE}",
"datacontenttype": "application/json",
"time": "2026-05-13T12:00:00.000Z",
"eventid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"recipientclientid": "<your_console_client_id>"
}
Example event (batch)
When batch delivery is enabled, your webhook may receive an array of CloudEvents objects in one POST body.
[
{
"data": {
"key": "d4e5f6a7-b8c9-0123-def0-234567890123",
"source": "dynamic-graphics-render",
"value": {
"job_id": "ff7b0f8e-47f3-4d8f-9a8b-7a9f9b2f4c42",
"status": "running",
"status_url": "https://audio-video-api.adobe.io/v1/status/ff7b0f8e-47f3-4d8f-9a8b-7a9f9b2f4c42"
}
},
"id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"source": "urn:uuid:00000000-0000-4000-8000-000000000001",
"specversion": "1.0",
"type": "{DGR_EVENT_TYPE_EXAMPLE}",
"datacontenttype": "application/json",
"time": "2026-05-13T12:00:01.000Z",
"eventid": "f6a7b8c9-d0e1-2345-f012-456789012345",
"recipientclientid": "<your_console_client_id>"
}
]
Field reference
eventididtypesourcetimedatadata.keydata.sourcedata.valuerecipientclientidEvent types available for subscription
data-variant=info
data-slots=heading, text
End-to-end checklist
Use this checklist to validate your integration.
- Project and credentials — Create or reuse an Adobe Developer Console project with OAuth Server-to-Server credentials and note the
client_id(API key) and secret for token requests. - Event registration — Add Events, select
{DGR_EVENTS_PROVIDER_NAME}, choose{LIST_OF_EVENT_TYPES}, and complete registration with Webhook or Runtime delivery. - Webhook — Use a public HTTPS test or staging endpoint that implements the GET challenge and acknowledges POST bodies. Register that URL in the event registration.
- Verify activation — Confirm registration status is Active and the webhook challenge succeeded.
- Call the Render API — Use the same Console application's credentials as for other Audio/Video API calls. Submit a render job per Using the Render API (
POST https://audio-video-api.adobe.io/v1/templates/renderwith valid bearer token andx-api-key). - Confirm delivery — Observe incoming CloudEvents at your webhook when the job transitions through subscribed lifecycle points. Use the
status_url(or equivalent) in the payload to reconcile with Get Status if needed.
Related guides
- Using the Render API
- Using the Describe API
- Quickstart for Presets with the Dynamic Graphics Render API
- Getting Started with the Audio/Video API