Neurable · Authentication Profile
Neurable Authentication
Authentication
Neurable secures its APIs with oauth2 and openIdConnect across 2 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode and clientCredentials flow(s).
neurotechnologybrain-computer-interfaceeegneurosciencewearablesbiosignalshardwareconsumer-electronicsresearch-toolscognitive-analyticshealth-dataoauthopenid-connect
Methods: oauth2, openIdConnect
Schemes: 2
OAuth flows: authorizationCode, clientCredentials
API key in:
Security Schemes
openIdConnect openIdConnect
oauth2 oauth2
· flows: authorizationCode, clientCredentials, refreshToken
Source
Authentication Profile
generated: '2026-08-04'
method: probed
source: https://pipe.neurable.com/.well-known/openid-configuration (HTTP 200) + https://pipe.neurable.com/.well-known/jwks.json (HTTP 200) + openapi/_original/neurable-pipe-openapi.json
docs: null
summary:
types:
- oauth2
- openIdConnect
oauth2_flows:
- authorizationCode
- clientCredentials
api_key_in: []
spec_declares_security_schemes: false
notes: >-
Neurable publishes no public authentication documentation. This profile was probed live: the
pipe service at pipe.neurable.com serves a complete OpenID Connect Discovery document and a
JWKS, and its own OpenAPI describes the /oauth/authorize, /oauth/token, /oidc/userinfo and
/.well-known/jwks.json operations. IMPORTANT GAP — none of the three published Neurable
OpenAPI documents declares a components.securitySchemes block, and no operation carries a
security requirement, even though the Analytics Service tags five of its six operations
"protected". The auth model therefore has to be inferred from the discovery document rather
than read off the contract.
schemes:
- name: openIdConnect
type: openIdConnect
openIdConnectUrl: https://pipe.neurable.com/.well-known/openid-configuration
issuer: https://pipe.neurable.com
description: >-
The pipe service is the Neurable identity provider. It advertises OIDC Discovery metadata
with an issuer of https://pipe.neurable.com, RS256-signed ID tokens, and the standard
iss/sub/aud/exp/iat/nonce/email claims. claims_parameter_supported is false.
endpoints:
authorization_endpoint: https://pipe.neurable.com/oauth/authorize
token_endpoint: https://pipe.neurable.com/oauth/token
userinfo_endpoint: https://pipe.neurable.com/oidc/userinfo
jwks_uri: https://pipe.neurable.com/.well-known/jwks.json
id_token_signing_alg_values_supported:
- RS256
subject_types_supported:
- public
claims_supported:
- iss
- sub
- aud
- exp
- iat
- nonce
- email
sources:
- well-known/neurable-pipe-openid-configuration.json
- name: oauth2
type: oauth2
description: >-
OAuth 2.0 authorization server co-located with the OIDC provider. The /oauth/authorize
operation makes code_challenge and code_challenge_method REQUIRED query parameters, so PKCE
is mandatory on the authorization-code flow, and it also requires an explicit `audience`
parameter (RFC 8707-style resource targeting). Public clients are supported —
token_endpoint_auth_methods_supported includes "none" alongside client_secret_post.
flows:
- flow: authorizationCode
authorization_endpoint: https://pipe.neurable.com/oauth/authorize
token_endpoint: https://pipe.neurable.com/oauth/token
pkce: S256
pkce_required: true
required_parameters:
- client_id
- redirect_uri
- response_type
- code_challenge
- code_challenge_method
- scope
- audience
scopes:
- demos:all:read
- demos:prime:read
- session:stream:create
- openid
- email
- flow: clientCredentials
token_endpoint: https://pipe.neurable.com/oauth/token
note: >-
Advertised in grant_types_supported. The token endpoint's request body schema
(Body_post_oauth_token_oauth_token_post) is served as
application/x-www-form-urlencoded.
- flow: refreshToken
token_endpoint: https://pipe.neurable.com/oauth/token
note: refresh_token appears in grant_types_supported.
response_types_supported:
- code
token_endpoint_auth_methods_supported:
- none
- client_secret_post
sources:
- well-known/neurable-pipe-openid-configuration.json
- openapi/neurable-pipe-service-openapi.yml
unauthenticated_surface:
- operation: create_headset_license_open_headset_license_post
method: POST
path: /open/headset/license
host: https://analytics-service.neurable.com
note: >-
Tagged "open" (as opposed to the "protected" tag on every other Analytics Service
operation), which is the only in-spec signal that it is reachable without a token. It
issues an HMAC-signed HeadsetLicense keyed to a device serial_number + firmware_uuid; the
documented error enum (SERIAL_NUMBER_UNAUTHORIZED, SERIAL_NUMBER_ALREADY_ISSUED) shows
authorization is enforced on the serial number rather than on a caller credential.
probed: not exercised — no request was sent to this endpoint.
cross_links:
scopes: scopes/neurable-scopes.yml
conventions: conventions/neurable-conventions.yml
conformance: conformance/neurable-conformance.yml
well_known: well-known/neurable-well-known.yml