InferSports Platform API
The platform API from InferSports — 13 operation(s) for platform.
The platform API from InferSports — 13 operation(s) for platform.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/infersports-dev:infersports-dev-platform-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: InferSports Platform API
summary: Sharp Asian odds, built for code.
description: 'Read-only REST API for live Asian-bookmaker + Pinnacle odds (football & basketball; 1x2 / Asian handicap / totals; full-time & half-time).
**Determinism contract** (see `/llms.txt`): `/v1` is frozen (breaking changes ship under `/v2`); Sqids ids are stable across calls and restarts; response field sets are fixed (optional values are sent as `null`, never omitted — the sole exception is `/convert/odds`, which projects to the requested `to` formats). `convert/odds`, `convert/handicap` and `explain_handicap` are pure functions (same input → same output) and safe to cache indefinitely; snapshot reads keep a fixed shape but live values. No historical data.'
version: 0.1.0
tags:
- name: Platform
paths:
/platform/signup:
post:
tags:
- Platform
summary: Signup
operationId: signup_platform_signup_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SignupRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Signup Platform Signup Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/verify:
post:
tags:
- Platform
summary: Verify
operationId: verify_platform_verify_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Verify Platform Verify Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/resend-verification:
post:
tags:
- Platform
summary: Resend Verification
description: 'Resend the verification email for an unverified account.
Always returns the SAME 200 body regardless of whether the address exists or is already
verified — so it can''t be used to probe which emails are registered. Defended in depth: a
per-IP hourly limit (limit_resend), a per-account cooldown (settings.verify_resend_cooldown_s),
and the global email backstop.'
operationId: resend_verification_platform_resend_verification_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ResendRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Resend Verification Platform Resend Verification Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/login:
post:
tags:
- Platform
summary: Login
operationId: login_platform_login_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Login Platform Login Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/forgot-password:
post:
tags:
- Platform
summary: Forgot Password
description: 'Begin a password reset: email a reset link for a registered address.
Always returns the SAME 200 body whether or not the address exists — it can''t be used to probe
which emails are registered. Defended in depth like resend-verification: a per-IP hourly limit
(limit_forgot), a per-account cooldown (settings.reset_resend_cooldown_s), and the global email
backstop. The reset token is stored hashed; only the email carries the raw token.'
operationId: forgot_password_platform_forgot_password_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ForgotPasswordRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Forgot Password Platform Forgot Password Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/reset-password:
post:
tags:
- Platform
summary: Reset Password
operationId: reset_password_platform_reset_password_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ResetPasswordRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Reset Password Platform Reset Password Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/logout:
post:
tags:
- Platform
summary: Logout
operationId: logout_platform_logout_post
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Logout Platform Logout Post
/platform/me:
get:
tags:
- Platform
summary: Me
operationId: me_platform_me_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Me Platform Me Get
/platform/account/plan:
post:
tags:
- Platform
summary: Set Plan
description: 'Change the account''s plan.
DEV STUB: while ``platform_dev_mode`` is on this sets the plan with NO payment, so the
upgrade-then-mint-a-higher-tier-key flow is testable end to end. In production this endpoint
is disabled — it will be replaced by a real billing flow (Stripe checkout + webhook), per
docs/db-selection.md / the Phase 3 roadmap.'
operationId: set_plan_platform_account_plan_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetPlanRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Set Plan Platform Account Plan Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/keys:
get:
tags:
- Platform
summary: List Keys
operationId: list_keys_platform_keys_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response List Keys Platform Keys Get
post:
tags:
- Platform
summary: Create Key
operationId: create_key_platform_keys_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateKeyRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Create Key Platform Keys Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/keys/{key_id}/rotate:
post:
tags:
- Platform
summary: Rotate Key
operationId: rotate_key_platform_keys__key_id__rotate_post
parameters:
- name: key_id
in: path
required: true
schema:
type: string
title: Key Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Rotate Key Platform Keys Key Id Rotate Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/keys/{key_id}:
delete:
tags:
- Platform
summary: Revoke Key
operationId: revoke_key_platform_keys__key_id__delete
parameters:
- name: key_id
in: path
required: true
schema:
type: string
title: Key Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Revoke Key Platform Keys Key Id Delete
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/platform/usage:
get:
tags:
- Platform
summary: Usage
operationId: usage_platform_usage_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Usage Platform Usage Get
components:
schemas:
ForgotPasswordRequest:
properties:
email:
type: string
title: Email
type: object
required:
- email
title: ForgotPasswordRequest
ResetPasswordRequest:
properties:
token:
type: string
title: Token
password:
type: string
title: Password
type: object
required:
- token
- password
title: ResetPasswordRequest
ResendRequest:
properties:
email:
type: string
title: Email
type: object
required:
- email
title: ResendRequest
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
CreateKeyRequest:
properties:
label:
type: string
title: Label
default: ''
tier:
type: string
title: Tier
default: free
type: object
title: CreateKeyRequest
VerifyRequest:
properties:
token:
type: string
title: Token
type: object
required:
- token
title: VerifyRequest
LoginRequest:
properties:
email:
type: string
title: Email
password:
type: string
title: Password
type: object
required:
- email
- password
title: LoginRequest
SetPlanRequest:
properties:
plan:
type: string
title: Plan
type: object
required:
- plan
title: SetPlanRequest
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
SignupRequest:
properties:
email:
type: string
title: Email
password:
type: string
title: Password
source:
anyOf:
- type: string
- type: 'null'
title: Source
type: object
required:
- email
- password
title: SignupRequest