Construye dreitament en a plataforma Annual Ads: creya anunciants, publica anuncios, activa os pagos y fa un seguimiento d'o ran, tot a traviés de l'API.
Veyer a tabla de pres completaT'encargas de 70% d'o que pagan os tuyos anunciants en modo Connect por os suyos anuncios — pagau automaticament en a tuya cartera. Mira cómo funciona debaixo.
Cada solicitut s'autentica con una clau secreta en o encabezau d'Autorización, fendo servir l'esquema Bearer.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAs claus API s'emiten a las cuentas de socio aprobadas por l'equipo d'Anuncios Anyals.
Creyar una cuenta de socio| POST | /v1/partner/advertisersCrear una cuenta d'anunciant en nombre d'un d'os suyos usuarios (modo Connect). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Busque una cuenta d'anunciant creyada por iste socio. | advertisers:read |
| POST | /v1/partner/adsCrea un anuncio. Empecipia con estatus de borrador. Os campos opcionals advertiser_type, promotion_type, link_type y promoted_brand describen publicidat d'afiliaus, de referencia, de creyadors u individual — se veiga a nota de debaixo. | ads:write |
| GET | /v1/partner/ads/{id}Busca un anuncio. | ads:read |
| PATCH | /v1/partner/ads/{id}Actualizar o conteniu editorial — títol, descripción, vinclo, tipo d'anunciant, tipo de promoción, tipo de vinclo y marca promocionada. A categoría, a cheografía y tot o que lée o motor de clasificación nunca no se pueden cambiar aquí. | ads:write |
| POST | /v1/partner/ads/{id}/imagePuya una imachen de l'anuncio directament (JPEG/PNG/WebP, 5 MB max). Requisito antes d'o primer pago — se veiga o grupo de pagos de debaixo. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlEstableix a imachen d'un anuncio dende una URL en cuenta de puyar un fichero — o servidor la recupera y la alocha ell mesmo. O mesmo requisito: cal antes d'o primer pago. | ads:write |
| GET | /v1/partner/ads/{id}/rankRango, categoría y ámbito cheografico actuals pa un anuncio. | ads:read |
| GET | /v1/partner/ads/{id}/statsAs vistas y clics totals d'un anuncio — os días pasaus/restants promanan d'os campos activated_at/expires_at ya disponibles en GET /{id}, y o ranqueo de GET /{id}/rank. | ads:read |
| POST | /v1/partner/paymentsPrencipia un pago en criptomoneda pa una compra inicial u una recarga. Un pago inicial falla con 422 si l'anuncio no tiene ya una imachen — se veiga uploadAdImage/setAdImageUrl más entalto. | payments:write |
| GET | /v1/partner/payments/{id}Comprobar o estau d'un pago. | payments:read |
| POST | /v1/partner/referralsCrea un vinclo de referencia. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsGanancias acumuladas por derivación, deseparadas por estatus. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsA tuya parte d'o 70% de lo que os anunciants que creyaste en modo Connect pagoron por os suyos anuncios, desglossada por estau. | ad-revenue:read |
| GET | /v1/partner/access-logHistorial completo d'as clamadas d'ista clau — metodo, rota, IP, marca de tiempo. | Astí |
| GET | /v1/rankings?category={id}&geo={scope}Ranquin de nomás lectura pa una categoría y un ámbito cheografico. | Publico |
| GET | /v1/tiersOs 7 livels de pre configuraus (branca, beneficios desbloqueyaus). | Publico |
| GET | /v1/referral-programOs porcentaches de comisión actualment activos pa la cascada de referidos y o Puesto de Líderes. | Publico |
| GET | /v1/partner-programA repartición actual d'os ingresos por publicidat (modo Connect) entre tu y Publicidaz Anyals. | Publico |
| GET | /v1/search?q={query}Busca en luenga natural — diriche una consulta como "anunciants de muebles en Kenya" a la categoría y l'abasto cheografico correspondients, y dimpués retorna ixe ranquián, en o suyo orden real exacto. | Publico |
Publicidat d'afiliaus y de referencia
advertiser_type, promotion_type, link_type, y promoted_brand son campos opcionals en as peticions POST y PATCH /v1/partner/ads — Annual Ads no se limita a interpresas que s'anuncian a ellas mesmas. Cuan link_type ye affiliate_link u referral_invitation_link, u promotion_type ye affiliate_offer u referral_opportunity, affiliate_terms_accepted ha d'estar true u a solicitut se refusa con un 422. O títol se limita a 35 caracters y a descripción a 80 — toz dos s'aplican dende o costau d'o servidor, no nomás en a interfaz d'usuario d'o panel de control.
Cada cuenta d'anunciant tiene un conchunto de ferramientas d'IA integradas —un chenerador de conteniu y visuals publicitarios, un asistent de conversa, un consellero de presupuesto y un auditor SEO externo— pagadas con creditos d'IA, amás d'o preu anyal fixo.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — un asistent de conversa flotant, nomás informativo, en cuenta nomás de lectura. | Publico |
| POST | /v1/advertisers/{id}/ai/creative-studioChenerar un títol, una descripción y parolas clau d'un anuncio a partir d'una breu descripción d'empresa. | 2 creditos |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageChenerar una imachen listada (PNG) a partir d'a mesma descripción d'o negocio, alochada y presta pa adchuntar a un anuncio. | 8 creditos |
| POST | /v1/advertisers/{id}/ai/budget-advisorUna verdadera prochección estatistica — nunca no una suposición chenerativa — d'as probabilidaz de mantener un ran dau a 30/90/365 días. | 1 creditos |
| POST | /v1/advertisers/{id}/ai/seo-auditAnalizar o propio sitio web externo de l'anunciant y sucherir milloras SEO concretas. | 2 creditos |
A mesma categoría y descripción d'o negocio tamién alimentan o chenerador d'imachens de debaixo.
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
}Chenerar una imachen a chuego pa o mesmo anuncio:
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
}Fica una unidat publicitaria prefabricada en o tuyo propio puesto web — sin necesidat de construcción, sin iframe. O script dibuja-se directament en a pachina adintro d'un Shadow DOM isolau, de traza que os suyos estilos nunca no s'escapan enta o tuyo puesto web, y os estilos d'o tuyo puesto web nunca no s'escapan enta él.
<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>Por defecto, isto amuestra o ranking publico completo d'a categoría — toz os anunciants d'a plataforma, no nomás os que has trayiu. Pa amostrar nomás os anuncios d'os anunciants que has creyau a traviés d'o modo Connect (os que cheneran a tuya parte), adhibe data-partner con o tuyo ID de socio (lo trobarás en a pachina de Desembolicadors d'o tuyo propio panel de control):
<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>Si os suyos anunciants s'estienden por cuantas categorías, quite de tot "data-category" — con "data-partner" solo, o widget amuestra toz os suyos anuncios de todas as categorías en una sola ret, en cuenta de precisar un bloque de widget por categoría:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Quiers una unidat en estilo pie de pachina chunto a la tuya de dentro d'o conteniu, amostrando cada una anuncios diferents? Adhibe un segundo bloque de widgets con data-layout="compact" (un solo anuncio, plegable en una pastilla chicota) y data-offset configurau a o numero d'anuncios que o tuyo primer widget ya amuestra:
<!-- 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 de categoría pa amostrar. Requisito — de no estar que s'haiga configurau data-partner, en ixe caso, omitir-lo amuestra os anuncios d'ixe socio en todas as categorías. |
data-geo | Alcance cheografico: local, rechional u global. Por defecto, global. |
data-count | Numero d'anuncios a amostrar. Por defecto, 4. |
data-columns | Numero de columnas d'a ret. Por defecto 2. |
data-layout | grid, list, u compact. Por defecto ye grid. compact amuestra un solo anuncio (data-count s'inora) con un botón pa plegar-lo en una pastilla chicota y tornar-lo a amostrar — una unidat d'estilo pie de pachina, nunca no posicionada fixa por o mesmo script; tu colocas y estilizas o contenedor div como quieras en a tuya propia pachina. |
data-offset | Numero d'anuncios prencipals a saltar. Por defecto, 0. Permite que un segundo widget en a mesma pachina (p. ex. un de compacto en o piet de pachina y un d'una ret mas entalto) amuestre anuncios diferents en cuenta de repetir o mesmo dos vegadas — pasa o numero d'anuncios que l'atro widget ya amuestra. |
data-partner | A tuya ID de socio (la trobarás en a pachina de Desembolicadors d'o tuyo propio panel de control). Opcional — sin ella, o widget amuestra o ranking publico completo d'ixa categoría, con toz os anunciants d'a plataforma. Con ella, nomás os anuncios d'os anunciants que has trayiu a traviés d'o modo Connect — os que realment cheneran a tuya parte. |
As solicituz son limitadas por clau, por minuto. Cada respuesta autenticada transporta as cabeceras X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset; superar o limite retorna 429 Too Many Requests con una cabecera Retry-After.
Opcional, por socio. Dica que adhibas una dentrada, as tuyas claus acceptan solicituz dende cualsiquier IP — a primera dentrada cambia todas as claus d'ixe socio ta que nomás accepten d'a lista blanca.
Cada webhook ye sinyau con HMAC-SHA256 fendo servir un secreto emitiu nomás que una vegada, en o momento d'a suya creyación — comprebe a sinyatura antes de confiar en a carga útil. Os eventos se entregan nomás que a o socio que ye o propietario de l'anunciant relacionau.
payment.succeeded | Un pago ye confirmau. |
payment.refunded | S'executa un reembolso. |
ad.activated | Un anuncio s'activa, automaticament u dimpués d'a revisión de l'administrador. |
invoice.issued | S'emite una factura. |
referral.payout.completed | Una comisión de derivación plega a estar pagada. |
referral.payout.failed | Un lote de pagos de refiridos falla en o proveyedor — os ingresos tornan a o saldo a pagar y se tornan a prebar. |
rank.changed | O ran d'un anuncio cambia —incluindo cuan o pago d'un atro anunciant lo causa. |
ad.expiring_soon | 30, 7, u 1 día(s) antes de que un anuncio caduque. |
partner_ad_revenue.payout.completed | Un pago de reparto d'ingresos publicitarios aconsigue o estatus de pagau. |
partner_ad_revenue.payout.failed | Un lote de pagos de reparto d'ingresos publicitarios falla en o proveedor — as participacions tornan a la cuenta de pagar y se tornan a prebar. |
Os SDKs oficials de JavaScript/TypeScript y Python, cheneraus dende ista mesma especificación de l'API, son previstos pero encara no s'han publicau — dica alavez, clamatz directament l'API HTTP.
Encara no i hai SDK — istos claman directament a l'API HTTP y funcionan hue en qualsequier luengache.
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": "...",
},
)