TraktorAPI
Get API key

Meta and usage

What the API publishes about itself, and what an account has drawn from it.

The four routes on this page draw no units: two take no key, and the two that take one still count against the account's per-minute budget.

GET /v1/plans

https://api.traktor.fun

Every public plan and each limit it sets.

Credential
None

Limits

  • Requests, shared with GET /v1/meta/filters60 a minute, per IP

Errors

key_in_query, method_not_allowed, rate_limited, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/plans"
Response 200
{
  "data": {
    "plans": [
      {
        "id": "free",
        "name": "Free",
        "priceUsdPerMonth": 0,
        "requestsPerMinute": 30,
        "burst": 30,
        "unitsPerMonth": 20000,
        "streamUnitsPerMonth": 60000,
        "historyMinutes": 60,
        "wsConnections": 1,
        "wsSubscriptionsPerConnection": 2,
        "wsEventsPerSecond": 5,
        "wsEventBurst": 25,
        "wsInboundFramesPerSecond": 5,
        "wsAllowListMax": 10,
        "wsReplayWindowMs": 0,
        "wsFilterScoreMax": 10,
        "maxKeys": 2
      }
    ]
  },
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": null,
    "caveats": []
  }
}

Plans and limits renders its answer as a table, read live.

GET /v1/meta/filters

https://api.traktor.fun

The filter grammars, their units and costs, the tracked chain and app pairs, and retention.

Credential
None

Limits

  • Requests, shared with GET /v1/plans60 a minute, per IP

Errors

key_in_query, method_not_allowed, rate_limited, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/meta/filters"
Response 200 (excerpt)
{
  "data": {
    "grammarVersion": 1,
    "coverage": {
      "chains": [
        "bnb"
      ],
      "platforms": [
        "fomo"
      ],
      "pairs": [
        {
          "chain": "bnb",
          "platform": "fomo",
          "partial": false
        }
      ]
    },
    "retention": {
      "flowsHours": 24
    },
    "limits": {
      "tokensMax": 50,
      "walletsMax": 50,
      "cursorTtlHours": 24,
      "examineCapPerRequest": 10000
    },
    "nullRule": "a null metric satisfies no numeric predicate, floor or ceiling"
  },
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:02.000Z",
    "caveats": []
  }
}

The full body has more keys.

It publishes what a program needs to build a query, under these keys:

  • fields: each flow filter key, with its type, range and default.

  • money and nullRule: how an amount is read, and that a null satisfies no bound.

  • coverage: the tracked chains, platforms and pairs.

  • limits, cost and retention: the bounds a request meets, the stream's filter score under cost.ws, and how long trades are kept.

  • caveats and flags: the codes that qualify an answer and a row.

  • market: the market filter, with its units, bounds and provenance.

market.coverage.stockRegistrySources dates each issuer registry by the answering server's own fetch, so each server's answer has its own ETag: a 304 comes only from the server that answered, until it fetches the registries again.

GET /v1/stream/position

https://api.traktor.fun

The stream's newest position as a seq, and how many seconds the retained stream spans.

Credential
API key
REST units
0 units

Limits

  • Invalid keys30 a minute, per IP
  • Trades the stream retains200,000 entries by default, per server process

Errors

missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/stream/position" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": {
    "position": "3-1791028802120-0",
    "streamWindowSeconds": 2914
  },
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:04.210Z",
    "caveats": []
  }
}

position is null while the stream is empty, and streamWindowSeconds whenever it cannot be measured. position is a seq, as the stream's ack and events frames carry: streamWindowSeconds says how far back a resume can reach at most, before the plan's replay window bounds it.

GET /v1/usage

https://api.traktor.fun

The account's draw this period, across every key it holds.

Credential
API key
REST units
0 units

Limits

  • Invalid keys30 a minute, per IP

Errors

missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/usage" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": {
    "plan": "free",
    "period": {
      "start": "2026-09-15T00:00:00.000Z",
      "end": "2026-10-15T00:00:00.000Z",
      "resetsAt": "2026-10-15T00:00:00.000Z"
    },
    "rest": {
      "requests": 812,
      "units": 1644,
      "unitsIncluded": 20000,
      "unitsRemaining": 18356
    },
    "ws": {
      "connectionMinutes": 95,
      "deliveredEvents": 40211,
      "droppedEvents": 0
    },
    "openHour": {
      "partial": true
    }
  },
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:04.210Z",
    "caveats": []
  }
}

The answer is per account, not per key: plan is the plan's id, rest holds the requests made and the units drawn beside unitsIncluded and unitsRemaining, and ws the connectionMinutes and deliveredEvents of the trade stream and of the market stream under a key, whose views count as delivered events, and the trade stream's droppedEvents. The counts include the clock hour still running, so openHour.partial is always true. Stream units are not in it: your profile's API tab shows them.

    Meta and usage · Traktor API