Skip to main content
Base URL https://api.neuroencoder.com/v1. Auth Authorization: Bearer <key>. OpenAPI: /v1/openapi.json. Responses are deterministic and nothing is stored.

POST /v1/embeddings

One 768-d embedding per 30 s window. Multipart: file (EDF, BDF, FIF, SET, VHDR, or NPY [channels, samples]), optional metadata JSON with the fields below (sfreq and channel_names are required for NPY). JSON:
array | string
required
[channels, samples] list, or base64 little-endian float32 with shape.
number
required
Sampling rate in Hz.
string[]
10-20 labels, one per channel. Unmatched channels are dropped; missing regions zero-filled. Required unless the data already has the 8 regional channels.
number
default:"1.0"
Hop between 30 s windows. Use 30 for non-overlapping epochs.
boolean
default:"true"
1-100 Hz bandpass and 50/100 Hz notch before resampling to 250 Hz.
string
default:"float"
float or base64 (float32, 4x smaller).
string
default:"epi-300k"
Only epi-300k today.
Response:

GET /v1/models

Lists epi-300k with its dimensions (768), window (30 s) and sample rate (250 Hz).

Limits

120 requests per minute per key, 512 MB per upload. 429 responses carry Retry-After.

Python client

embeddings uses the hosted API when NEUROENCODER_API_KEY is set and local weights otherwise (NEUROENCODER_WEIGHTS or ~/.cache/neuroencoder/epi300k.pt). Errors raise AuthenticationError, RateLimitError or APIStatusError, each with .status, .code, .param and .fix. Connection errors and 429/502/503 are retried twice with backoff.