CIONIC · Authentication Profile

Cionic Authentication

Authentication

CIONIC secures its APIs with apiKey, http, and oauth2 across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).

CompanyHealthMedical DevicesWearablesNeurotechnologyResearchClinical ResearchBiomechanicsRehabilitationDigital Health
Methods: apiKey, http, oauth2 Schemes: 3 OAuth flows: authorizationCode API key in: header

Security Schemes

x-cionic-user apiKey
· in: header ()
OAuthBearer http
scheme: bearer
OAuth2 oauth2
· flows: authorizationCode

Source

Authentication Profile

cionic-authentication.yml Raw ↑
generated: '2026-08-09'
method: searched
source: https://github.com/cionicwear/cionic-data/blob/main/cionic/api.py
docs: https://github.com/cionicwear/cionic-data/blob/main/scripts/README.md
note: >-
  CIONIC publishes no OpenAPI, so no securityScheme could be derived. This profile is
  read from the first-party open-source client (cionic/api.py, MIT) and confirmed by
  anonymous probes of the live endpoints. Nothing here required credentials.
summary:
  types:
  - apiKey
  - http
  - oauth2
  api_key_in:
  - header
  oauth2_flows:
  - authorizationCode
schemes:
- name: x-cionic-user
  type: apiKey
  in: header
  parameter_name: x-cionic-user
  description: >-
    The platform access token sent on every request to the /a, /c and /w services.
    Researchers obtain it as token.json from the profile menu of the web portal at
    https://cionic.com/a ("Download Token"); the client reads the "token" key from
    that file.
  sources:
  - https://github.com/cionicwear/cionic-data/blob/main/cionic/api.py
  - https://github.com/cionicwear/cionic-data/blob/main/scripts/README.md
- name: OAuthBearer
  type: http
  scheme: bearer
  description: >-
    An OAuth access token supplied as Authorization: Bearer and exchanged at
    GET https://{domain}/oauth/user, whose response carries the platform token in
    the "atok" field. The client reads it from the CIONIC_ACCESS_TOKEN environment
    variable when no token file is given.
  token_exchange_endpoint: https://cionic.com/oauth/user
  environment_variable: CIONIC_ACCESS_TOKEN
  sources:
  - https://github.com/cionicwear/cionic-data/blob/main/cionic/api.py
- name: OAuth2
  type: oauth2
  flows:
  - flow: authorizationCode
    authorizationUrl: https://cionic.com/oauth/authorize
    tokenUrl: https://cionic.com/oauth/token
    scopes: {}
    note: >-
      No scope reference is published. GET /oauth/authorize 302s to the portal login
      at /a?redir=%2Foauth%2Fauthorize%3F; GET /oauth/token returns 405, so the token
      endpoint is POST-only.
login:
  style: email-magic-link
  url: https://cionic.com/a
  description: >-
    The researcher and clinician portal takes an email address and mails a sign-in
    link; the portal then exposes a downloadable token and, for mobile, a "Gateway"
    token authorisation flow through the CIONIC app.
authorization_model:
  scope: per-organization roles
  roles:
  - name: analyst
    id: 1
  - name: collector
    id: 2
  - name: admin
    id: 3
  grant_endpoint: POST /a/v{version}/{org}/accounts/{xid}/roles
  revoke_endpoint: DELETE /a/v{version}/{org}/accounts/{xid}/roles/{role_id}
  note: Role administration requires the org admin role.
x-evidence:
- url: https://cionic.com/a/v2.0/accounts/@me
  http_status: 401
  content_type: application/json
  body: '{"error":"Unauthorized"}'
  fetched: '2026-08-09'
- url: https://cionic.com/oauth/authorize
  http_status: 302
  location: /a?redir=%2Foauth%2Fauthorize%3F
  fetched: '2026-08-09'
- url: https://cionic.com/oauth/token
  http_status: 405
  note: GET rejected; token endpoint is POST-only
  fetched: '2026-08-09'
- url: https://raw.githubusercontent.com/cionicwear/cionic-data/main/cionic/api.py
  http_status: 200
  fetched: '2026-08-09'