API reference

Revenues

Revenues are your ad-network accounts — Linkvertise, Work.ink, LootLabs and others — used as checkpoints on the key page.

On this page

A revenue stores the credentials for one ad network. Attach it to a provider checkpoint and players earn you money on their way to a key. Revenue endpoints need revenues:read / revenues:write.

List revenue types

GET/api/revenues/typesrevenues:read

Supported ad networks and the config fields each one needs. Call it before Create a revenue to build the right config.

Response fieldsinside data
  • typestring

    Revenue type identifier

  • supportedboolean

    Whether this revenue type is currently supported

  • displayNamestring

    Human-readable display name

curl "https://api.santiauth.com/api/revenues/types" \
  -H "x-api-key: $SANTIAUTH_API_KEY"
200 OK
{
  "success": true,
  "data": [
    {
      "type": "linkvertise-dynamic",
      "supported": true,
      "displayName": "Linkvertise Dynamic"
    }
  ]
}

List revenues

GET/api/revenuesrevenues:read

Revenues of a service, paginated with limit and offset.

Query parameters

  • service_idintegerrequired> 0

    Service the resource belongs to

  • limitnumber1–100

    Number of revenues per page (1-100)

    Default 20
  • offsetnumber | null≥ 0

    Number of revenues to skip for pagination

    Default 0
Response fieldsinside data
  • serviceIdinteger> 0

    Service the revenue belongs to

  • configMaskedboolean

    True when config values are hidden because the caller is below admin

  • idinteger

    Revenue unique identifier

  • namestring

    Revenue name for identification

  • typestring

    Revenue type

  • configmap

    Revenue-specific configuration object

  • isActiveboolean

    Whether the revenue is active

  • createdAtdatetime

    Creation timestamp

  • updatedAtdatetime

    Last update timestamp

curl "https://api.santiauth.com/api/revenues?service_id=1" \
  -H "x-api-key: $SANTIAUTH_API_KEY"
200 OK
{
  "success": true,
  "data": [
    {
      "serviceId": 0,
      "configMasked": false,
      "id": 4,
      "name": "My Linkvertise Revenue",
      "type": "linkvertise-dynamic",
      "config": {
        "api_key": "your-api-key",
        "user_id": "12345"
      },
      "isActive": true,
      "createdAt": "2026-04-30T15:37:13.595Z",
      "updatedAt": "2026-04-30T15:37:13.595Z"
    }
  ]
}

Get a revenue

GET/api/revenues/{id}revenues:read

Returns the full stored configuration for a single revenue, including its type, status, and other metadata needed to manage checkpoint behavior.

Path parameters

  • idintegerrequired> 0

    ID of the revenue

Response fieldsinside data
  • serviceIdinteger> 0

    Service the revenue belongs to

  • configMaskedboolean

    True when config values are hidden because the caller is below admin

  • idinteger

    Revenue unique identifier

  • namestring

    Revenue name for identification

  • typestring

    Revenue type

  • configmap

    Revenue-specific configuration object

  • isActiveboolean

    Whether the revenue is active

  • createdAtdatetime

    Creation timestamp

  • updatedAtdatetime

    Last update timestamp

curl "https://api.santiauth.com/api/revenues/3f2b8c1e-4d5a-4e6f-9a7b-8c9d0e1f2a3b" \
  -H "x-api-key: $SANTIAUTH_API_KEY"
200 OK
{
  "success": true,
  "data": {
    "serviceId": 0,
    "configMasked": false,
    "id": 4,
    "name": "My Linkvertise Revenue",
    "type": "linkvertise-dynamic",
    "config": {
      "api_key": "your-api-key",
      "user_id": "12345"
    },
    "isActive": true,
    "createdAt": "2026-04-30T15:37:13.595Z",
    "updatedAt": "2026-04-30T15:37:13.595Z"
  }
}

Create a revenue

POST/api/revenuesrevenues:write

config depends on type — see List revenue types. A config that doesn't fit the type fails with 400 and lists the bad fields in error.details.

Bodyapplication/json

  • service_idintegerrequired> 0

    Service the resource belongs to

  • namestringrequired1–64 chars

    Revenue name for identification

  • typestringrequired

    Revenue type. Options: linkvertise-dynamic, linkvertise-token, work.ink, lootlabs, boostellar, shrtfly, cutyio, shortjambo, shrinkearn, linkify, flyinc, linkunlocker, santilink

    One oflinkvertise-dynamiclinkvertise-tokenwork.inklootlabsboostellarshrtflycutyioshortjamboshrinkearnlinkifyflyinclinkunlockersantilink
  • configmaprequired

    Revenue-specific configuration object. Structure varies by revenue type

Response fieldsinside data
  • serviceIdinteger> 0

    Service the revenue belongs to

  • configMaskedboolean

    True when config values are hidden because the caller is below admin

  • idinteger

    Revenue unique identifier

  • namestring

    Revenue name for identification

  • typestring

    Revenue type

  • configmap

    Revenue-specific configuration object

  • isActiveboolean

    Whether the revenue is active

  • createdAtdatetime

    Creation timestamp

  • updatedAtdatetime

    Last update timestamp

curl -X POST "https://api.santiauth.com/api/revenues" \
  -H "x-api-key: $SANTIAUTH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "service_id": 1,
  "name": "Main Linkvertise",
  "type": "linkvertise-dynamic",
  "config": {
    "publisherId": "123456",
    "useAntiBypass": false
  }
}'
201 Created
{
  "success": true,
  "data": {
    "serviceId": 0,
    "configMasked": false,
    "id": 4,
    "name": "My Linkvertise Revenue",
    "type": "linkvertise-dynamic",
    "config": {
      "api_key": "your-api-key",
      "user_id": "12345"
    },
    "isActive": true,
    "createdAt": "2026-04-30T15:37:13.595Z",
    "updatedAt": "2026-04-30T15:37:13.595Z"
  }
}

Update a revenue

PATCH/api/revenues/{id}revenues:write

Send only the fields you want to change. Set isActive to false to pause it.

Path parameters

  • idintegerrequired> 0

    ID of the revenue

Bodyapplication/json

  • namestring1–64 chars

    Revenue name for identification

  • configmap

    Revenue-specific configuration object. Structure varies by revenue type

  • isActiveboolean

    Whether the revenue is active

Response fieldsinside data
  • serviceIdinteger> 0

    Service the revenue belongs to

  • configMaskedboolean

    True when config values are hidden because the caller is below admin

  • idinteger

    Revenue unique identifier

  • namestring

    Revenue name for identification

  • typestring

    Revenue type

  • configmap

    Revenue-specific configuration object

  • isActiveboolean

    Whether the revenue is active

  • createdAtdatetime

    Creation timestamp

  • updatedAtdatetime

    Last update timestamp

curl -X PATCH "https://api.santiauth.com/api/revenues/3f2b8c1e-4d5a-4e6f-9a7b-8c9d0e1f2a3b" \
  -H "x-api-key: $SANTIAUTH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "isActive": false
}'
200 OK
{
  "success": true,
  "data": {
    "serviceId": 0,
    "configMasked": false,
    "id": 4,
    "name": "My Linkvertise Revenue",
    "type": "linkvertise-dynamic",
    "config": {
      "api_key": "your-api-key",
      "user_id": "12345"
    },
    "isActive": true,
    "createdAt": "2026-04-30T15:37:13.595Z",
    "updatedAt": "2026-04-30T15:37:13.595Z"
  }
}

Delete a revenue

DELETE/api/revenues/{id}revenues:write

Deleting a revenue also removes every provider checkpoint that uses it — those flows lose that step. Set isActive to false instead to pause it. Keys already issued stay valid.

Path parameters

  • idintegerrequired> 0

    ID of the revenue

curl -X DELETE "https://api.santiauth.com/api/revenues/3f2b8c1e-4d5a-4e6f-9a7b-8c9d0e1f2a3b" \
  -H "x-api-key: $SANTIAUTH_API_KEY"
204 No Content
Empty body.

Get revenue stats

GET/api/revenues/{id}/statsrevenues:read

Usage of this revenue over the last 7, 14, 30 or 90 days (capped by the owner's plan).

Path parameters

  • idintegerrequired> 0

    ID of the revenue

Query parameters

  • rangenumberrequired

    Time range in days for statistics

curl "https://api.santiauth.com/api/revenues/3f2b8c1e-4d5a-4e6f-9a7b-8c9d0e1f2a3b/stats?range=30" \
  -H "x-api-key: $SANTIAUTH_API_KEY"
200 OK
{
  "success": true,
  "data": null
}