---
title: "GET /api/v1/user/affiliate"
method: GET
path: "/api/v1/user/affiliate"
tags: ["User"]
---

# GET /api/v1/user/affiliate

`GET /api/v1/user/affiliate`

## Request

- Base URL: `https://api.ekiden.fi`
- URL: `https://api.ekiden.fi/api/v1/user/affiliate`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ekidenfi/apis/ekiden-gateway/docs/api/v1/user/affiliate/get.ts> (a function with typed inputs; its response is checked against the schema)

## Response `200`

Affiliate dashboard

- AffiliateDashboardResponse: `GET /user/affiliate` response (spec §7). Returned only for an affiliate; a non-affiliate wallet gets 404.
  - `downline` AffiliateDashboardDownline, required: Downline user counts at referral levels 1/2/3 below the affiliate (spec §7 `downline`).
    - `l1` integer, required
    - `l2` integer, required
    - `l3` integer, required
  - `lifetime_paid_usdt_micro` integer: Lifetime SETTLED commission — the sum of `amount_usdt_micro` over this affiliate's `paid` weeks, in integer micro-USDT (6dp). Summed at the database so it is exact regardless of the `weeks` page size. Integer micro (not the decimal string the sibling money fields use) so the client can total/compare it without parsing; `0` for an affiliate never paid.
  - `pending_usdt` string, required: Total computed-but-unpaid commission across all weeks, decimal USDT.
  - `rates_bps` AffiliateDashboardRates, required: Positional commission rates in bps (spec §7 `rates_bps`).
    - `l1` integer, required
    - `l2` integer, required
    - `l3` integer, required
  - `status` string, required: Lifecycle status: `active` or `suspended`.
  - `volume` AffiliateDashboardVolume: Lifetime downline trading volume at levels 1/2/3, as decimal USDC strings (6dp). Strings because the totals can exceed a JS safe integer.
    - `l1` string, required
    - `l2` string, required
    - `l3` string, required
  - `weeks` AffiliateDashboardWeek[], required: Weekly commission history, newest week first.
    - `amount_usdt` string, required: This week's commission for the affiliate, decimal USDT (e.g. `"412.51"`).
    - `breakdown` unknown, required
    - `paid_at_ms` integer, nullable: PAYOUT RECEIPT — when the week was marked `paid`, epoch millis (the dashboard's ms convention). `null` while still `computed`.
    - `status` string, required: Per-affiliate payout status: `computed` (pending) or `paid`.
    - `transfer_ref` string, nullable: PAYOUT RECEIPT — the settling transfer's reference (`tb:<id>` on the TigerBeetle rail). `null` while the week is still `computed`. Additive: an older client that ignores it is unaffected.
    - `week_start` string, required: RFC3339 week start (Monday 00:00 UTC).

## Other responses

- `404`: Not an affiliate

## Changes

- **2026-09-10** `fad9eecaba2e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/changes/api/v1/user/affiliate/get.md)

---

[API](https://skmtc.dev/ekidenfi/apis/ekiden-gateway.md) - [All operations](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/revisions/fad9eecaba2e?raw)
