Vytvářejte přímo na platformě Annual Ads – zakládejte inzerenty, publikujte reklamy, iniciujte platby a sledujte pozice, a to vše prostřednictvím API.
Podívejte se na kompletní ceníkZůstane vám 70 % z částky, kterou inzerenti v režimu Connect platí za své reklamy – částka se automaticky převádí do vaší peněženky. Níže se podívejte, jak to funguje.
Každý požadavek je ověřován pomocí tajného klíče v hlavičce „Authorization“ s využitím schématu „Bearer“.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI klíče vydává tým Annual Ads schváleným partnerským účtům.
Vytvořte si partnerský účet| POST | /v1/partner/advertisersVytvořte účet inzerenta jménem jednoho ze svých uživatelů (režim Connect). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Vyhledejte inzerentský účet vytvořený tímto partnerem. | advertisers:read |
| POST | /v1/partner/adsVytvořte reklamu. Zpočátku má status „koncept“. Volitelná pole `advertiser_type`, `promotion_type`, `link_type` a `promoted_brand` popisují, zda se jedná o partnerskou, referralovou, tvůrčí nebo individuální reklamu – viz poznámka níže. | ads:write |
| GET | /v1/partner/ads/{id}Vyhledat inzerát. | ads:read |
| PATCH | /v1/partner/ads/{id}Aktualizujte redakční obsah – název, popis, odkaz, typ inzerenta, typ propagace, typ odkazu a propagovanou značku. Kategorie, geografické údaje a veškeré údaje, které čte systém pro určování pořadí, zde nelze nikdy změnit. | ads:write |
| POST | /v1/partner/ads/{id}/imageNahrajte obrázek inzerátu přímo (formát JPEG/PNG/WebP, max. 5 MB). Je nutné provést před první platbou – viz část o platbách níže. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlNastavte obrázek reklamy pomocí URL adresy namísto nahrání souboru – server jej sám stáhne a umístí na svůj server. Platí stejný požadavek: je nutné provést před první platbou. | ads:write |
| GET | /v1/partner/ads/{id}/rankAktuální pozice, kategorie a geografický dosah reklamy. | ads:read |
| GET | /v1/partner/ads/{id}/statsCelkový počet zobrazení a kliknutí na reklamu – počet uplynulých/zbývajících dnů pochází z polí `activated_at` a `expires_at`, která jsou již obsažena v požadavku GET /{id}, a pořadí pochází z požadavku GET /{id}/rank. | ads:read |
| POST | /v1/partner/paymentsZahajte kryptoměnovou platbu za první nákup nebo dobití. První platba selže s chybou 422, pokud reklama ještě neobsahuje obrázek – viz výše uvedené funkce uploadAdImage/setAdImageUrl. | payments:write |
| GET | /v1/partner/payments/{id}Zkontrolujte stav platby. | payments:read |
| POST | /v1/partner/referralsVytvořte odkaz pro doporučení. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsKumulativní výdělky z doporučení, rozčleněné podle statusu. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsVáš 70% podíl z částek, které inzerenti, které jste vytvořili v režimu Connect, zaplatili za své reklamy, rozčleněný podle stavu. | ad-revenue:read |
| GET | /v1/partner/access-logÚplná historie volání pro tento klíč – metoda, cesta, IP adresa, časové razítko. | Tam |
| GET | /v1/rankings?category={id}&geo={scope}Žebříček pouze pro čtení pro danou kategorii a geografickou oblast. | Veřejné |
| GET | /v1/tiers7 nastavených cenových úrovní (prahová hodnota, odemčené výhody). | Veřejné |
| GET | /v1/referral-programProcentní sazby provizí, které jsou v současné době platné pro systém kaskádového doporučování a program Leaders Pool. | Veřejné |
| GET | /v1/partner-programAktuální rozdělení výnosů z reklamy (režim Connect) mezi vás a Annual Ads. | Veřejné |
| GET | /v1/search?q={query}Vyhledávání v přirozeném jazyce – dotaz typu „inzerenti nábytku v Keni“ nasměruje do odpovídající kategorie a geografického rozsahu a následně vrátí výsledek seřazený přesně v tom pořadí, v jakém se skutečně objevil. | Veřejné |
Partnerská a doporučovací reklama
advertiser_type, promotion_type, link_type a promoted_brand jsou volitelná pole při odesílání požadavků POST a PATCH na adresu /v1/partner/ads — Služba Annual Ads není omezena pouze na firmy, které inzerují samy sebe. Pokud je hodnota pole link_type affiliate_link nebo referral_invitation_link, nebo je hodnota pole promotion_type affiliate_offer nebo referral_opportunity, musí být hodnota pole affiliate_terms_accepted true, jinak bude požadavek odmítnut s kódem 422. Délka pole title je omezena na 35 znaků a pole description na 80 znaků – obě omezení jsou vynucována na straně serveru, nikoli pouze v uživatelském rozhraní řídicího panelu.
Každý inzerentský účet má k dispozici sadu integrovaných nástrojů založených na umělé inteligenci – generátor obsahu a vizuálních prvků reklam, konverzačního asistenta, poradce pro rozpočet a externího auditora SEO –, které se hradí pomocí kreditů na umělou inteligenci, a to nad rámec paušálního ročního poplatku.
| POST | /v1/advertisers/{id}/ai/assistantZeptejte se Annual Ads – plovoucího konverzačního asistenta, který slouží pouze k informačním účelům a má přístup k údajům o účtu pouze v režimu pro čtení. | Veřejné |
| POST | /v1/advertisers/{id}/ai/creative-studioNa základě krátkého popisu firmy vygenerujte název inzerátu, popis a klíčová slova. | 2 kredit(ů) |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageVygenerujte vizuální prvek inzerátu (PNG) na základě stejného popisu firmy, který je již připraven k připojení k inzerátu. | 8 kredit(ů) |
| POST | /v1/advertisers/{id}/ai/budget-advisorSkutečná statistická prognóza – nikoli odhad založený na generativním modelu – pravděpodobnosti udržení daného umístění po 30, 90 a 365 dnech. | 1 kredit(ů) |
| POST | /v1/advertisers/{id}/ai/seo-auditProveďte analýzu externích webových stránek inzerenta a navrhněte konkrétní zlepšení v oblasti SEO. | 2 kredit(ů) |
Stejná kategorie a popis činnosti slouží také jako podklad pro níže uvedený generátor obrázků.
POST https://api.adhub365.com/v1/advertisers/{advertiser_id}/ai/creative-studio
Authorization: Bearer <session access token>
Content-Type: application/json
{
"category_name": "Furniture",
"business_description": "We sell handmade oak dining tables"
}{
"title": "Handmade Oak Dining Tables — Built to Last",
"description": "Solid oak dining tables crafted by hand, built to last a lifetime.",
"keywords": ["oak furniture", "dining table", "handmade"],
"credits_remaining": 8
}Vytvořte odpovídající vizuál pro stejnou reklamu:
POST https://api.adhub365.com/v1/advertisers/{advertiser_id}/ai/creative-studio/image
Authorization: Bearer <session access token>
Content-Type: application/json
{
"category_name": "Furniture",
"business_description": "We sell handmade oak dining tables"
}{
"visual_url": "https://cdn.uploadscenter.com/file_01m1...",
"credits_remaining": 4
}Vložte hotový reklamní blok na svůj web – bez nutnosti vytváření, bez iframe. Skript se vykresluje přímo na stránce v izolovaném Shadow DOM, takže jeho styly nikdy neovlivní váš web a styly vašeho webu nikdy neovlivní ten jeho.
<div
class="annualads-widget"
data-category="YOUR_CATEGORY_ID"
data-geo="global"
data-count="4"
data-columns="2"
></div>
<script async src="https://adhub365.com/widget.js"></script>Ve výchozím nastavení se zde zobrazuje kompletní veřejné žebříčky pro danou kategorii – tedy všichni inzerenti na platformě, nejen ti, které jste přivedli. Chcete-li zobrazit pouze reklamy od inzerentů, které jste získali prostřednictvím režimu Connect (tedy těch, kteří generují váš podíl), přidejte atribut `data-partner` s vaším partnerským ID (najdete ho na stránce „Developers“ ve vašem vlastním dashboardu):
<div
class="annualads-widget"
data-category="YOUR_CATEGORY_ID"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Pokud vaši inzerenti spadají do několika kategorií, vynechte atribut `data-category` úplně – pokud použijete pouze atribut `data-partner`, widget zobrazí všechny vaše reklamy ze všech kategorií v jedné mřížce, místo aby byl pro každou kategorii potřeba jeden blok widgetu:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Chcete vedle widgetu v obsahu mít ještě jeden ve stylu zápatí, přičemž každý z nich bude zobrazovat jiné reklamy? Přidejte druhý blok widgetu s atributem data-layout="compact" (jedna reklama, kterou lze sbalit do malého rámečku) a atributem data-offset nastaveným na počet reklam, které již zobrazuje váš první widget:
<!-- in your content -->
<div
class="annualads-widget"
data-category="YOUR_CATEGORY_ID"
data-geo="global"
data-count="4"
data-columns="2"
></div>
<!-- in your footer, showing different ads via data-offset -->
<div
class="annualads-widget"
data-category="YOUR_CATEGORY_ID"
data-geo="global"
data-layout="compact"
data-offset="4"
></div>
<script async src="https://adhub365.com/widget.js"></script>data-category | ID kategorie, která se má zobrazit. Povinné – pokud není nastaven parametr „data-partner“, v takovém případě jeho vynechání způsobí, že se reklamy daného partnera zobrazí ve všech kategoriích. |
data-geo | Geografický rozsah: místní, regionální nebo globální. Výchozí nastavení je globální. |
data-count | Počet reklam, které se mají zobrazit. Výchozí hodnota je 4. |
data-columns | Počet sloupců mřížky. Výchozí hodnota je 2. |
data-layout | mřížka, seznam nebo kompaktní zobrazení. Výchozí nastavení je mřížka. Kompaktní zobrazení zobrazuje jednu reklamu (atribut `data-count` se ignoruje) s tlačítkem, pomocí kterého ji lze sbalit do malého modulu a znovu rozbalit — jedná se o prvek ve stylu zápatí, který skript sám nikdy neumisťuje jako fixní; umístění a styl kontejnerového prvku `div` si na své stránce můžete nastavit podle libosti. |
data-offset | Počet nejlépe hodnocených reklam, které se mají přeskočit. Výchozí hodnota je 0. Umožňuje, aby druhý widget na stejné stránce (např. kompaktní widget v zápatí a mřížkový widget výše na stránce) zobrazoval jiné reklamy, místo aby se stejná reklama opakovala dvakrát – zadejte počet reklam, které již druhý widget zobrazuje. |
data-partner | Vaše partnerské ID (najdete ho na stránce „Developers“ ve svém ovládacím panelu). Volitelné — bez něj widget zobrazuje úplné veřejné pořadí v dané kategorii, tedy všechny inzerenty na platformě. S ním se zobrazují pouze reklamy od inzerentů, které jste přivedli prostřednictvím režimu Connect — tedy těch, kteří vám skutečně generují podíl. |
Počet požadavků je omezen na klíč za minutu. Každá ověřená odpověď obsahuje hlavičky X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset; při překročení limitu je vrácen kód 429 Too Many Requests s hlavičkou Retry-After.
Volitelné, pro každého partnera. Dokud nepřidáte žádný záznam, vaše klíče přijímají požadavky z jakékoli IP adresy – první záznam přepne všechny klíče daného partnera do režimu „pouze povolené adresy“.
Každý webhook je podepsán pomocí algoritmu HMAC-SHA256 s využitím tajného klíče, který se generuje jednorázově při jeho vytvoření – předtím, než důvěřujete obsahu, ověřte podpis. Události jsou doručovány pouze partnerovi, který je vlastníkem příslušného inzerenta.
payment.succeeded | Platba byla potvrzena. |
payment.refunded | Vrácení peněz bylo provedeno. |
ad.activated | Inzerát se zveřejní, a to buď automaticky, nebo po schválení správcem. |
invoice.issued | Je vystavena faktura. |
referral.payout.completed | Provize za doporučení dosáhla stavu „vyplacená“. |
referral.payout.failed | Dávka výplat za doporučení selhala u poskytovatele – výnosy se vrátily do položky „k výplatě“ a bude proveden nový pokus o jejich vyplacení. |
rank.changed | Pořadí reklamy se mění – mimo jiné i v případě, že k tomu dojde v důsledku platby jiného inzerenta. |
ad.expiring_soon | 30, 7 nebo 1 den (dny) před vypršením platnosti inzerátu. |
partner_ad_revenue.payout.completed | Výplata podílu na příjmech z reklamy dosáhla stavu „vyplaceno“. |
partner_ad_revenue.payout.failed | Hromadná výplata podílu na výnosech z reklamy selhala na straně poskytovatele – podíly se vrátily do položky „k výplatě“ a bude se o výplatu znovu pokusit. |
Oficiální sady SDK pro JavaScript/TypeScript a Python, vygenerované na základě této specifikace API, jsou v plánu, ale zatím nebyly zveřejněny – do té doby využívejte přímo HTTP API.
Zatím není k dispozici žádné SDK – tyto funkce volají přímo HTTP API a fungují již dnes v jakémkoli programovacím jazyce.
cURL
curl -X POST https://api.adhub365.com/v1/partner/ads \
-H "Authorization: Bearer sk_sandbox_..." \
-H "Content-Type: application/json" \
-d '{"advertiser_id":"adv_9f2a...","category_id":"cat_furniture","geo_scope":"local","title":"..."}'JavaScript
await fetch("https://api.adhub365.com/v1/partner/ads", {
method: "POST",
headers: {
Authorization: "Bearer sk_sandbox_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
advertiser_id: "adv_9f2a...",
category_id: "cat_furniture",
geo_scope: "local",
title: "...",
}),
});Python
import requests
requests.post(
"https://api.adhub365.com/v1/partner/ads",
headers={"Authorization": "Bearer sk_sandbox_..."},
json={
"advertiser_id": "adv_9f2a...",
"category_id": "cat_furniture",
"geo_scope": "local",
"title": "...",
},
)