BUILD with ADTRADE

Sus asociaciones. Tu integración.

Busque anunciantes y campañas, cree enlaces de seguimiento y registre compras desde su propia integración.

Administrar las claves de API
HTTP · JSON · API v1
URL base https://adtrade.io
01 / Empezar

Autenticación

Cree una clave de API bajo las teclas de API en el portal. Seleccione sólo los permisos que necesita su integración. La clave se muestra una vez y pertenece a la cuenta donde fue creada.

HTTP headers
Authorization: Bearer $ADTRADE_API_KEY
Accept: application/json

Mantenga la llave en su servidor. Envíelo en el encabezado de Autorización sobre HTTPS, nunca en un enlace o JavaScript público. Los ejemplos leen la variable entorno ADTRADE_API_KEY.

Ejemplos utilizan este entorno. Utilice claves, códigos de canal y códigos de publicidad del mismo entorno. Todos los valores de ejemplo son ficticios; enviar una compra puede crear una transacción real.

Esta referencia abarca las integraciones externas. El portal interno API utiliza un registro independiente. Un permiso enumerado en la gestión clave no necesariamente tiene un punto final externo correspondiente.

GET/api/v1/advertisersPublisher & anunciante

Fetch anunciantes

Lea los perfiles y mercados del anunciante. Los afiliados pueden recuperar enlaces para su propio canal con una asociación aprobada.

Permiso advertisers:read

Parámetros

En la cadena de consulta URL

Parámetro/tipoDescripción
pageintegerOpcional / condicionalPágina 1–1,000,000. Default: 1.
per_pageintegerOpcional / condicional1–100 hileras. Predeterminado: 50. Solicitar páginas posteriores hasta que se hayan leído todas las filas totales.
marketstringOpcional / condicionalCódigo de mercado de dos letras, como SE. Especifique el mercado de las asociaciones que abarcan múltiples mercados.
searchstringOpcional / condicionalBuscar nombres de anunciantes. Máximo 100 caracteres.
channel_codestringOpcional / condicionalCódigo público de su canal. Devuelve enlaces por mercado cuando la asociación permite el seguimiento.
Ejemplo · cURL
curl --get "https://adtrade.io/api/v1/advertisers?market=SE&page=1&per_page=50" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Accept: application/json"
200 · Respuesta del ejemplo · extracto
{
    "rows": [
        {
            "id": 4,
            "advertiser_code": "100",
            "name": "Example Store",
            "status": "active",
            "approval_status": "approved",
            "website_url": "https://shop.example.com",
            "tracking_url": null,
            "links": []
        }
    ],
    "total": 1,
    "page": 1,
    "per_page": 50
}

La respuesta contiene hileras, total, página y per_page. Check status and approval_status; la lista puede incluir anunciantes inactivos o no aprobados. channel_code requiere una clave de afiliado y un canal de propiedad. Utilice el código público, no el canal_id interno.

Use tracking_url cuando tracking_available es cierto en enlaces. De lo contrario, url puede ser una dirección de tienda ordinaria sin atribución. Cada mercado tiene su propio vínculo. Un solo mercado también puede poblar tracking_url en la fila del anunciante.

GET/api/v1/campaignsPublisher & anunciante

Campañas de captura

Recuperar las ofertas actuales y los códigos de descuento, con enlaces de seguimiento para los canales de afiliado elegibles.

Permiso campaigns:read

Parámetros

En la cadena de consulta URL

Parámetro/tipoDescripción
pageintegerOpcional / condicionalPágina 1–1,000,000. Default: 1.
per_pageintegerOpcional / condicional1–100 hileras. Predeterminado: 50. Solicitar páginas posteriores hasta que se hayan leído todas las filas totales.
marketstringOpcional / condicionalCódigo de mercado de dos letras, como SE. Especifique el mercado de las asociaciones que abarcan múltiples mercados.
Ejemplo · cURL
curl --get "https://adtrade.io/api/v1/campaigns?market=SE&page=1&per_page=50" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Accept: application/json"
200 · Respuesta del ejemplo · extracto
{
    "rows": [
        {
            "id": "12",
            "advertiser_id": "4",
            "advertiser_name": "Example Store",
            "description": "10% discount",
            "discount_code": "EXAMPLE10",
            "markets": [
                "SE"
            ],
            "tracking_links": [
                {
                    "channel_code": "1234567",
                    "channel_name": "Example Channel",
                    "market": "SE",
                    "url": "https://adtrade.io/t?a=100&c=1234567&m=SE&campaign=12&voucher=EXAMPLE10"
                }
            ]
        }
    ],
    "total": 1,
    "page": 1,
    "per_page": 50
}

Sólo se muestran campañas activas dentro de su período de validez; las fechas siguen el tiempo sueco. Las campañas exclusivas dependen del acceso a la cuenta. Las respuestas del afiliado incluyen tracking_links, que pueden estar vacías. Las respuestas de los anunciantes no incluyen este campo. Reutiliza los enlaces devueltos y sus parámetros de campaña.

POST/tAnunciante

Registro de compras y eventos

Envíe un evento desde el servidor del anunciante usando una clave del anunciante. La clave debe pertenecer al anunciante especificado en la solicitud.

Permiso transactions:write

Parámetros

Cuerpo de la solicitud JSON

Parámetro/tipoDescripción
eventstringNecesarioNombre del evento del programa, como Purchase. Máximo 100 caracteres.
advertiserCodestringNecesarioCódigo publicitario (3-8 dígitos para eventos), no el ID de base de datos interno.
channelCodestringNecesarioCódigo de canal público (6-8 dígitos para eventos), no el ID de base de datos interno.
orderReferencestringOpcional / condicionalNecesario para Purchase. Una referencia de orden estable y única por anunciante, máximo 150 caracteres. Reutilizar en las retries.
amountstringOpcional / condicionalNecesario para Purchase. Cadena decimal no negativa con un punto y en la mayoría de dos lugares decimales, como 200.00. Siga las reglas del valor de orden del programa.
currencystringOpcional / condicionalNecesario para Purchase. Tres cartas, como SEK. Debe coincidir con la regla de la comisión.
marketstringOpcional / condicionalCódigo de mercado de dos letras, como SE. Especifique el mercado de las asociaciones que abarcan múltiples mercados.
clickIdstringOpcional / condicionalclickId desde la URL de aterrizaje, máximo 100 caracteres. Debe pertenecer al mismo canal y anunciante.
clickRefstringOpcional / condicionalReferencia de clic personalizado opcional, máximo 255 caracteres. No envíe datos personales.
occurredAtintegerOpcional / condicionalUnix timestamp en segundos. Default: tiempo de recepción. Al menos 7 días en el pasado o 5 minutos en el futuro.
voucherstringOpcional / condicionalCódigo de descuento opcional, máximo 2.000 caracteres.
Ejemplo · cURL
curl --request POST "https://adtrade.io/t" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "event": "Purchase", "advertiserCode": "100",
    "channelCode": "1234567", "market": "SE",
    "clickId": "CLICK_ID_FROM_LANDING_URL",
    "orderReference": "EXAMPLE-1001",
    "amount": "200.00", "currency": "SEK"
  }'
202 · Respuesta del ejemplo · extracto
{
    "status": "accepted",
    "queued": true,
    "receiptId": "00000000-0000-4000-8000-000000000001",
    "event": "Purchase"
}
200 · Respuesta del ejemplo · extracto
{
    "success": true,
    "eventId": 101,
    "event": "Purchase",
    "recognized": true,
    "conversion": true,
    "duplicate": false,
    "transaction": {
        "id": 1001,
        "status": "pending",
        "orderReference": "EXAMPLE-1001",
        "amount": "200.00",
        "commissionAmount": "16.00",
        "currency": "SEK"
    }
}

Purchase requiere orderReference, cantidad y moneda. Las reglas de canal, mercado, programa, atribución y comisión determinan si se crea una transacción. Otros nombres de eventos deben coincidir con la configuración del programa. clickId es opcional en el protocolo; enviar el valor de la URL de aterrizaje para vincular la compra a un clic registrado.

200 significa que el procesamiento ha terminado; comprueba recognized, conversion y duplicate. 202 solo confirma la recepción en una cola duradera. receiptId es un identificador de recibo, no un identificador de transacción ni una promesa de comisión. No existe un endpoint público de consulta para este identificador; revisa los registros de eventos y transacciones del portal.

Después de un resultado de red incierto o 503, reingrese con los mismos datos de compra y orderReference. La misma referencia de pedido para un anunciante protege contra las transacciones financieras duplicadas, pero se pueden registrar registros adicionales de eventos. Trate 202 como se ha recibido; no reenviar sólo porque la transacción todavía no es visible.

POST/api/v1/tracking/voucher-purchaseAnunciante

Compra de comprobante exclusivo

Información de servidor opcional para compras sin atribución de clics. La clave de API identifica al anunciante; una campaña exclusiva activada explícitamente determina el canal y el programa.

Permiso transactions:write

Parámetros

Cuerpo de la solicitud JSON

Parámetro/tipoDescripción
voucherstringNecesarioCódigo de descuento opcional, máximo 2.000 caracteres.
orderReferencestringNecesarioNecesario para Purchase. Una referencia de orden estable y única por anunciante, máximo 150 caracteres. Reutilizar en las retries.
amountstringNecesarioNecesario para Purchase. Cadena decimal no negativa con un punto y en la mayoría de dos lugares decimales, como 200.00. Siga las reglas del valor de orden del programa.
currencystringNecesarioNecesario para Purchase. Tres cartas, como SEK. Debe coincidir con la regla de la comisión.
marketstringNecesarioCódigo de mercado de dos letras, como SE. Especifique el mercado de las asociaciones que abarcan múltiples mercados.
occurredAtintegerOpcional / condicionalUnix timestamp en segundos. Default: tiempo de recepción. Al menos 7 días en el pasado o 5 minutos en el futuro.
Ejemplo · cURL
curl --request POST "https://adtrade.io/api/v1/tracking/voucher-purchase" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"voucher":"EXAMPLE10","orderReference":"EXAMPLE-1001","amount":"200.00","currency":"SEK","market":"SE"}'
200 · Respuesta del ejemplo · extracto
{
    "success": true,
    "conversion": true,
    "duplicate": false,
    "attributionMethod": "exclusive_voucher",
    "transaction": {
        "id": 1001,
        "status": "pending",
        "orderReference": "EXAMPLE-1001",
        "amount": "200.00",
        "commissionAmount": "16.00",
        "currency": "SEK"
    }
}

Desactivado por defecto; devuelve 404 hasta que se active. El código debe coincidir exactamente, ser inequívoco y ser válido para el mercado y la fecha de compra. Nunca envíes clickId ni channelCode aquí: las compras con clic siguen usando /t. Reutiliza exactamente el mismo orderReference en los reintentos y entre integraciones; los pedidos existentes nunca se reasignan. Este endpoint procesa la compra directamente en PostgreSQL y devuelve 200 tras procesarla, incluso en modo Kafka. Comprueba conversion, conversionBlocked y duplicate.

Después de un resultado de red incierto o 503, reingrese con los mismos datos de compra y orderReference. La misma referencia de pedido para un anunciante protege contra las transacciones financieras duplicadas, pero se pueden registrar registros adicionales de eventos. Trate 202 como se ha recibido; no reenviar sólo porque la transacción todavía no es visible.

GET/tAfiliado

Enlace de seguimiento " redirect

Enviar visitantes al anunciante a través de Adtrade. Preferir el tracking_url devuelto por la API o portal.

No API key · enlace de seguimiento público

Parámetros

En la cadena de consulta URL

Parámetro/tipoDescripción
astringNecesarioCódigo publicitario (3-8 dígitos para eventos), no el ID de base de datos interno.
cstringNecesarioCódigo de canal público (6-8 dígitos para eventos), no el ID de base de datos interno.
mstringOpcional / condicionalCódigo de mercado de dos letras, como SE. Especifique el mercado de las asociaciones que abarcan múltiples mercados.
rstringOpcional / condicionalReferencia de clic personalizado opcional, máximo 255 caracteres. No envíe datos personales.
Ejemplo · URL
https://adtrade.io/t?a=100&c=1234567&m=SE&r=article-123
302 · Respuesta del ejemplo · extracto
HTTP/1.1 302 Found
Location: https://shop.example.com/?advertiserCode=100&channelCode=1234567&market=SE&clickId=...

Abierta por el navegador del visitante sin una clave de API. Una asociación válida normalmente devuelve 302 a la página de aterrizaje del anunciante con clickId y la información de seguimiento. Un enlace inválido puede mostrar una página de retroceso en su lugar. Una visita no es una compra y no garantiza comisión. Siga los términos del programa y los ajustes de consentimiento.

HTTP / JSON

Respuestas " errores

Las respuestas de JSON se devuelven directamente sin un sobre de datos. Treat equivale a cadenas decimales. Lea los campos de respuesta; un estado de HTTP exitoso no siempre significa que se creó la comisión.

200
Procesado. Para compras, también compruebe la conversión y duplicar.
202
Recibido en una cola. La validación de negocios está pendiente.
302
Visitante redireccionado al anunciante.
400
Parámetro inválido o JSON.
401
Desaparecido, inválido o caducado clave de API.
403
Permiso insuficiente, tipo de cuenta incorrecta o cuenta no disponible.
404
Recursos no encontrados dentro del acceso de la cuenta.
413
Solicitar cuerpo demasiado grande. /t permite a la mayoría de 64 KiB.
422
Las reglas de negocio evitan el procesamiento.
429
Demasiadas solicitudes. Sigue a Retry-After.
503
Temporalmente indisponible o la cola no confirmada.
429 · JSON
HTTP/1.1 429 Too Many Requests
Retry-After: 5
Content-Type: application/json

{
  "error": "rate_limit_exceeded",
  "retry_after": 5
}

Los límites se aplican a las claves de API y direcciones IP y pueden ser ajustados por las operaciones. En 429 o 503, siga Retry-Después de estar presente, utilice retrasos crecientes y evite retries paralelos. Mantenga la misma referencia en el pedido al reenviar una compra.