GetAff
AnmeldenProgramm eintragen
API-Dokumentation

Referenz

Die folgenden Tabellen entstehen aus denselben Schemata, die die Routen tatsächlich erzwingen. Sie können nichts anderes beschreiben als das gegenwärtige Verhalten.

GET /v1/programs

Das öffentliche Verzeichnis, absteigend nach Attraktivitätsscore. Für jeden Schlüssel dieselben Zeilen.

Returns published affiliate programmes, most attractive first. The directory is public data: every key sees the same rows. Results are cursor-paginated.

Parameter

Parameter/v1/programs
NameOrtTypPflichtBeschreibung
verticalQuerysaas | ecommerce | infoproduit | finance | sante | voyage | mode | maison | jeux | services | immobilier | autreneinRestrict to one industry.
modelQuerycps | cpa | cpl | recurring | hybridneinRestrict to one payout model.
marketQuerystringneinISO 3166-1 alpha-2 country code, case-insensitive.
recurringQuerytrue | falseneinKeep only programs whose commission repeats, or only those that do not.
minScoreQueryinteger (0–100)neinMinimum attractiveness score.
limitQueryinteger (1–100) · Standard 25neinItems per page, 1-100.
cursorQuerystringneinOpaque cursor returned as `page.nextCursor` by the previous call.

Anfrage

curl
curl -s 'https://getaff.org/api/v1/programs?vertical=saas&minScore=60&limit=2' \
  -H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Antwort

200 OK
{
  "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"
  }
}

Felder der Antwort

Felder der Antwort/v1/programs
NameTypBeschreibung
dataProgramme[]
data[].slugstringStable identifier used in the directory URL.
data[].namestring
data[].hoststringAdvertiser domain, without scheme.
data[].sitestringAdvertiser website.
data[].pitchstringOne-paragraph description written by the advertiser.
data[].verticalsaas | ecommerce | infoproduit | finance | sante | voyage | mode | maison | jeux | services | immobilier | autre
data[].modelcps | cpa | cpl | recurring | hybridPayout model.
data[].commissionstringCommission as advertised, free text (e.g. "30%", "50 EUR").
data[].recurringbooleanTrue when the commission repeats on renewals.
data[].cookieDaysintegerAttribution window, in days.
data[].payoutweekly | biweekly | monthly | net30 | net60Payment cadence.
data[].minPayoutnumberMinimum balance before payment, in the advertiser currency.
data[].marketsstring[]ISO 3166-1 alpha-2 country codes.
data[].platformstringAffiliate platform hosting the program. Empty when in-house.
data[].signupUrlstringWhere an affiliate applies.
data[].scoreintegerGetAff attractiveness score, 0-100. See /docs for how it is computed.
data[].imagestringIllustration URL. Empty when none is available.
data[].createdAtstringISO 8601 timestamp of publication.
pagePageInfo
page.limitintegerNumber of items requested for this page.
page.hasMorebooleanTrue when a further page exists.
page.nextCursorstring | nullOpaque cursor. Pass it back as `cursor` to fetch the next page. Do not parse it.

Mögliche Fehler

400401429503

GET /v1/programs/{slug}

Ein veröffentlichtes Programm, über seine URL-Kennung.

Returns a single published programme by slug. Unpublished and rejected submissions are not reachable through this endpoint.

Parameter

Parameter/v1/programs/{slug}
NameOrtTypPflichtBeschreibung
slugPfadstringjaProgram slug, as returned by GET /v1/programs.

Anfrage

curl
curl -s 'https://getaff.org/api/v1/programs/northstack-northstack' \
  -H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Antwort

200 OK
{
  "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"
  }
}

Felder der Antwort

Felder der Antwort/v1/programs/{slug}
NameTypBeschreibung
dataProgramme
data.slugstringStable identifier used in the directory URL.
data.namestring
data.hoststringAdvertiser domain, without scheme.
data.sitestringAdvertiser website.
data.pitchstringOne-paragraph description written by the advertiser.
data.verticalsaas | ecommerce | infoproduit | finance | sante | voyage | mode | maison | jeux | services | immobilier | autre
data.modelcps | cpa | cpl | recurring | hybridPayout model.
data.commissionstringCommission as advertised, free text (e.g. "30%", "50 EUR").
data.recurringbooleanTrue when the commission repeats on renewals.
data.cookieDaysintegerAttribution window, in days.
data.payoutweekly | biweekly | monthly | net30 | net60Payment cadence.
data.minPayoutnumberMinimum balance before payment, in the advertiser currency.
data.marketsstring[]ISO 3166-1 alpha-2 country codes.
data.platformstringAffiliate platform hosting the program. Empty when in-house.
data.signupUrlstringWhere an affiliate applies.
data.scoreintegerGetAff attractiveness score, 0-100. See /docs for how it is computed.
data.imagestringIllustration URL. Empty when none is available.
data.createdAtstringISO 8601 timestamp of publication.

Mögliche Fehler

401404429

GET /v1/me

Das aufrufende Konto: Tarif, Fähigkeiten, verbundene Netzwerke und Obergrenze. Netzwerk-Zugangsdaten werden niemals zurückgegeben.

Plan, capabilities, connected networks and the rate limit that applies to this key. Network credentials are never exposed by any endpoint, under any parameter.

Parameter

Keine Parameter.

Anfrage

curl
curl -s 'https://getaff.org/api/v1/me' \
  -H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Antwort

200 OK
{
  "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
    }
  }
}

Felder der Antwort

Felder der Antwort/v1/me
NameTypBeschreibung
dataAccount
data.uidstringStable account identifier.
data.emailstring | null
data.planfree | pro
data.capabilitiesobjectAcquisition and monetisation are independent and can both be active.
data.capabilities.acquisitionCapabilityState
data.capabilities.monetisationCapabilityState
data.networksConnectedNetwork[]Connected affiliate networks. Never credentials.
data.networks[].networkstringNetwork identifier, e.g. "awin", "impact".
data.networks[].statusnever | ok | partial | auth_failed | errorOutcome of the last synchronisation.
data.networks[].connectedAtstring | null
data.networks[].lastSyncAtstring | null
data.networks[].accountsintegerHow many accounts this connection exposes.
data.networks[].programsinteger
data.networks[].transactionsinteger
data.keyobjectThe key that authenticated this call. Never the key itself.
data.key.prefixstring
data.key.labelstring
data.key.scopesread[]
data.rateLimitobject
data.rateLimit.limitintegerRequests allowed per window, for this plan.
data.rateLimit.windowSecondsinteger

Mögliche Fehler

401403429

GET /v1/commissions

Ihre Provisionen, die jüngsten zuerst. Beträge werden weder umgerechnet noch über Währungen hinweg summiert.

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.

Parameter

Parameter/v1/commissions
NameOrtTypPflichtBeschreibung
networkQuerystringneinRestrict to one network.
statusQuerypending | approved | declined | paid | unknownneinRestrict to one normalised status.
fromQuerystring (^\d{4}-\d{2}-\d{2}$)neinInclusive lower bound on the transaction date, YYYY-MM-DD (UTC).
toQuerystring (^\d{4}-\d{2}-\d{2}$)neinInclusive upper bound on the transaction date, YYYY-MM-DD (UTC).
limitQueryinteger (1–100) · Standard 25neinItems per page, 1-100.
cursorQuerystringneinOpaque cursor returned as `page.nextCursor` by the previous call.

Anfrage

curl
curl -s 'https://getaff.org/api/v1/commissions?from=2026-07-01&status=approved&limit=2' \
  -H 'Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Antwort

200 OK
{
  "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
  }
}

Felder der Antwort

Felder der Antwort/v1/commissions
NameTypBeschreibung
dataCommission[]
data[].idstringStable identifier within GetAff.
data[].networkstring
data[].externalIdstringIdentifier used by the network itself.
data[].programNamestring | null
data[].programExternalIdstring | null
data[].statuspending | approved | declined | paid | unknownNormalised status. `rawStatus` keeps the network wording.
data[].rawStatusstring | null
data[].saleAmountnumber | nullOrder value, when the network reports it.
data[].commissionAmountnumberAmount owed to the publisher.
data[].currencystringISO 4217. Never converted: amounts are never summed across currencies.
data[].clickedAtstring | null
data[].transactedAtstringISO 8601 timestamp of the transaction.
data[].subIdstring | nullPublisher sub-identifier, when one was passed.
pagePageInfo
page.limitintegerNumber of items requested for this page.
page.hasMorebooleanTrue when a further page exists.
page.nextCursorstring | nullOpaque cursor. Pass it back as `cursor` to fetch the next page. Do not parse it.

Mögliche Fehler

400401429503

Fehler

Alle Fehler haben dieselbe Form. Verzweigen Sie Ihre Logik über code, niemals über message.

Fehler
OpenAPI-Spezifikation öffnen
API — Referenz der Endpunkte — GetAff