Developers

Elite Tuning Data API

A versioned JSON API that returns Elite Remaps's final, corrected canonical tuning data — the same figures and simulated dyno curves that power the Elite Remaps website and widgets. Access is credentialled and issued by Elite Remaps; it is not publicly anonymous.

Current version: v1

Overview

The API exposes Elite Remaps's canonical vehicle catalogue and tuning results. You walk the vehicle hierarchy (types → manufacturers → models → generations → engines), then request the tuning result and (optionally) the simulated dyno curve for a selected engine.

Every node is addressed by an opaque, stable Elite ID. Treat these as meaningless strings: fetch a level, take the id of the item you want, and pass it to the next level. Elite IDs are stable and safe to cache.

All responses are JSON with a consistent envelope: { "ok": true, "apiVersion": "v1", "data": { ... } } on success, or { "ok": false, "apiVersion": "v1", "error": { "code", "message" } } on failure.

Authentication

Each request must include a credential in the Authorization header as a bearer token of the form <keyId>.<secret>. Your key id (ek_…) and secret (es_…) are issued by Elite Remaps. The secret is shown once at creation; only a secure hash is stored, so if it is lost you rotate to generate a new one.

curl "https://api.eliteremaps.com/v1/vehicle-types" \
  -H "Authorization: Bearer ek_ExampleKeyId000000.es_ExampleSecretDoNotUse00000000000000000"

Keep the secret server-side. Never embed it in a browser, mobile app or public repository. The public widget/iframe keys are NOT API credentials and cannot be used here.

Base URL & versioning

The production base URL will be https://api.eliteremaps.com/v1. During onboarding Elite Remaps will provide the current staging base URL; the paths and response shapes are identical. All endpoints are versioned under /v1/.

Within v1 we only make additive, backward-compatible changes (new fields may be added). Any breaking change ships as a new version (/v2/) so your integration keeps working.

Scopes

Credentials carry explicit scopes. A request needs the scope its endpoint requires:

  • vehicle:read — the vehicle hierarchy endpoints
  • tuning:read — the tuning result endpoint
  • dyno:read — the dyno data endpoint
  • options:read — includes the supported tuning options list in the tuning result

Administrative, billing, customer, dealer-private and override-management functions are never exposed through data credentials.

Vehicle hierarchy

Walk the hierarchy top-down. Each response returns items with a stable Elite id and a display name.

GET /v1/vehicle-types
GET /v1/manufacturers?vehicleType={id}
GET /v1/models?manufacturer={id}
GET /v1/generations?model={id}
GET /v1/engines?generation={id}

Example response for /v1/vehicle-types:

{
  "ok": true,
  "apiVersion": "v1",
  "data": {
    "vehicleTypes": [
      {
        "id": "vt_eyJ2IjoxLCJuIjoiQ2FycyJ9…",
        "name": "Cars"
      },
      {
        "id": "vt_eyJ2IjoyLCJuIjoiTW90byJ9…",
        "name": "Moto/Quad/Scooter"
      }
    ]
  }
}

Tuning result

Request the canonical result for an engine Elite ID. Figures are in bhp / Nm (see units). Optional fields are null when genuinely unknown — never fabricated. Stage 2 appears only when it is genuinely available.

GET /v1/tuning?engine=en_eyJ2IjoxLCJiIjoxMCwibSI6MTk5LCJ5IjoyMDAsInAiOjIwMSwibiI6IkNhcnMifQ
{
  "ok": true,
  "apiVersion": "v1",
  "data": {
    "engineId": "en_eyJ2IjoxLCJiIjoxMCwibSI6MTk5LCJ5IjoyMDAsInAiOjIwMSwibiI6IkNhcnMifQ",
    "engine": {
      "name": "B7 Bi-Turbo",
      "code": null,
      "fuel": "Petrol",
      "gearbox": null,
      "stockPower": 507,
      "stockTorque": 700,
      "flag": null
    },
    "stages": [
      {
        "stage": "stage1",
        "label": "Stage 1",
        "power": {
          "stock": 507,
          "tuned": 600,
          "gain": 93,
          "gainPercent": 18.3
        },
        "torque": {
          "stock": 700,
          "tuned": 800,
          "gain": 100,
          "gainPercent": 14.3
        }
      }
    ],
    "options": [
      "Deactivation",
      "Pop & bang"
    ],
    "dyno": {
      "available": true
    },
    "units": {
      "power": "bhp",
      "torque": "Nm",
      "rpm": "rpm"
    },
    "simulatedDyno": true
  }
}

Dyno data

The dyno endpoint returns the same simulated curve data used to draw the Elite Remaps graph — Elite Remaps does not recalculate it independently. Each stage includes the RPM range, tick marks, the per-RPM power & torque series (stock and tuned) and the peak points.

For categories where the simulation does not apply (motorcycles, jet skis, marine), available is false and no curve is returned. This is simulated performance data for illustration — not a physical dyno test of an individual vehicle.

GET /v1/dyno?engine=en_eyJ2IjoxLCJiIjoxMCwibSI6MTk5LCJ5IjoyMDAsInAiOjIwMSwibiI6IkNhcnMifQ
{
  "ok": true,
  "apiVersion": "v1",
  "data": {
    "engineId": "en_eyJ2IjoxLCJiIjoxMCwibSI6MTk5LCJ5IjoyMDAsInAiOjIwMSwibiI6IkNhcnMifQ",
    "available": true,
    "simulated": true,
    "disclaimer": "Simulated performance data for illustration only. Not a physical dyno test of an individual vehicle.",
    "units": {
      "power": "bhp",
      "torque": "Nm",
      "rpm": "rpm"
    },
    "stages": [
      {
        "stage": "stage1",
        "label": "Stage 1",
        "rpmStart": 1300,
        "rpmLimit": 7200,
        "rpmTicks": [
          2000,
          3000,
          4000,
          5000,
          6000,
          7000
        ],
        "points": [
          {
            "rpm": 1300,
            "stockPower": 78,
            "tunedPower": 88,
            "stockTorque": 300,
            "tunedTorque": 320
          }
        ],
        "peaks": {
          "stockPower": {
            "rpm": 6270,
            "value": 507
          },
          "tunedPower": {
            "rpm": 6270,
            "value": 600
          },
          "stockTorque": {
            "rpm": 2900,
            "value": 700
          },
          "tunedTorque": {
            "rpm": 2900,
            "value": 800
          }
        }
      }
    ]
  }
}

Rate limits

Each credential has a per-minute and per-day request limit assigned by Elite Remaps. Exceeding either returns 429 rate_limited. Design your integration to cache hierarchy responses (they change rarely) and to back off on 429.

Errors

Errors use a stable machine-readable code and an appropriate HTTP status:

HTTPcodeMeaning
401invalid_credentialsMissing or invalid credential
401revoked_credentialsCredential has been revoked
403insufficient_scopeCredential lacks the required scope
403entitlement_inactiveAPI access not currently active
429rate_limitedRate limit exceeded
400invalid_idMalformed Elite ID
404not_foundUnknown endpoint / resource
503data_unavailableTuning data temporarily unavailable

Errors never include stack traces or internal details.

Optional / null field behaviour

Optional data (engine code, gearbox, displacement, ECU, Stage 2, etc.) is returned as null when not genuinely available for a vehicle. Elite Remaps never fabricates missing values. Consumers should treat null as "not published" and render accordingly. Units are always present and consistent.