Skip to main content
An asset is a reusable creative record on your ad account: an image, a destination URL, and (for catalog items) product metadata like brand, price, and availability. Every ad references exactly one asset by asset_id, and the asset supplies the ad’s image and destination URL.
Assets are read-only over /v1/. There is no create, update, or delete endpoint, and no inline image upload — the API accepts no image bytes and no image URL anywhere. Create assets in the Thrad Platform dashboard, or let a product feed populate them for you. Then reference them here by asset_id.
All paths are relative to the base URL https://api.thrad.ai/v1. Authenticate every request with Authorization: Bearer ak_.... See Authentication.

The asset object

string
The asset’s unique identifier (UUID). This is the value you pass as an ad’s asset_id.
string
Display name. May be an empty string.
string | null
Free-text description, or null.
string | null
The asset’s destination URL — where a user lands after clicking. null if unset.
A poll ad requires an asset that has a url; attaching one without it returns 400 invalid_value. A card ad reads its destination from this field too, surfaced on the ad as the read-only creative.target_url.
string | null
The primary creative image, as a resolved storage URL. For a feed asset whose image has not been ingested yet, this falls back to the merchant-hosted image URL.
string[]
Any secondary images, as resolved storage URLs. Empty array when there are none.
string[]
Free-form tags on the asset. Empty array when there are none.
string | null
Brand name, or null.
string | null
Stock status for a catalog item (e.g. "in stock"), or null.
object | null
The item price as { "amount": "49.99", "currency": "USD" }, or null when unpriced. amount is a decimal string, not micros.
object | null
The discounted price, same shape as price, or null.
string
Where the asset came from: feed (synced from a product feed) or manual (created in the dashboard).
string
Creation time, as an ISO 8601 timestamp in UTC.
string
Last-modified time, as an ISO 8601 timestamp in UTC.

List assets

Returns the asset catalog for your organization, newest first by default.
integer
default:"20"
Number of assets to return, 1–500.
string
default:"desc"
Sort direction by creation time: asc or desc.
string
Cursor for the previous page — pass a prior response’s first_id. Mutually exclusive with after.
string
Cursor for the next page — pass a prior response’s last_id. Mutually exclusive with before.

Retrieve an asset

Fetches a single asset by ID.
string
required
The asset UUID. An unknown or cross-organization ID returns 404.

Using an asset on an ad

Pass the asset’s id as asset_id when creating an ad — the creative itself carries copy only:
Re-pointing an ad’s asset_id moves the creative with it: a poll’s destination always re-derives from the new asset, and a card’s image re-derives when the image it was showing came from the asset being replaced (so a custom image or a logo fallback survives the swap).

Errors

Errors use the bare shape { "error": { "message", "type", "param", "code" } }.