Conectează un site în 5 minute (API)
Tot fluxul publisherului prin API: site, verificarea proprietății, zone, codul de integrare, testul. Același lucru îl poate face și agentul tău AI.
Documentația API Colecția Postman OpenAPI (JSON)
1. Creează un token
În panou, „Acces API” → token nou cu drepturile sites:write și zones:write. Tokenul se afișează o singură dată.
export ADS_TOKEN="…" export ADS_API="https://ads-laravel.codex.md/api/v1"
2. Adaugă site-ul
Răspunsul conține id-ul site-ului (data.id), folosit în pașii următori. Categoriile sunt coduri IAB din GET /taxonomies/iab.
curl -X POST "$ADS_API/sites" \
-H "Authorization: Bearer $ADS_TOKEN" -H "Accept: application/json" \
-H "Content-Type: application/json" -H "Idempotency-Key: $(uuidgen)" \
-d '{"domain":"exemplu.md","name":"Exemplu","language":"ro","categories":["596"],"audience":["b2c"]}'
3. Dovedește că site-ul e al tău și trimite-l la verificare
Răspunsul spune exact ce meta-tag pui în <head> pe prima pagină. După publicare, verifici și trimiți site-ul echipei (de obicei o zi lucrătoare).
curl -X POST "$ADS_API/sites/SITE_ID/verification" -H "Authorization: Bearer $ADS_TOKEN" \
-H "Accept: application/json" -H "Content-Type: application/json" -d '{"method":"meta"}'
# după ce meta-tag-ul e pe site:
curl -X POST "$ADS_API/sites/SITE_ID/verification/check" -H "Authorization: Bearer $ADS_TOKEN" -H "Accept: application/json"
curl -X POST "$ADS_API/sites/SITE_ID/submit" -H "Authorization: Bearer $ADS_TOKEN" -H "Accept: application/json"
4. Creează o zonă și ia codul
După aprobare (webhook-ul site.approved), creezi zonele. Codul: scriptul site-ului o dată pe pagină, plus un element pentru fiecare zonă; platform poate fi html, wordpress, react, nextjs, vue sau blade.
curl -X POST "$ADS_API/sites/SITE_ID/zones" -H "Authorization: Bearer $ADS_TOKEN" \
-H "Accept: application/json" -H "Content-Type: application/json" -H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Sidebar","size":"300x250"}'
curl "$ADS_API/zones/ZONE_ID/code?platform=html" -H "Authorization: Bearer $ADS_TOKEN" -H "Accept: application/json"
5. Verifică integrarea
După publicare, deschide o pagină cu codul, apoi întreabă dacă zona a fost văzută și livrează.
curl -X POST "$ADS_API/zones/ZONE_ID/integration/check" -H "Authorization: Bearer $ADS_TOKEN" -H "Accept: application/json"
PHP
$http = new \GuzzleHttp\Client(['base_uri' => 'https://ads-laravel.codex.md/api/v1/', 'headers' => [
'Authorization' => 'Bearer '.getenv('ADS_TOKEN'), 'Accept' => 'application/json',
]]);
$site = json_decode((string) $http->post('sites', [
'headers' => ['Idempotency-Key' => bin2hex(random_bytes(16))],
'json' => ['domain' => 'exemplu.md', 'name' => 'Exemplu', 'language' => 'ro', 'categories' => ['596'], 'audience' => ['b2c']],
])->getBody(), true)['data'];
$meta = json_decode((string) $http->post("sites/{$site['id']}/verification", ['json' => ['method' => 'meta']])->getBody(), true);
JavaScript
const api = (path, init = {}) => fetch(`https://ads-laravel.codex.md/api/v1${path}`, {
...init,
headers: { Authorization: `Bearer ${process.env.ADS_TOKEN}`, Accept: 'application/json', 'Content-Type': 'application/json', ...init.headers },
}).then((r) => r.json());
const { data: site } = await api('/sites', {
method: 'POST',
headers: { 'Idempotency-Key': crypto.randomUUID() },
body: JSON.stringify({ domain: 'exemplu.md', name: 'Exemplu', language: 'ro', categories: ['596'], audience: ['b2c'] }),
});
const verification = await api(`/sites/${site.id}/verification`, { method: 'POST', body: JSON.stringify({ method: 'meta' }) });
Bine de știut
Format RFC 9457 (application/problem+json), cu mesajul în limba din Accept-Language (ro, ru, en) și request_id pentru suport.
Antetul Idempotency-Key e obligatoriu la creare: aceeași cheie în 24 h întoarce același rezultat, chiar dacă reîncerci.
Primești site.approved, approval.requested, zone.integration_detected și altele, semnate HMAC-SHA256 în antetul Codex-Signature.
Serverul MCP face aceiași pași din conversație, inclusiv inserarea codului în proiect.