Cobra Helix
Cobra Helix · Dashboard API

API & Integrations

Show game performance, upcoming competitions and the events you have registered for.

Read-only dataJSON over HTTPSPersonal keys + public calls

Connect your account

  1. Sign in to your Cobra Helix account and open key management. Regular accounts can manage their own key.
  2. Generate a personal read-only key and copy it when shown. If a key is already active, use your saved copy or coordinate replacement before revoking it.
  3. Connect the key to your trusted dashboard. Send it in the Authorization: Bearer YOUR_KEY header from your server.

Keep keys encrypted on the server. Do not place them in URLs, public pages, browser code, source control or shared documents. Revoke a key on the source site to stop future API reads; data already cached by a dashboard may remain until its private cache expires.

Generate or manage my key →

Available calls

Append a route below to this base URL:

https://cobrahelix.com/wp-json/cobra-user/v1

Expand a call to see its parameters, request and response. Examples use fictional data and may omit fields; they are not your account data or a live quote.

GET/mePersonal key

My profile

Account identity and read-only scope.

Parameters · None

Example request

curl --request GET \
  --url 'https://cobrahelix.com/wp-json/cobra-user/v1/me' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_KEY'

Example response excerpt · HTTP 200

{
  "id": 42,
  "username": "example_user",
  "display_name": "Example User",
  "profile_url": "https://cobrahelix.com/profile/example_user",
  "scope": "dashboard:read",
  "updated_at": "2026-11-05T12:00:00Z"
}
GET/me/game-statsPersonal key

My game stats

Claims, per-game best score, rank and separately classified rewards.

Parameters · None

Example request

curl --request GET \
  --url 'https://cobrahelix.com/wp-json/cobra-user/v1/me/game-stats' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_KEY'

Example response excerpt · HTTP 200

{
  "summary": {
    "recorded_claims": 12,
    "games_with_claims": 1,
    "global_rank": 20,
    "confirmed_mlx": "5000",
    "pending_mlx": "100",
    "paid_competition_wins": 1
  },
  "games": [
    {
      "game": "Pong",
      "recorded_claims": 12,
      "best_recorded_score": 2000
    }
  ],
  "updated_at": "2026-11-05T12:00:00Z"
}
GET/schedulePublic · no key

Upcoming schedule

Published upcoming or in-progress competitions with UTC times and registration deadline.

Parameters · page: integer 1–10000; per_page: integer 1–50.

Example request

curl --request GET \
  --url 'https://cobrahelix.com/wp-json/cobra-user/v1/schedule?page=1&per_page=6' \
  --header 'Accept: application/json'

Example response excerpt · HTTP 200

{
  "items": [
    {
      "id": 123,
      "title": "Example competition",
      "url": "https://cobrahelix.com/competition/example/",
      "game": {
        "name": "Pong",
        "slug": "pong"
      },
      "starts_at": "2026-11-05T12:00:00Z",
      "ends_at": "2026-11-05T12:30:00Z",
      "timezone": "UTC",
      "status": "scheduled",
      "registration_closes_at": "2026-11-05T11:00:00Z",
      "registration_open": true
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 6,
    "total": 1,
    "total_pages": 1
  },
  "updated_at": "2026-11-05T12:00:00Z"
}
GET/me/registrationsPersonal key

My registrations

Only this account’s competition registrations.

Parameters · page: integer 1–10000; per_page: integer 1–50. scope: upcoming or all.

Example request

curl --request GET \
  --url 'https://cobrahelix.com/wp-json/cobra-user/v1/me/registrations?page=1&per_page=6&scope=upcoming' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_KEY'

Example response excerpt · HTTP 200

{
  "items": [
    {
      "event": {
        "id": 123,
        "title": "Example competition",
        "url": "https://cobrahelix.com/competition/example/",
        "game": {
          "name": "Pong",
          "slug": "pong"
        },
        "starts_at": "2026-11-05T12:00:00Z",
        "ends_at": "2026-11-05T12:30:00Z",
        "timezone": "UTC",
        "status": "scheduled",
        "registration_closes_at": "2026-11-05T11:00:00Z",
        "registration_open": true
      },
      "registration_status": "registered",
      "status_label": "Registered",
      "registered_at": "2026-11-04T12:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 6,
    "total": 1,
    "total_pages": 1
  },
  "updated_at": "2026-11-05T12:00:00Z"
}

Parameters and limits

page: integer 1–10000; per_page: integer 1–50. Schedule defaults to 10 items. Registrations default to scope=upcoming; scope=all includes past registrations. Personal keys have a soft limit of 120 requests per minute.

Amounts such as MLX and USD cents may be decimal strings. Preserve their precision instead of converting large values to floating-point numbers. Use the returned pagination totals. Times shown in examples are ISO 8601 UTC; display dates in the user’s timezone.

What the data means

Recorded claims are not every gameplay session. Scores are comparable within each game only. Confirmed and pending MLX remain separate. This API cannot play games, register for competitions or send payments.

Response handling

HTTPMeaning
200Successful read. An empty items array can be a valid result.
400Invalid or out-of-range parameters.
401Missing, invalid or revoked personal key.
429Too many requests. Wait before retrying.
503Data or a required source service is temporarily unavailable. Do not replace this with zero.

Use the HTTP status for error handling. Error bodies vary by route. Keep cached personal data private and short-lived; handle missing values and empty lists.

Optional PHP client

The API works with any language that can make HTTPS requests. A WordPress PHP reference client and README are also available as a convenience.

Download PHP client and README ↓