Referencia
Las tablas siguientes se generan a partir de los esquemas que las rutas aplican realmente. No pueden describir otra cosa que el comportamiento vigente.
GET /v1/programs
El directorio público, ordenado por puntuación de atractivo descendente. Las mismas filas para todas las claves.
Returns published affiliate programmes, most attractive first. The directory is public data: every key sees the same rows. Results are cursor-paginated.
Parámetros
| Nombre | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
vertical | consulta | saas | ecommerce | infoproduit | finance | sante | voyage | mode | maison | jeux | services | immobilier | autre | no | Restrict to one industry. |
model | consulta | cps | cpa | cpl | recurring | hybrid | no | Restrict to one payout model. |
market | consulta | string | no | ISO 3166-1 alpha-2 country code, case-insensitive. |
recurring | consulta | true | false | no | Keep only programs whose commission repeats, or only those that do not. |
minScore | consulta | integer (0–100) | no | Minimum attractiveness score. |
limit | consulta | integer (1–100) · por defecto 25 | no | Items per page, 1-100. |
cursor | consulta | string | no | Opaque cursor returned as `page.nextCursor` by the previous call. |
Petición
curl -s 'https://getaff.org/api/v1/programs?vertical=saas&minScore=60&limit=2' \
-H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'Respuesta
{
"data": [
{
"slug": "northstack-northstack",
"name": "NorthStack",
"host": "northstack.io",
"site": "https://northstack.io",
"pitch": "Managed Postgres for teams that ship on Fridays. Free tier, usage billing.",
"vertical": "saas",
"model": "recurring",
"commission": "25% recurring",
"recurring": true,
"cookieDays": 90,
"payout": "monthly",
"minPayout": 50,
"markets": [
"FR",
"BE",
"CH",
"DE"
],
"platform": "in-house",
"signupUrl": "https://northstack.io/partners",
"score": 78,
"image": "",
"createdAt": "2026-03-11T09:24:00.000Z"
}
],
"page": {
"limit": 2,
"hasMore": true,
"nextCursor": "Wzc4LCJ2SzlxIl0"
}
}Campos de la respuesta
| Nombre | Tipo | Descripción |
|---|---|---|
data | Programme[] | |
data[].slug | string | Stable identifier used in the directory URL. |
data[].name | string | |
data[].host | string | Advertiser domain, without scheme. |
data[].site | string | Advertiser website. |
data[].pitch | string | One-paragraph description written by the advertiser. |
data[].vertical | saas | ecommerce | infoproduit | finance | sante | voyage | mode | maison | jeux | services | immobilier | autre | |
data[].model | cps | cpa | cpl | recurring | hybrid | Payout model. |
data[].commission | string | Commission as advertised, free text (e.g. "30%", "50 EUR"). |
data[].recurring | boolean | True when the commission repeats on renewals. |
data[].cookieDays | integer | Attribution window, in days. |
data[].payout | weekly | biweekly | monthly | net30 | net60 | Payment cadence. |
data[].minPayout | number | Minimum balance before payment, in the advertiser currency. |
data[].markets | string[] | ISO 3166-1 alpha-2 country codes. |
data[].platform | string | Affiliate platform hosting the program. Empty when in-house. |
data[].signupUrl | string | Where an affiliate applies. |
data[].score | integer | GetAff attractiveness score, 0-100. See /docs for how it is computed. |
data[].image | string | Illustration URL. Empty when none is available. |
data[].createdAt | string | ISO 8601 timestamp of publication. |
page | PageInfo | |
page.limit | integer | Number of items requested for this page. |
page.hasMore | boolean | True when a further page exists. |
page.nextCursor | string | null | Opaque cursor. Pass it back as `cursor` to fetch the next page. Do not parse it. |
Errores posibles
400401429503
GET /v1/programs/{slug}
Una ficha publicada, por su identificador de URL.
Returns a single published programme by slug. Unpublished and rejected submissions are not reachable through this endpoint.
Parámetros
| Nombre | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
slug | ruta | string | sí | Program slug, as returned by GET /v1/programs. |
Petición
curl -s 'https://getaff.org/api/v1/programs/northstack-northstack' \
-H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'Respuesta
{
"data": {
"slug": "northstack-northstack",
"name": "NorthStack",
"host": "northstack.io",
"site": "https://northstack.io",
"pitch": "Managed Postgres for teams that ship on Fridays. Free tier, usage billing.",
"vertical": "saas",
"model": "recurring",
"commission": "25% recurring",
"recurring": true,
"cookieDays": 90,
"payout": "monthly",
"minPayout": 50,
"markets": [
"FR",
"BE",
"CH",
"DE"
],
"platform": "in-house",
"signupUrl": "https://northstack.io/partners",
"score": 78,
"image": "",
"createdAt": "2026-03-11T09:24:00.000Z"
}
}Campos de la respuesta
| Nombre | Tipo | Descripción |
|---|---|---|
data | Programme | |
data.slug | string | Stable identifier used in the directory URL. |
data.name | string | |
data.host | string | Advertiser domain, without scheme. |
data.site | string | Advertiser website. |
data.pitch | string | One-paragraph description written by the advertiser. |
data.vertical | saas | ecommerce | infoproduit | finance | sante | voyage | mode | maison | jeux | services | immobilier | autre | |
data.model | cps | cpa | cpl | recurring | hybrid | Payout model. |
data.commission | string | Commission as advertised, free text (e.g. "30%", "50 EUR"). |
data.recurring | boolean | True when the commission repeats on renewals. |
data.cookieDays | integer | Attribution window, in days. |
data.payout | weekly | biweekly | monthly | net30 | net60 | Payment cadence. |
data.minPayout | number | Minimum balance before payment, in the advertiser currency. |
data.markets | string[] | ISO 3166-1 alpha-2 country codes. |
data.platform | string | Affiliate platform hosting the program. Empty when in-house. |
data.signupUrl | string | Where an affiliate applies. |
data.score | integer | GetAff attractiveness score, 0-100. See /docs for how it is computed. |
data.image | string | Illustration URL. Empty when none is available. |
data.createdAt | string | ISO 8601 timestamp of publication. |
Errores posibles
401404429
GET /v1/me
La cuenta que llama: plan, capacidades, plataformas conectadas y tope de caudal. Nunca se devuelve ninguna credencial de plataforma.
Plan, capabilities, connected networks and the rate limit that applies to this key. Network credentials are never exposed by any endpoint, under any parameter.
Parámetros
Sin parámetros.
Petición
curl -s 'https://getaff.org/api/v1/me' \
-H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'Respuesta
{
"data": {
"uid": "kJ2p8wQxYb",
"email": "[email protected]",
"plan": "pro",
"capabilities": {
"acquisition": {
"enabled": true,
"configured": true,
"enabledAt": "2026-02-04T08:11:00.000Z"
},
"monetisation": {
"enabled": true,
"configured": true,
"enabledAt": "2026-02-04T08:40:00.000Z"
}
},
"networks": [
{
"network": "awin",
"status": "ok",
"connectedAt": "2026-02-04T08:40:00.000Z",
"lastSyncAt": "2026-07-25T03:12:00.000Z",
"accounts": 1,
"programs": 34,
"transactions": 1209
}
],
"key": {
"prefix": "gaff_live_9fA2xQ1p",
"label": "Reporting cron",
"scopes": [
"read"
]
},
"rateLimit": {
"limit": 600,
"windowSeconds": 60
}
}
}Campos de la respuesta
| Nombre | Tipo | Descripción |
|---|---|---|
data | Account | |
data.uid | string | Stable account identifier. |
data.email | string | null | |
data.plan | free | pro | |
data.capabilities | object | Acquisition and monetisation are independent and can both be active. |
data.capabilities.acquisition | CapabilityState | |
data.capabilities.monetisation | CapabilityState | |
data.networks | ConnectedNetwork[] | Connected affiliate networks. Never credentials. |
data.networks[].network | string | Network identifier, e.g. "awin", "impact". |
data.networks[].status | never | ok | partial | auth_failed | error | Outcome of the last synchronisation. |
data.networks[].connectedAt | string | null | |
data.networks[].lastSyncAt | string | null | |
data.networks[].accounts | integer | How many accounts this connection exposes. |
data.networks[].programs | integer | |
data.networks[].transactions | integer | |
data.key | object | The key that authenticated this call. Never the key itself. |
data.key.prefix | string | |
data.key.label | string | |
data.key.scopes | read[] | |
data.rateLimit | object | |
data.rateLimit.limit | integer | Requests allowed per window, for this plan. |
data.rateLimit.windowSeconds | integer |
Errores posibles
401403429
GET /v1/commissions
Sus comisiones, las más recientes primero. Los importes no se convierten ni se suman entre divisas.
Commissions collected from the networks connected to the calling account, most recent first. Amounts are reported in the currency the network used and are never converted or summed across currencies.
Parámetros
| Nombre | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
network | consulta | string | no | Restrict to one network. |
status | consulta | pending | approved | declined | paid | unknown | no | Restrict to one normalised status. |
from | consulta | string (^\d{4}-\d{2}-\d{2}$) | no | Inclusive lower bound on the transaction date, YYYY-MM-DD (UTC). |
to | consulta | string (^\d{4}-\d{2}-\d{2}$) | no | Inclusive upper bound on the transaction date, YYYY-MM-DD (UTC). |
limit | consulta | integer (1–100) · por defecto 25 | no | Items per page, 1-100. |
cursor | consulta | string | no | Opaque cursor returned as `page.nextCursor` by the previous call. |
Petición
curl -s 'https://getaff.org/api/v1/commissions?from=2026-07-01&status=approved&limit=2' \
-H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'Respuesta
{
"data": [
{
"id": "uid123_awin_884120933",
"network": "awin",
"externalId": "884120933",
"programName": "NorthStack",
"programExternalId": "20114",
"status": "approved",
"rawStatus": "confirmed",
"saleAmount": 240,
"commissionAmount": 60,
"currency": "EUR",
"clickedAt": "2026-06-30T18:02:11.000Z",
"transactedAt": "2026-07-01T10:15:04.000Z",
"subId": "newsletter-42"
}
],
"page": {
"limit": 2,
"hasMore": false,
"nextCursor": null
}
}Campos de la respuesta
| Nombre | Tipo | Descripción |
|---|---|---|
data | Commission[] | |
data[].id | string | Stable identifier within GetAff. |
data[].network | string | |
data[].externalId | string | Identifier used by the network itself. |
data[].programName | string | null | |
data[].programExternalId | string | null | |
data[].status | pending | approved | declined | paid | unknown | Normalised status. `rawStatus` keeps the network wording. |
data[].rawStatus | string | null | |
data[].saleAmount | number | null | Order value, when the network reports it. |
data[].commissionAmount | number | Amount owed to the publisher. |
data[].currency | string | ISO 4217. Never converted: amounts are never summed across currencies. |
data[].clickedAt | string | null | |
data[].transactedAt | string | ISO 8601 timestamp of the transaction. |
data[].subId | string | null | Publisher sub-identifier, when one was passed. |
page | PageInfo | |
page.limit | integer | Number of items requested for this page. |
page.hasMore | boolean | True when a further page exists. |
page.nextCursor | string | null | Opaque cursor. Pass it back as `cursor` to fetch the next page. Do not parse it. |
Errores posibles
400401429503