Skip to main content
These are the endpoints we plan to open first. Each is grounded in a capability that already powers the RinkNotes app internally, so the paths, payloads, and responses shown are real shapes — not guesses. What’s not available yet is commercial access to them.
Preview — not commercially available yet. There’s no public gateway or API key today; access is provisioned with you as we roll out the API. Treat everything here as the shape to react to, not a live endpoint. The examples use the planned base URL https://api.wispera.ai/functions/v1/.
When the API opens, all calls will be POST and carry an org-scoped credential. Endpoints that touch a team also require the caller to be a member of that team with capture permission (otherwise 403).

Capture

Submit a note

POST /functions/v1/submit-note Sends a typed note. RinkNotes stores it as a capture event and kicks off classification into a player observation. Planned rate limit: 60 / hour.
team_id
string
required
The team the note belongs to.
text
string
required
The note text. Trimmed; truncated at 2000 characters.
session_id
string
The game or practice session this note was captured during, if any.
player_id
string
The player the note is about, if known.
game_elapsed_ms
number
Milliseconds elapsed on the game clock when the note was captured.
period_id
string
The period this note falls in, if any.
event_id
string
The id of the created capture event.
status
string
Always "transcribed" — the note is ready and classification has been triggered.
Response

Transcribe audio

POST /functions/v1/transcribe-audio Sends an audio clip as multipart/form-data with a single file field named audio. The audio is ephemeral — it’s transcribed and discarded, never stored. Planned rate limit: 60 / hour (per file / mic bucket). Returns 502 if the upstream transcription service fails. There are two modes, selected by headers.
Attaches the transcript to an existing capture event and triggers classification. The caller must be the user who captured that event, or the call returns 403.Headers
  • X-Capture-Event-Id — the capture event to attach the transcript to. Required.
  • X-Transcription-Sourcefile_upload or live_mic. Required.
Request
Response

Games

Finalize a game

POST /functions/v1/finalize-game Closes out a game session and derives its stats and game events from the notes captured during it. The session must belong to the given team and be a game session (not a practice), otherwise you’ll get 404 or 400.
team_id
string
required
session_id
string
required
The game session to finalize.
Request
finalized
object
session_id, plus stats and events booleans indicating whether each derivation ran.
Response
Derivation of stats and game events runs internally after you call this — you don’t call those steps directly.

Parsing helpers

These turn free text into a structured object using RinkNotes’ hockey model. They persist nothing — no side effects, nothing stored. Planned rate limit: 30 / hour. Every response includes a confidence between 0 and 1.

Parse a game

POST /functions/v1/parse-new-game
transcript
string
required
The free text describing the game.
today
string
Today’s date as YYYY-MM-DD, used to resolve relative dates (“this Saturday”).
Response
home_away is "home", "away", or null. starts_at is ISO-8601 or null.

Parse a practice

POST /functions/v1/parse-new-practice
transcript
string
required
today
string
Response

Parse a calendar event

POST /functions/v1/parse-new-event
transcript
string
required
today
string
Response
event_type is one of tournament, team_dinner, meeting, tryout, social, other, or null. All fields except confidence may be null.

Parse an in-game event

POST /functions/v1/parse-game-event
transcript
string
required
position_group
string
required
goalie or skater — selects which event vocabulary applies.
Response
zone is OZ / NZ / DZ / null; strength_state is EV / PP / PK / null; detail is an object of recognized fields (or null).

Data model

For reference, the client-safe shape of the objects the API works with. These are the fields you’d see on a capture and its derived outputs — not a full schema.
Reading these objects back out programmatically — client read/GET endpoints — is on the roadmap, not part of this first surface.