List this tenant's promoted activities — server token only
const url = 'http://localhost:3000/v1/promoted?limit=20';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://localhost:3000/v1/promoted?limit=20' \ --header 'Authorization: Bearer <token>'Newest first, retracted rows included (their deleted_at is set), with served_count for each. This is where delivery counts are read; there is no stats dashboard.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Deprecated alias for next. next wins if both are sent.
Opaque paging token. Pass the next value from the previous page.
Responses
Section titled “Responses”A page of promoted activities, newest first.
object
Opaque cursor. Null when no further page.
The full row as returned to the tenant’s backend by GET /v1/promoted.
object
object
Null means every user. Otherwise feed refs; a caller matching ANY of them is eligible.
Feed opens that received this row — deliveries, not views. Repeat placement within one feed session does not increment it, and a viewport impression is not observable server-side; count those client-side via the react SDK callbacks.
Set when retracted. Retracted rows stay listed here but are never served.
Example
{ "results": [ { "actor": "system:fcurban", "audience": [ "city:belgrade" ] } ]}Invalid, expired, revoked, or absent token.
object
object
Present only for VALIDATION_FAILED.
object
Example
{ "error": { "code": "VALIDATION_FAILED" }}User tokens cannot manage promoted activities — these routes are server token only.
object
object
Present only for VALIDATION_FAILED.
object
Example
{ "error": { "code": "VALIDATION_FAILED" }}Rate limit exceeded.
object
object
Present only for VALIDATION_FAILED.
object
Example
{ "error": { "code": "VALIDATION_FAILED" }}