Creative Hub
Creative Hub is where you group processed assets into creatives that can be attached to an ad. See Creative Management Overview for how assets and creatives differ.
¶ Creating Creatives
Creatives are created in batches. Each creative combines the assets it uses with the text and styling that go with them:
curl -X POST "https://api.uber.com/v1/ads/{account_id}/creatives" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"creatives": [
{
"name": "Summer Campaign Banner",
"type": {
"sponsored_brands": {
"banner_asset_id": "b3d9f0a2-1c47-4e8b-9a52-7f6c1d0e3a84",
"title": "Summer Refresh Sale",
"gradient_color": "#1A73E8"
}
}
}
]
}'
The response contains one result per submitted creative, in request order:
{
"results": [
{ "success": { "id": "7c2f4b19-8ad3-4e60-b1f7-9e05c3a2d846" } },
{ "failure": {
"error_code": "INVALID_ARGUMENT",
"error_message": "title exceeds the maximum of 25 characters"
} }
]
}
This is a partial-success operation: a 200 response does not mean every creative was created, so inspect each result rather than the status code.
¶ Review Statuses
Creatives are reviewed before they can serve, and a creative must reach CREATIVE_STATUS_TYPE_APPROVED before an ad can serve it. See Creative for the full list of status values.
When a creative is rejected, review_metadata.review_notes explains why. Rejection is not recoverable in place — correct the input and create a new creative.
¶ Listing Creatives
Get Creatives returns the account’s creatives and is the endpoint to poll while waiting for review. It supports page_token and page_limit for pagination, and a creative_id filter for one creative:
curl "https://api.uber.com/v1/ads/{account_id}/creatives?creative_id=7c2f4b19-8ad3-4e60-b1f7-9e05c3a2d846" \
-H "Authorization: Bearer <TOKEN>"