Annual Ads

Imibhalo yomthuthukisi

Yakha ngqo epulatifomu ye-Annual Ads — dala abakhangisi, shicilela izikhangiso, vusa izinkokhelo, futhi ulandele izikhundla, konke ngokusebenzisa i-API.

Bona i-gridi ephelele yamanani

Ugcina i-70% Lokho abakhangisi bakho be-Connect-mode abakukhokhela kwezikhangiso zabo — kukhokhelwa ngokuzenzakalelayo ephaketheni lakho. Bona ukuthi kusebenza kanjani ngezansi.

Base URL

https://api.adhub365.com
OpenAPI 3

Ukuqinisekiswa kobuqiniso

Zonke izicelo ziqinisekiswa ngokhiye oyimfihlo kwi-Authorization header, kusetshenziswa uhlelo lwe-Bearer.

POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/json

Isandbox nokukhiqiza

Izikhiye ze-sandbox nezokukhiqiza zihlukaniswe ngokuphelele — isikhiye se-sandbox ngeke sakwazi ukufunda noma ukubhala idatha edalwe yisikhiye sokukhiqiza, futhi ngokuphambene nalokho.

Imibono

Ikhiye ngayinye inqunyelwe ezindaweni zokusebenza eyakhululwa nazo — ikhiye ayikaze ibe nokufinyelela okungaphezu kwekhawunti yomlingani eyidalile.

Izikhiye ze-API zinikezwa kuma-akhawunti ozakwethu avunyiwe yiqembu lezizikhangiso zonyaka.

Dala i-akhawunti yomlingani

Ukwabelana ngemali engenayo yizikhangiso

Uma izihluthulelo zakho ze-API zisungula ama-akhawunti abakhangisi kubasebenzisi bakho (imodi yokuxhuma — bheka Ukuqinisekiswa ngenhla), uthola ingxenye yalokho abakhangisi abakukhokha kwezikhangiso zabo. Ukuhlukaniswa okungezansi kufundwa bukhoma kule ndawo efanayo yokuphela, akukaze kubhalwe ngqo, futhi kuhlukile ngokuphelele ekhomishini yokudlulisela ekhoneni elingezansi kwale khasi.

GET https://api.adhub365.com/v1/partner-program
{
  "partner_share_percentage": 0.7,
  "platform_share_percentage": 0.3
}

70%

Kuyafika kuwe

Ikhokhelwa ngokuzenzakalelayo kwiphothikhwe yakho yokukhokhelwa oyisethile — akudingeki isicelo sokukhipha imali.

30%

Iya kwezikhangiso zonyaka

Kuhilela ukulawula okuqukethwe, ukusingatha, kanye nengqalasizinda yokuhlela izikhangiso zakho.

Isebenza kanjani

  1. Omunye wabakhankaseli bakho be-Connect-mode ukhokhela isikhangiso ngokusebenzisa ukuhlanganiswa kwakho.
  2. Isikhangiso sihlolwa futhi sivunywa — ngokuzenzakalelayo, noma yiqembu lethu lokulawula.
  3. Ingxenye yakho isethwe kuluhlu lokukhokhelwa ngokuzenzakalelayo kwipheshana lakho, ngendlela efanayo nohlelo lokudlulisela olungezansi.
Isabelo asikaze sakhiwe ngaphambi kokuthi isikhangiso sivunywe ngempela — uma abaphathi besikhangiso besinqaba, akukho okukhokhwayo ngaleyo nkokhokhelo. Ukufaka imali eyengeziwe esikhangisweni esivele sisebenza akunabo lobu bungozi futhi kwabelwa ngokushesha.

Imiqathango yokukhokha

  • Isikhwama sokukhokha se-crypto silungiselelwe ku-akhawunti yomlingani wakho.
  • Akudingeki i-KYC ngakolunye uhlangothi lwakho — i-akhawunti yomlingani wakho isivele ihlolwe ngesikhathi idalwa.

Isibonelo: ukufunda izabelo eziqoqile

GET https://api.adhub365.com/v1/partner/ad-revenue/earnings
Authorization: Bearer sk_sandbox_...
{
  "shares": [
    {
      "id": "share_1a2b...",
      "payment_id": "pay_9f2a...",
      "ad_id": "ad_7c31...",
      "partner_amount_usd": 140.0,
      "platform_amount_usd": 60.0,
      "status": "paid",
      "payable_after": "2026-08-03T00:00:00Z",
      "paid_at": "2026-08-05T10:12:00Z"
    }
  ],
  "total_payable_pending_usd": 0.0,
  "total_payable_usd": 0.0,
  "total_processing_usd": 0.0,
  "total_paid_usd": 140.0
}

Iziphetho

Ama-akhawunti

POST/v1/partner/advertisers

Dala i-akhawunti yomkhangisi egameni lomunye wabasebenzisi bakho (imodi yokuxhuma).

advertisers:write
GET/v1/partner/advertisers/{id}

Bheka i-akhawunti yomkhangisi edalwe yilomlingani.

advertisers:read

Izikhangiso

POST/v1/partner/ads

Dala isikhangiso. Siqala sisendaweni yesidrafthi. Izinkambu ezingokuzikhethela ze-advertiser_type, promotion_type, link_type, kanye ne-promoted_brand zichaza ukukhangisa kobambiswano, kokudlulisela, komdali, noma komuntu ngamunye — bheka inothi elingezansi.

ads:write
GET/v1/partner/ads/{id}

Bheka isikhangiso.

ads:read
PATCH/v1/partner/ads/{id}

Vuselela okuqukethwe kokuhlela — isihloko, incazelo, isixhumanisi, uhlobo lomkhangisi, uhlobo lokukhushulwa, uhlobo lwesixhumanisi, kanye nomkhiqizo okhushwayo. Isigaba, indawo, kanye nanoma yini efundwa yinjini yokuhlela ngeke kushintshwe lapha.

ads:write
POST/v1/partner/ads/{id}/image

Layisha isithombe sokukhangisa ngqo (JPEG/PNG/WebP, ubukhulu obungadluli ku-5 MB). Kuyadingeka ngaphambi kokukhokha kokuqala — bheka iqembu lokukhokha ngezansi.

ads:write
POST/v1/partner/ads/{id}/image-url

Beka isithombe sesikhangiso kusuka ku-URL esikhundleni sokulayisha ifayela — iseva iyalithatha futhi iyasibeka kabusha yona uqobo. Isidingo esifanayo: sidingeka ngaphambi kokukhokha kokuqala.

ads:write
GET/v1/partner/ads/{id}/rank

Isikhundla samanje, isigaba, nobubanzi bendawo bokukhangisa.

ads:read
GET/v1/partner/ads/{id}/stats

Inani eliphelele lokubukwa nokuchofoza kwesikhangiso — izinsuku ezidlule/ezisele zivela emikhakheni ye-activated_at/expires_at esivele ikhona ku-GET /{id}, kanti i-rank ivela ku-GET /{id}/rank.

ads:read

Ukukhokha

POST/v1/partner/payments

Qala ukukhokha nge-crypto ekuthengeni kokuqala noma ekugcwaliseni ibhalansi. Ukukhokha kokuqala kwehluleka nge-422 ngaphandle kokuthi isikhangiso sesivele sinomfanekiso — bheka uploadAdImage/setAdImageUrl ngenhla.

payments:write
GET/v1/partner/payments/{id}

Hlola isimo sokukhokha.

payments:read

Ukudluliselwa

POST/v1/partner/referrals

Dala isixhumanisi sokudlulisela.

referrals:write
GET/v1/partner/referrals/{code}/earnings

Imali yokudlulisela eqoqiwe, ihlukaniswe ngokwesimo.

referrals:read

Ukwabelana ngemali engenayo yizikhangiso

GET/v1/partner/ad-revenue/earnings

Ingxenye yakho engu-70% yalokho abakhangisi obawadalile ku-Connect mode abakukhokhele izikhangiso zabo, ihlukaniswe ngokwesimo.

ad-revenue:read

Irekhodi lokufinyelela

GET/v1/partner/access-log

Umlando ophelele wokubizwa kwalesi key — indlela, iphathe, ikheli le-IP, isitembu sesikhathi.

Kukhona

Amaphuzu okuphela omphakathi

GET/v1/rankings?category={id}&geo={scope}

Ukubekwa okufundeka kuphela kwesigaba nesibanzi sendawo.

Esidlangalaleni
GET/v1/tiers

Izitebhisi eziyisikhombisa zokumisela amanani (imingcele, izinzuzo ezivuliwe).

Esidlangalaleni
GET/v1/referral-program

Amaphesenti ekhomishini asebenzayo njengamanje ku-kaskadi yokudlulisela nakwi-Pool Yabaholi.

Esidlangalaleni
GET/v1/partner-program

Ukwabiwa kwamanje kwemali engenayo kwezikhangiso (imodi yokuxhuma) phakathi kwakho ne-Annual Ads.

Esidlangalaleni
GET/v1/search?q={query}

Ucwaningo lwolimi lwemvelo — luhambisa umbuzo ofana nalokhu "abakhangisi bezinto zokuhlobisa eKenya" esigabeni esifanele nasendaweni ethile, bese kubuyisela leyo ndawo yokuhlela ngokulandelana kwayo kwangempela.

Esidlangalaleni

Ukukhangisa kwezibambiso nokudlulisela

advertiser_type, promotion_type, link_type, kanye ne promoted_brand yizinkambu ezingokuzikhethela ku-POST kanye ne-PATCH /v1/partner/ads — Izikhangiso Zonyaka azikhawulelwe ezinkampanini ezizikhangisayo kuphela. Uma i-link_type ingu-affiliate_link noma referral_invitation_link, noma i-promotion_type ingu-affiliate_offer noma referral_opportunity, i-affiliate_terms_accepted kumele ibe yiqiniso, kungenjalo isicelo siyaphikiswa nge-422. isihloko sinqunyelwe ezinhlamvu ezingama-35 kanti incazelo inqunyelwe ezingama-80 — kokubili kuphoqelelwa ngakolunye uhlangothi lweseva, hhayi kuphela ku-UI yedashibhodi.

Amathuluzi e-AI

I-akhawunti ngayinye yomkhangisi ithola isethi yamathuluzi e-AI akhelwe ngaphakathi — umkhiqizi wokukhangisa nokukhiqiza izithombe, umsizi wokuxoxa, umeluleki wezabelomali, nomhloli we-SEO wangaphandle — okukhokhelwa ngamakhridithi e-AI, ngaphezu kwentengo yonyaka engaguquki.

Lezi zidlula ekungeni kwedashboard komkhangisi uqobo (ithokheni yokufinyelela yeseshini), hhayi ngokhiye we-API womlingani — ukuhlanganiswa komuntu wesithathu akukwazi ukuzibiza egameni lomkhangisi.
POST/v1/advertisers/{id}/ai/assistant

Ask Annual Ads — umsizi wokuxoxa ogudlukayo, wolwazi kuphela, wokufunda kuphela idatha ye-akhawunti.

Esidlangalaleni
POST/v1/advertisers/{id}/ai/creative-studio

Khiqiza isihloko sokukhangisa, incazelo, namagama angukhiye kusukela encazelweni emfushane yebhizinisi.

2 amakhredithi
POST/v1/advertisers/{id}/ai/creative-studio/image

Khiqiza isithombe sokuhumusha (PNG) esisekelwe incazelo efanayo yebhizinisi, esigcinwe futhi esilungele ukunamathiselwa esikhangisweni.

8 amakhredithi
POST/v1/advertisers/{id}/ai/budget-advisor

Ukuqagela kwezibalo okuyiqiniso — hhayi ukuqagela okuvuselelwayo — kwamathuba okugcina isikhundla esithile ezinsukwini ezingama-30/90/365.

1 amakhredithi
POST/v1/advertisers/{id}/ai/seo-audit

Hlaziya iwebhusayithi yangaphandle yomkhangisi uqobo bese uphakamisa iziphakamiso eziqinile zokuthuthukisa i-SEO.

2 amakhredithi

Isibonelo — khiqiza okuqukethwe kwesikhangiso

Isigaba esifanayo kanye nencazelo yebhizinisi nazo zinika amandla umkhiqizi wesithombe ongezansi.

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
}

Khiqiza isithombe esihambisanayo sesikhangiso esifanayo:

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
}

Iwijethi

Thela iyunithi yokukhangisa esivele yakhiwe kusayithi lakho — akudingeki izinyathelo zokwakha, akudingeki i-iframe. Iskripthi libonisa ngqo ekhasini ngaphakathi ku-Shadow DOM ehlukanisiwe, ngakho izitayela zaso azikaze zidlulele kusayithi lakho, futhi izitayela zokusayithi lakho azikaze zidlulele kuso.

Yengeza ekhasini lakho

<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>

Ngokujwayelekile lokhu kukhombisa wonke umphakathi wokuhlelwa kwezigaba — wonke umkhangisi epulatifomu, hhayi nje labo obasungule. Ukuze ukhombise kuphela izikhangiso ezivela kubakhangisi obasungule ngendlela ye-Connect mode (labo abakhiqiza ingxenye yakho), engeza data-partner kanye ne-ID yomlingani wakho (thola ku-Developers page kwideshibhodi yakho):

<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>

Uma abakhangisi bakho behlanganisa izigaba eziningi, susa ngokuphelele i-data-category — usebenzisa i-data-partner kuphela, i-widget iveza zonke izikhangiso zakho kuzo zonke izigaba ku-grid eyodwa, kunokuba udinge ibhulokhi ye-widget eyodwa kwisigaba ngasinye:

<div
  class="annualads-widget"
  data-geo="global"
  data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>

Ufuna iyunithi yesitayela se-footer eceleni kweyunithi yakho engaphakathi kokuqukethwe, ngayinye ikhombisa izikhangiso ezahlukene? Yongeza ibhulokhi yesibili ye-widget ene-data-layout="compact" (isikhangiso esisodwa, esingancishiswa sibe iphili encane) kanye ne-data-offset usethe inani lezikhangiso i-widget yakho yokuqala esivele ikhombisa:

<!-- 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>

Izici

data-categoryI-ID yomkhakha okufanele ivezwane. Kuyadingeka — ngaphandle uma i-data-partner isethwe, lapho ukungayifaki kukhombisa izikhangiso zomlingani kuzo zonke izigaba.
data-geoUbubanzi be-Geo: bendawo, besifunda, noma bomhlaba wonke. Ngokungajwayelekile, kusethwe kumhlaba wonke.
data-countInani lezikhangiso ezizoboniswa. Izimiso zibekwe ku-4.
data-columnsInani lezigaba zegridi. Iseza ku-2.
data-layoutgrid, list, noma compact. Izilungiselelo ezi-ezimiselwe ziyi-grid. I-compact ikhombisa isikhangiso esisodwa (i-data-count ayinakwa) enenkinobho yokusisusa sibe yiphilisi encane nokuyibuyisa — iyiyunithi yesitayela se-footer, engalokothi imiswe njengokungaguquki yi-script uqobo, wena ubeka futhi uhlela i-div yesiqukathi ngendlela oyithandayo ekhasini lakho.
data-offsetInani lezikhangiso eziphezulu okufanele zidlulwe. Izimiso zibekwe ku-0. Ivumela i-widget yesibili ekhasini elifanayo (isb. encane esezansi kwekhasi kanye ne-grid esezingeni eliphezulu) ukuba ikhombise izikhangiso ezahlukene esikhundleni sokuphindaphinda eyodwa kabili — dlulisela inani lezikhangiso i-widget elinye eselikhombisile.
data-partnerI-ID yomlingani wakho (thola kuyo ikhasi labathuthukisi ku-dashboard yakho). Okuzikhethela — ngaphandle kwayo, i-widget iveza uhlu oluphelele lokubekwa esidlangalaleni kwalesi sigaba, wonke umkhangisi ohlelweni. Nayo, izikhangiso kuphela ezivela kubakhangisi oziletha ngohlobo lokuxhuma — labo abakhiqiza ingxenye yakho.

Ingxenye yemali engenayo

Indlela ikhomishini yokudlulisela yomlingani efika ngayo kubo empeleni — iphesenti, indlela yokukhokha, nezimfuneko zangaphambi.

GET https://api.adhub365.com/v1/referral-program
{
  "levels": [
    {
      "level": 1,
      "percentage": 0.1
    }
  ],
  "leaders_pool_percentage_of_gmv": 0.05,
  "founding_advertiser_pool_percentage_of_gmv": 0.05,
  "payout_verification_window_hours": 48,
  "min_payout_usd": 1
}

Akuyona inombolo engaguquki

Iphesenti lekhomishini silungiselelwe ohlangothini lwethu futhi lingashintsha — hlala ulifunda bukhoma kulesi sikhala sedatha kunokuba ubhale inani ngokuqinile.

Ngokuzenzakalelayo ngokuphelele

Ayikho iphuzu lokumisa ukukhipha. Umsebenzi ohleliwe ukhulisa imali engenayo ekhokhwayo, uyihlanganise ngomkhangisi ngamunye, bese ukhokha ngokuzenzakalelayo uma zonke izimo ezingezansi sezifeziwe.

Imiqathango yokukhokha

  • Inani eliphelele lemali okufanele ikhokhwe kumkhangisi lifinyelela kwinani elincane lokukhokha.
  • Isikhwama sokukhokha se-crypto silungiselelwe ku-akhawunti yabo.
  • Isimo sabo se-KYC siqinisekisiwe.

Isibonelo: ukufunda imali eqoqiwe

GET https://api.adhub365.com/v1/partner/referrals/{code}/earnings
Authorization: Bearer sk_sandbox_...
{
  "code": "ann-2f8c",
  "earnings": [
    {
      "id": "earn_1a2b...",
      "payment_id": "pay_9f2a...",
      "amount_usd": 30.0,
      "status": "paid",
      "payable_after": "2026-08-01T00:00:00Z",
      "paid_at": "2026-08-03T14:22:00Z"
    }
  ],
  "total_payable_pending_usd": 0.0,
  "total_payable_usd": 0.0,
  "total_processing_usd": 0.0,
  "total_paid_usd": 30.0
}

Izinga lamazinga entengo (bukhoma)

Funda bukhoma kusuka kule endpoint — ungaze ubhale la manani ngqo kukhodi, angashintsha ohlangothini lwethu. Yakha isikhethi sezingeni sabasebenzisi bakho esikhundleni sendawo yokufaka inani lamahhala: intengo ngayinye ebonisiwe isivele iyinani eliqondile okufanele lithunyelwe lapho kwakhiwa inkokhelo, kanti izinzuzo ezivuliwe eziboniswe lapha zitshela abasebenzisi ngokunembile ukuthi leyo ntengo ibanikeza ini, ukuze bakhethe intengo abayiqondayo esikhundleni sokuzama inombolo.

IzingaIntengoUvula
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Isixhumanisi esichofozekayo
Gold$500.00

Animation unlocked

Isixhumanisi esichofozekayoUkunyakaza kwezithombe
Platinum$1,000.00

Enhanced exposure

Isixhumanisi esichofozekayoUkunyakaza kwezithombe
Diamond$2,500.00

Premium placement

Isixhumanisi esichofozekayoUkunyakaza kwezithombe
Elite$5,000.00

Top-tier visibility

Isixhumanisi esichofozekayoUkunyakaza kwezithombe
Legendary$10,000.00

Maximum visibility & branding

Isixhumanisi esichofozekayoUkunyakaza kwezithombe

Imikhawulo yezinga

Izicelo zilinganiselwa ngokhiye ngomzuzu. Yonke impendulo eqinisekisiwe iqukethe izihloko ze-X-RateLimit-Limit, X-RateLimit-Remaining, kanye ne-X-RateLimit-Reset; ukweqa umkhawulo kubuyisa i-429 Too Many Requests enesihloko se-Retry-After.

Uhlu lokuvunyelwa kwe-IP

Okuzikhethela kumlingani ngamunye. Kuze kube usengeza okungena, izihluthulelo zakho zamukela izicelo ezivela kunoma iyiphi ikheli le-IP — ukufakwa kokuqala kushintsha zonke izihluthulelo zalowo mlingani zibe ohlwini oluvunyelwe kuphela.

Ama-webhook

I-webhook ngayinye isayinwa nge-HMAC-SHA256 kusetshenziswa imfihlo ekhishwe kanye ngesikhathi sokudala — qinisekisa isiginesha ngaphambi kokwethemba umthwalo wedatha. Izehlakalo zithunyelwa kuphela kumlingani ongumnikazi womkhangisi ohambisanayo.

payment.succeededUkukhokha kuqinisekisiwe.
payment.refundedUkubuyiselwa kwemali kuyenziwa.
ad.activatedIsikhangiso siqala ukusebenza, ngokuzenzakalelayo noma ngemva kokubuyekezwa ngumphathi.
invoice.issuedI-invoyisi ikhishwe.
referral.payout.completedIkhomishini yokudlulisela ifinyelela esimweni sokukhokhelwa.
referral.payout.failedIbhethhi yokukhokha izinkokhelo zokudlulisela ihluleka kumhlinzeki — imali engenayo ibuyela esigabeni sokukhokhwa futhi izama futhi.
rank.changedIsikhundla sesikhangiso siyashintsha — kuhlanganisa nasezikhathini lapho ukukhokha komunye umkhangisi kubangela leso shintsho.
ad.expiring_soon30, 7, noma izinsuku ezi-1 ngaphambi kokuphelelwa kwesikhangiso.
partner_ad_revenue.payout.completedUkukhokhwa kwengxenye yemali engenayo yokukhangisa kufinyelela ezingeni lokukhokhelwa.
partner_ad_revenue.payout.failedIqembu lokukhokha ingxenye yemali engenayo yezikhangiso lihluleka kumhlinzeki — izabelo zibuyela ohlwini lokukhokhwa futhi ziyazanywa kabusha.

Amakhithi Okuthuthukisa Isofthiwe

Ama-SDK asemthethweni e-JavaScript/TypeScript ne-Python, akhiqizwe kusukela kulesi sichasiselo se-API esifanayo, ahlelwe kodwa awukashicilelwa okwamanje — zisho i-HTTP API ngqo kuze kube yilapho.

Ukuqala ngokushesha

Ayikakayikho i-SDK okwamanje — lezi zibiza i-HTTP API ngqo futhi zisebenza namuhla kunoma yiliphi ulimi.

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": "...",
    },
)