L'API Pubblicità ti consente di creare e gestire programmaticamente la pubblicità su Roblox. Copre due tipi di pubblicità:
- Pubblicità esperienziale — campagne di coinvolgimento che portano i giocatori alle tue esperienze, tramite l'Ads API.
- Pubblicità di articoli — sponsorizzazione di articoli del Marketplace per aumentarne la visibilità.
Prima di utilizzare l'Ads API, genera una chiave API e concedi accesso agli ambiti ad.campaign:read, ad.campaign:write e ad.billing:read. Includi la chiave nell'intestazione della richiesta x-api-key in ogni richiesta. Tutti gli endpoint dell'Ads API sono serviti da https://apis.roblox.com/ads-management/v1.`.
Concetti chiave
- Stato vs. stato di consegna — ogni campagna ha uno stato di ciclo di vita status che controlli (ACTIVE, PAUSED o CANCELLED, che è permanente) e uno deliveryStatus derivato, di sola lettura (IN_REVIEW, SERVING, NOT_SERVING o REJECTED). Una nuova campagna ha status ACTIVE e deliveryStatus IN_REVIEW fino al completamento della revisione della politica pubblicitaria. Quando una campagna non è in corso, leggi deliveryStatusReasons per il motivo.
- Il denaro è rappresentato come stringhe micro-USD — gli importi del budget sono stringhe decimali in micro-USD ("5000000" = $5.00), inviati e restituiti come stringhe per preservare la precisione. Dividi per 1.000.000 per convertire in dollari.
- Obiettivo — solo ENGAGEMENT (portare visite alla tua esperienza) è disponibile in v1.
- Creativi — le campagne utilizzano asset immagine di Open Cloud come creativi. Carica un'immagine tramite l'Assets API, quindi fai riferimento al suo ID asset in creativeAssetIds.
- Modifiche al budget — un aumento del budget si applica immediatamente; una diminuzione su una campagna in corso entra in vigore alla prossima mezzanotte nel fuso orario del conto di fatturazione.
- Versioning — la versione principale è nel percorso (/ads-management/v1). Le modifiche additive e retrocompatibili vengono fornite come versioni minori selezionate con l'intestazione X-Roblox-Api-Version; il baseline congelato 1.0 è il valore predefinito.
Pubblicità esperienziale
Il primo passo in una campagna di pubblicità esperienziale è scegliere l'esperienza da pubblicizzare. Elenca le esperienze che l'account può pubblicizzare, quindi recupera le opzioni della campagna (obiettivi, tipi di pagamento e dimensioni di targeting) e l'idoneità per quella che scegli.
- Copia la chiave API nell'intestazione della richiesta x-api-key.
- Invia una richiesta a advertisable-universes per elencare le esperienze che puoi pubblicizzare.
- Invia una richiesta a campaign-options, sostituendo ${UniverseId} con l'ID dell'universo dell'esperienza target, per confermare l'idoneità e leggere i valori validi.
curl --location 'https://apis.roblox.com/ads-management/v1/advertisable-universes' \
--header 'x-api-key: ${ApiKey}'curl --location 'https://apis.roblox.com/ads-management/v1/campaign-options?universeId=${UniverseId}' \
--header 'x-api-key: ${ApiKey}'Se l'esperienza non è idonea, campaign-options restituisce un motivo di idoneità come NO_PERMISSION (l'account non può pubblicizzare l'esperienza) o BLOCKED (l'esperienza non è idonea per la pubblicità).
Crea una campagna
Invia un POST a campaigns con l'esperienza, gli ID degli asset creativi, il budget e il programma.
- Carica la tua immagine creativa tramite l'Assets API e annota il suo ID asset.
- Imposta l'intestazione x-idempotency-key su un UUID. Ripetere la stessa chiave con un corpo identico entro 24 ore restituisce la campagna originale invece di crearne una duplicata.
- Imposta targetUniverseId, creativeAssetIds, budget e schedule nel corpo della richiesta.
- Invia la richiesta.
curl --location 'https://apis.roblox.com/ads-management/v1/campaigns' \
--header 'x-api-key: ${ApiKey}' \
--header 'x-idempotency-key: ${UUID}' \
--header 'Content-Type: application/json' \
--data '{
"name": "Promo estiva",
"objective": "ENGAGEMENT",
"paymentType": "CREDIT_CARD",
"targetUniverseId": "${UniverseId}",
"creativeAssetIds": ["${AssetId}"],
"budget": { "type": "DAILY", "amountMicros": "5000000" },
"schedule": { "startTime": "2026-08-01T00:00:00Z", "durationInDays": 7 }
}'In caso di successo, la campagna viene restituita con status ACTIVE e deliveryStatus IN_REVIEW. A questo punto, è in coda per la revisione della politica pubblicitaria e non è ancora in corso:
{
"id": "1122334455",
"name": "Promo estiva",
"objective": "ENGAGEMENT",
"paymentType": "CREDIT_CARD",
"targetUniverseId": "1234567890",
"creativeAssetIds": ["9876543210"],
"budget": { "type": "DAILY", "amountMicros": "5000000" },
"schedule": { "startTime": "2026-08-01T00:00:00Z", "durationInDays": 7 },
"status": "ACTIVE",
"deliveryStatus": "IN_REVIEW",
"createTime": "2026-07-27T00:00:00Z",
"updateTime": "2026-07-27T00:00:00Z"
}Campi del corpo della richiesta
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| name | string | Sì | Il nome visualizzato della campagna. |
| objective | string | Sì | L'obiettivo pubblicitario. Solo ENGAGEMENT è supportato in v1. |
| paymentType | string | Sì | Come viene pagata la campagna: CREDIT_CARD, ADS_CREDIT o INVOICE, soggetto a ciò che supporta il conto di fatturazione. Fisso dopo la creazione. |
| targetUniverseId | string | Sì | L'identificatore dell'esperienza da pubblicizzare. |
| creativeAssetIds | string[] | Sì | Gli ID degli asset immagine di Open Cloud da pubblicizzare, come stringhe decimali. Gli asset devono già esistere ed essere utilizzabili dal chiamante. |
| budget | object | Sì | type è DAILY o LIFETIME (fisso dopo la creazione); amountMicros è l'importo in micro-USD come stringa decimale. Deve soddisfare il minimo. |
| schedule | object | Sì | startTime è un timestamp UTC RFC 3339 che non deve essere nel passato; durationInDays è quanto a lungo la campagna è attiva (max 3650). |
| targeting | object | No | Targeting del pubblico opzionale. Omettilo, o invia un oggetto vuoto, per raggiungere tutti i pubblici. Vedi Targeting. |
| bid | object | No | Strategia di offerta opzionale. Solo AUTOMATED è accettato in v1; può essere omesso. |
Targeting
targeting è facoltativo; omettilo o invia un oggetto vuoto per raggiungere tutti i pubblici. Ogni dimensione è un array. Un array vuoto significa "tutti" per quella dimensione.
| Campo | Tipo | Descrizione |
|---|---|---|
| ageGroups | string[] | Fasce di età a cui consegnare: AGE_13_17, AGE_18_24 o AGE_25_PLUS. |
| countries | string[] | Codici paese ISO 3166-1 alpha-2 a cui consegnare, come US. |
| devices | string[] | Tipi di dispositivo a cui consegnare: PHONE, TABLET, DESKTOP o CONSOLE. |
Controlla se una campagna è in corso
Dopo aver creato una campagna, controlla il suo stato di consegna fino a quando non si stabilizza su SERVING, NOT_SERVING o REJECTED. Usa campaigns:batchGetStatus per controllare fino a 100 campagne per chiamata.
curl --location 'https://apis.roblox.com/ads-management/v1/campaigns:batchGetStatus' \
--header 'x-api-key: ${ApiKey}' \
--header 'Content-Type: application/json' \
--data '{ "campaignIds": ["1122334455"] }'{
"statuses": [
{ "id": "1122334455", "status": "ACTIVE", "deliveryStatus": "SERVING" }
]
}Qualsiasi ID che non viene trovato o non è di proprietà del chiamante viene restituito in un array failures con motivo NOT_FOUND.
| deliveryStatus | Significato |
|---|---|
| IN_REVIEW | In coda per la revisione della politica pubblicitaria; non ancora in corso. |
| SERVING | Attivamente in corso. deliveryStatusReasons può includere LEARNING mentre la campagna si avvia. |
| NOT_SERVING | Non attualmente in corso. Controlla deliveryStatusReasons (ad esempio, PAUSED o COMPLETED). |
| REJECTED | Rifiutato in revisione. Controlla deliveryStatusReasons (ad esempio, MODERATED). |
Gestisci una campagna
Usa PATCH /campaigns/{id} per mettere in pausa, riprendere, rinominare o modificare il budget. Invia solo i campi che stai cambiando.
curl --location --request PATCH 'https://apis.roblox.com/ads-management/v1/campaigns/1122334455' \
--header 'x-api-key: ${ApiKey}' \
--header 'Content-Type: application/json' \
--data '{ "status": "PAUSED" }'- Riprendi: invia { "status": "ACTIVE" }.
- Annulla: invia { "status": "CANCELLED" }. L'annullamento è permanente.
- Cambia budget: invia un nuovo budget.amountMicros. Un aumento si applica immediatamente; una diminuzione su una campagna in corso entra in vigore alla prossima mezzanotte nel fuso orario del conto di fatturazione, visualizzata come budget.scheduledAmountMicros e budget.scheduledEffectiveTime fino ad allora.
Report sulle prestazioni
Le metriche delle prestazioni della campagna—spesa, impressioni, riproduzioni e altro—vengono riportate tramite l'Analytics API, la casa per le metriche pubblicitarie e delle esperienze.
Errori comuni
Gli errori restituiscono un involucro con uno status HTTP, un breve title, un detail leggibile dall'uomo e un array errors in cui ogni voce ha un code stabile e leggibile dalla macchina e un message.
| Stato | Codice | Causa | Risoluzione |
|---|---|---|---|
| 400 | INVALID_ARGUMENT | Un campo obbligatorio è mancante o non valido, è stato inviato un endTime, un asset creativo è non valido, o il budget è al di sotto del minimo. | Controlla i Campi del corpo della richiesta. Il budget minimo è indicato nel messaggio di errore. |
| 403 | PERMISSION_DENIED | Il chiamante non può gestire il conto di fatturazione, l'esperienza non è pubblicizzabile, o il chiamante non ha il permesso di utilizzare un creativo. | Conferma l'account e che l'esperienza sia pubblicizzabile utilizzando campaign-options. |
| 409 | — | La x-idempotency-key è stata riutilizzata con un corpo di richiesta diverso, o una scrittura concorrente ha causato un conflitto. | Usa un nuovo UUID per una nuova campagna, o ripeti la richiesta. |
| 429 | RATE_LIMITED | Troppe richieste in un breve periodo. | Aspetta e ripeti dopo un breve ritardo. |
| 500 | — | Si è verificato un errore del server imprevisto. | Ripeti la richiesta. Se l'errore persiste, crea un nuovo post su DevForum. |
Pubblicità di articoli
Sponsorizza articoli del Marketplace come articoli per avatar, bundle e pass per aumentarne la visibilità su Roblox. Puoi creare e gestire sponsorizzazioni di articoli nel Gestore di articoli sponsorizzati o programmaticamente tramite gli endpoint delle campagne sponsorizzate su adconfiguration.roblox.com, elencati sotto Pubblicità nella documentazione API. Per ulteriori informazioni, vedi Articoli sponsorizzati.