Developer API

Structured Request API

Submit bet placement, odds check, training, and research requests as a stable JSON intent. SlipJet stores every request and every API call for user and admin audit trails.

Authentication

Create a token from the authenticated account API, then send it as a bearer token.

Authorization: Bearer sj_live_xxxxxx_SECRET

Create a token

POST https://slipjet.com/api/account/api-tokens
Authorization: Bearer YOUR_DESKTOP_LOGIN_JWT
Content-Type: application/json

{
  "name": "Zapier production",
  "scopes": ["requests:read", "requests:write"]
}

The full token is returned once. Store it immediately; after that only the prefix is visible.

Structure a request

POST https://slipjet.com/api/v1/requests/structure
Authorization: Bearer sj_live_xxxxxx_SECRET
Idempotency-Key: optional-client-id
Content-Type: application/json

{
  "clientRequestId": "crm-12345",
  "source": "zapier",
  "prompt": "$25 SGM on Lakers v Celtics at Sportsbet: Lakers win, LeBron 25+ points",
  "webhookUrl": "https://example.com/slipjet-webhook"
}

Response

{
  "request": {
    "id": 42,
    "status": "structured",
    "kind": "place_bet",
    "structured": {
      "version": "slipjet.intent.v1",
      "requestType": "place_bet",
      "sport": "basketball",
      "league": "NBA",
      "event": {
        "name": "Lakers v Celtics",
        "homeTeam": "Lakers",
        "awayTeam": "Celtics",
        "startsAt": null
      },
      "bookmaker": { "key": "sportsbet-au", "name": null },
      "betType": "sgm",
      "legs": [
        { "selection": "Lakers win", "market": "h2h", "team": null, "player": null, "line": null, "odds": null, "eventName": "Lakers v Celtics" },
        { "selection": "LeBron 25+ points", "market": "player_prop", "team": null, "player": null, "line": null, "odds": null, "eventName": "Lakers v Celtics" }
      ],
      "stake": { "amount": 25, "currency": "AUD" },
      "constraints": {
        "minOdds": null,
        "maxOdds": null,
        "acceptOddsChange": null,
        "maxStake": 25,
        "eachWay": false
      },
      "estimatedOdds": null,
      "confidence": 0.35,
      "parseSource": "heuristic",
      "warnings": ["Heuristic parser used; verify before execution."]
    }
  }
}

Supply JSON directly

External systems can skip prompt parsing and post the structured object directly. SlipJet will normalize and store it against the user.

{
  "clientRequestId": "partner-998",
  "request": {
    "requestType": "odds_check",
    "sport": "Basketball",
    "league": "NBA",
    "event": { "homeTeam": "Lakers", "awayTeam": "Celtics" },
    "bookmaker": { "key": "sportsbet-au" },
    "betType": "odds_check",
    "legs": [{ "selection": "Lakers", "market": "h2h" }]
  }
}

Audit endpoints

GET https://slipjet.com/api/v1/requests/:id
GET https://slipjet.com/api/account/api-calls?limit=100
GET https://slipjet.com/api/account/api-tokens
DELETE https://slipjet.com/api/account/api-tokens/:id

Every external API call is logged with user id, token id, route, status, duration, idempotency key, request id, IP, user agent, and a redacted request preview.