Annual Ads

Дакументацыя для распрацоўшчыкаў

Стварайце непасрэдна на платформе Annual Ads — стварайце рэкламадаўцаў, публікуйце аб'явы, ініцыюйце аплаты і адсочвайце рэйтынг цалкам праз API.

Паглядзець поўную табліцу цэн

Вы трымаеце 70% Тое, за што вашы рэкламадаўцы ў рэжыме Connect плацяць за свае аб'явы, аўтаматычна пераводзіцца на ваш кашалёк. Глядзіце ніжэй, як гэта працуе.

Базавы URL

https://api.adhub365.com
OpenAPI 3

Аўтэнтыфікацыя

Кожны запыт аўтэнтыфікуецца з дапамогай сакрэтнага ключа ў загалоўку Authorization, з выкарыстаннем схемы Bearer.

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

Пясочніца і вытворчасць

Пробныя і вытворчыя ключы цалкам ізаляваныя адзін ад аднаго — пробны ключ ніколі не зможа чытаць або запісваць даныя, створаныя вытворчым ключом, і наадварот.

Прыцэлы

Кожны ключ абмежаваны сферамі, у якіх ён быў выдадзены — ключ ніколі не мае большага доступу, чым партнёрскі ўліковы запіс, які яго стварыў.

API-ключы выдаюцца для ўхваленых партнёрскіх акаўнтаў камандай «Annual Ads».

Стварыць партнёрскі ўліковы запіс

Падзел даходаў ад рэкламы

Калі вашы API-ключы ствараюць рэкламадаўчыя акаўнты для вашых уласных карыстальнікаў (рэжым Connect — гл. «Аўтэнтыфікацыя» вышэй), вы атрымліваеце долю ад таго, што гэтыя рэкламадаўцы плацяць за свае аб'явы. Доля, пазначаная ніжэй, запытваецца ў рэжыме рэальнага часу з таго ж эндпойнта, ніколі не ўводзіцца ўстаноўкай і цалкам аддзелена ад рэферальнай камісіі, размешчанай ніжэй на гэтай старонцы.

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

70%

Да цябе

Аўтаматычна выплачваецца на ваш наладжаны кашалёк для выплат — не патрабуецца запыт на зняцце сродкаў.

30%

Перайсці да штогадовых аб'яў

Ахоплівае мадэрацыю, хостынг і інфраструктуру ранжыравання, на якой працуюць вашы аб'явы.

Як гэта працуе

  1. Адзін з вашых рэкламадаўцаў у рэжыме Connect аплачвае рэкламу праз вашу інтэграцыю.
  2. Рэклама правяраецца і ўхваляецца — аўтаматычна або камандай мадэрацыі.
  3. Ваша доля пастаўлена ў чаргу на аўтаматычны вывад на ваш кашалёк, той жа механізм, што і ў рэферальнай праграме ніжэй.
Доля ніколі не ствараецца, пакуль рэклама не будзе зацверджана — калі мадэрацыя яе адхіліць, па гэтым плацяжы нічога не спаганяецца. Папаўненне ўжо актыўнай рэкламы не нясе такой рызыкі і размяркоўваецца адразу.

Умовы выплаты

  • На вашым партнёрскім уліковым запісе наладжаны кашалёк для вываду крыптавалюты.
  • З вашага боку не патрабуецца праходжання KYC — ваш партнёрскі ўліковы запіс ужо правераны пры стварэнні.

Прыклад: чытанне назапашаных акцый

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
}

Канчатковыя пункты

Рахункі

POST/v1/partner/advertisers

Стварыце ўліковы запіс рэкламадаўцы ад імя аднаго з вашых карыстальнікаў (рэжым «Падключэнне»).

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

Знайдзіце рэкламадаўчую ўліковую запіс, створаную гэтым партнёрам.

advertisers:read

Рэклама

POST/v1/partner/ads

Стварыце рэкламу. Яна пачынае з статусу «Чарнавік». Неабавязковыя палі advertiser_type, promotion_type, link_type і promoted_brand апісваюць партнёрскую, рэферальную, рэкламу стваральніка або індывідуальную рэкламу — гл. заўвагу ніжэй.

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

Пашукай аб'яву.

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

Абнаўленне рэдакцыйных даных — загаловак, апісанне, спасылка, тып рэкламадаўцы, тып прасоўвання, тып спасылкі і прасоўваемы брэнд. Катэгорыю, геаграфію і ўсё, што апрацоўваецца рэйтынгавым механізмам, змяніць тут немагчыма.

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

Загрузіце выяву аб'явы непасрэдна (JPEG/PNG/WebP, максімум 5 МБ). Патрабуецца перад першай аплатай — гл. групу аплат ніжэй.

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

Усталюйце выяву рэкламы з URL-адраса замест загрузкі файла — сервер сам яе загрузіць і размесціць. Тая ж умова: патрабуецца да першай аплаты.

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

Бягучы рэйтынг, катэгорыя і геаграфічны ахоп для рэкламы.

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

Агульная колькасць праглядаў і клікаў па аб'яве — «дні, што прайшлі/засталіся» — паступаюць з палёў activated_at/expires_at, якія ўжо даступныя ў GET /{id}, а рэйтынг — з GET /{id}/rank.

ads:read

Плацяжы

POST/v1/partner/payments

Пачніце крыптаплацёж за першапачатковую пакупку або папаўненне. Першапачатковы плацёж правальваецца з кодам 422, калі ў рэкламы яшчэ няма выявы — гл. uploadAdImage/setAdImageUrl вышэй.

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

Праверце статус плацяжу.

payments:read

Накіраванні

POST/v1/partner/referrals

Стварыць рэферальную спасылку.

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

Накапленыя даходы ад рэфералаў, падзеленыя па статусах.

referrals:read

Падзел даходаў ад рэкламы

GET/v1/partner/ad-revenue/earnings

Ваша 70% доля ад таго, што рэкламадаўцы, якіх вы стварылі ў рэжыме Connect, заплацілі за свае аб'явы, падзеленая па статусах.

ad-revenue:read

Лог доступу

GET/v1/partner/access-log

Поўная гісторыя выклікаў для гэтага ключа — метад, шлях, IP, часовы штамп.

Там

Публічныя канчатковыя пункты

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

Рэйтынг толькі для прагляду для катэгорыі і геаграфічнага ахопу.

Агульнадаступна
GET/v1/tiers

7 наладжаных цэнавых узроўняў (парог, адкрытыя бонусы).

Агульнадаступна
GET/v1/referral-program

Працэнтныя стаўкі камісійных, якія зараз дзейнічаюць для рэферальнага каскаду і пула лідараў.

Агульнадаступна
GET/v1/partner-program

Бягучы падзел даходаў ад рэкламы (рэжым Connect) паміж вамі і Annual Ads.

Агульнадаступна
GET/v1/search?q={query}

Пошук натуральнай мовы — накіроўвае запыт, напрыклад, «рэкламадаўцы мэблі ў Кеніі», у адпаведную катэгорыю і геаграфічны ахоп, а затым вяртае гэты рэйтынг у яго дакладным рэальным парадку.

Агульнадаступна

Афіліраваная і рэферальная рэклама

advertiser_type, promotion_type, link_type і promoted_brand — гэта неабавязковыя палі ў POST і PATCH /v1/partner/ads — Annual Ads не абмяжоўваецца кампаніямі, якія рэкламуюць сябе. Калі link_type роўна affiliate_link або referral_invitation_link, або promotion_type роўна affiliate_offer або referral_opportunity, affiliate_terms_accepted павінна быць true, інакш запыт адхіляецца з кодам 422. Абмежаванне на title складае 35 сімвалаў, а на description — 80; абодва абмежаванні прымяняюцца на баку сервера, а не толькі ў інтэрфейсе панэлі кіравання.

Інструменты штучнага інтэлекту

Кожны ўліковы запіс рэкламадаўцы атрымлівае набор убудаваных інструментаў штучнага інтэлекту: генератар рэкламнага кантэнту і візуальных матэрыялаў, размоўнага асістэнта, кансультанта па бюджэце і знешняга SEO-аўдытара. Аплата за іх ажыццяўляецца крэдытамі ШІ ў дадатак да фіксаванага гадавога тарыфу.

Яны выконваюцца праз уліковую запис асабістага кабінета рэкламадаўцы (токен сеансавага доступу), а не праз партнёрскі ключ API — інтэграцыя з трэцім бокам не можа выклікаць іх ад імя рэкламадаўцы.
POST/v1/advertisers/{id}/ai/assistant

Ask Annual Ads — пап-ап-памочнік для размоў, толькі для інфармацыйных мэт, з доступам толькі да чытання даных уліковага запісу.

Агульнадаступна
POST/v1/advertisers/{id}/ai/creative-studio

Згенераваць загаловак, апісанне і ключавыя словы рэкламы на аснове кароткага апісання бізнесу.

2 крэдытаў
POST/v1/advertisers/{id}/ai/creative-studio/image

Згенераваць візуальны элемент для аб'явы (PNG) на аснове таго ж апісання бізнесу, размешчаны і гатовы да прымацавання да аб'явы.

8 крэдытаў
POST/v1/advertisers/{id}/ai/budget-advisor

Сапраўднае статыстычнае праектаванне — а не генератыўны догад — верагоднасці захавання пэўнага рангу праз 30/90/365 дзён.

1 крэдытаў
POST/v1/advertisers/{id}/ai/seo-audit

Аналізуйце знешні вэб-сайт рэкламадаўцы і прапануйце канкрэтныя паляпшэнні па SEO.

2 крэдытаў

Прыклад — генераваць рэкламны кантэнт

Тая ж катэгорыя і апісанне бізнесу таксама забяспечваюць працу генератара выяў ніжэй.

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
}

Стварыце адпаведны візуальны матэрыял для той жа рэкламы:

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
}

Віджэт

Размясціце гатовы рэкламны блок на сваім сайце — без этапу стварэння, без iframe. Скрыпт адлюстроўваецца непасрэдна на старонцы ў ізаляваным Shadow DOM, таму яго стылі ніколі не прасочваюцца на ваш сайт, а стылі вашага сайта — не на яго.

Дадайце гэта на сваю старонку

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

Па змаўчанні гэта паказвае поўны публічны рэйтынг для катэгорыі — кожнага рэкламадаўцу на платформе, а не толькі тых, якіх вы прыцягнулі. Каб паказваць толькі рэкламу ад рэкламадаўцаў, якіх вы стварылі праз рэжым Connect (тыя, што прыносяць вашу долю), дадайце data-partner з ідэнтыфікатарам вашага партнёра (знойдзіце яго на старонцы распрацоўшчыкаў у вашым уласным кабінеце):

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

Калі вашы рэкламадаўцы ахопліваюць некалькі катэгорый, цалкам адмоўцеся ад data-category — пры выкарыстанні толькі data-partner віджэт паказвае ўсе вашы аб'явы з усіх катэгорый у адной сетцы, замест таго каб размяшчаць па адным блоку віджэта на кожную катэгорыю:

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

Хочаце раздзел у стылі падваконніка побач з тым, што ўмешчаны ў кантэнце, і каб кожны паказваў розныя рэкламныя аб'явы? Дадайце другі блок віджэта з атрыбутамі data-layout="compact" (адзіночная аб'ява, якая згортваецца ў невялікую кнопку) і data-offset, значэнне якога залежыць ад таго, колькі аб'яў ужо паказвае ваш першы віджэт:

<!-- 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-categoryID катэгорыі для адлюстравання. Абавязкова — за выключэннем выпадкаў, калі ўсталяваны data-partner, у такім выпадку адсутнасць гэтага параметра паказвае рэкламу партнёра ва ўсіх катэгорыях.
data-geoГеаграфічны ахоп: мясцовы, рэгіянальны або глабальны. Па змаўчанні — глабальны.
data-countКолькасць аб'яў для адлюстравання. Па змаўчанні — 4.
data-columnsКолькасць слупкоў сеткі. Па змаўчанні 2.
data-layoutсетка, спіс або кампакт. Па змаўчанні — сетка. Рэжым кампакт паказвае адну рэкламу (колькасць даных не ўлічваецца) з кнопкай, каб схаваць яе ў невялікую кнопку і вярнуць назад — гэта блок у стылі падваконніка, які сам скрыпт ніколі не размяшчае фіксавана; вы самі размяшчаеце і стылюеце кантэйнер div на сваёй старонцы, як хочаце.
data-offsetКолькасць рэклам з топ-рэйтынгу, якія прапусціць. Па змаўчанні — 0. Дазваляе другому віджэту на той жа старонцы (напрыклад, кампактнаму ў футары і ў выглядзе сеткі вышэй) паказваць іншыя рэкламы замест таго, каб двойчы паўтараць адну і тую ж — перадайце колькасць рэклам, якія іншы віджэт ужо паказвае.
data-partnerВаш ID партнёра (знойдзіце яго на старонцы «Распрацоўшчыкі» вашай прыборнай панэлі). Неабавязкова — без яго віджэт паказвае поўны публічны рэйтынг для гэтай катэгорыі, усіх рэкламадаўцаў на платформе. З ім — толькі рэкламу ад рэкламадаўцаў, якіх вы прывялі праз рэжым Connect, — тых, што фактычна прыносяць вашу долю.

Падзял даходаў

Як партнёру насамрэч дастаецца рэферальная камісія — працэнт, механізм выплат і папярэднія ўмовы.

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
}

Не з'яўляецца фіксаванай колькасцю

Працэнт камісіі наладжваецца з нашага боку і можа змяняцца — заўсёды чытайце яго ў рэжыме рэальнага часу з гэтага эндпойнта, а не ўводзіць значэнне ў жорсткі код.

Цалкам аўтаматычны

Канчатковага тэрміну вываду сродкаў няма. Запланаваная задача разлічвае налічаныя да выплаты сродкі, аб'ядноўвае іх у пакеты па кожнаму рэкламадаўцу і аўтаматычна выплачвае, як толькі выкананы ўсе ўмовы, пералічаныя ніжэй.

Умовы выплаты

  • Агульная сума да выплаты рэкламадаўцы дасягае мінімальнай сумы выплат.
  • На іх уліковым запісе наладжаны крыпта-гаманец для выплат.
  • Іх статус KYC правераны.

Прыклад: прагляд назапашаных заробкаў

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
}

Цэнавыя пазіцыі (ужывую)

Чытайце з гэтага эндпойнта ў рэальным часе — ніколі не ўбудоўвайце гэтыя значэнні ў код, яны могуць змяніцца з нашага боку. Стварыце выбарнік узроўняў для ўласных карыстальнікаў замест поля з бясплатнай сумай: кожная паказаная цана — гэта ўжо дакладная сума, якую трэба перавесці пры стварэнні аплаты, а адлюстраваныя тут разблакаваныя перавагі дакладна паказваюць карыстальнікам, што ўключае кожная цана, таму яны выбіраюць цану, якую разумеюць, замест таго каб здагадвацца з лікам.

УзровеньЦанаРаскрывае
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Спасылка, якую можна націснуць
Gold$500.00

Animation unlocked

Спасылка, якую можна націснуцьАнімацыя
Platinum$1,000.00

Enhanced exposure

Спасылка, якую можна націснуцьАнімацыя
Diamond$2,500.00

Premium placement

Спасылка, якую можна націснуцьАнімацыя
Elite$5,000.00

Top-tier visibility

Спасылка, якую можна націснуцьАнімацыя
Legendary$10,000.00

Maximum visibility & branding

Спасылка, якую можна націснуцьАнімацыя

Абмежаванні хуткасці

Колькасць запытаў абмежаваная па ключы ў хвіліну. Кожны аўтэнтыфікаваны адказ змяшчае загалоўкі X-RateLimit-Limit, X-RateLimit-Remaining і X-RateLimit-Reset; перавышэнне ліміту вядзе да вяртання кода 429 Too Many Requests з загалоўкам Retry-After.

Дазволены спіс IP

Неабавязкова, для партнёра. Пакуль вы не дадасце запіс, вашы ключы прымаюць запыты з любога IP-адраса — першы запіс пераводзіць усе ключы гэтага партнёра толькі на рэжым дазволенага спіса.

Вебхукі

Кожны вэбхук падпісваецца з дапамогай HMAC-SHA256 з выкарыстаннем сакрэтнага ключа, які выдаецца адзін раз пры стварэнні — праверце подпіс, перш чым давяраць грузу. Падзеі дастаўляюцца толькі таму партнёру, які з'яўляецца ўладальнікам адпаведнага рэкламадаўцы.

payment.succeededПлацеж пацверджаны.
payment.refundedВяртанне сродкаў ажыццёўлена.
ad.activatedРэклама становіцца актыўнай аўтаматычна або пасля праверкі адміністратарам.
invoice.issuedВыстаўлена рахунак-фактура.
referral.payout.completedРэферальная камісія становіцца аплачванай.
referral.payout.failedПартыя выплат за рэфералы правальваецца ў пастаўшчыка — заробкі вяртаюцца ў раздзел «Да выплат» і апрацоўваюцца паўторна.
rank.changedРэйтынг аб'явы змяняецца, у тым ліку ў выніку аплаты іншага рэкламадаўцы.
ad.expiring_soonЗа 30, 7 або 1 дзень да заканчэння тэрміну дзеяння аб'явы.
partner_ad_revenue.payout.completedВыплата долі даходу ад рэкламы атрымлівае статус аплачанай.
partner_ad_revenue.payout.failedПартыя выплат долі даходаў ад рэкламы правальваецца ў пастаўшчыка — долі вяртаюцца ў раздзел для выплаты і спрабуюцца зноў.

Наборы для распрацоўкі праграмнага забеспячэння

Афіцыйныя SDK для JavaScript/TypeScript і Python, створаныя на аснове гэтай жа спецыфікацыі API, плануюцца, але яшчэ не апублікаваныя — пакуль што выклікайце HTTP-API напрамую.

Хуткі пачатак

Пакуль няма SDK — яны выклікаюць HTTP-API напрамую і працуюць сёння на любой мове.

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