Galatea Bio · Authentication Profile
Galatea Bio Authentication
Authentication
Galatea Bio secures its APIs with apiKey and http-bearer across 1 declared security scheme, as derived from its OpenAPI definitions.
genomicsbioinformaticsancestryprecision-medicinepolygenic-risk-scoreclinical-laboratorygenetic-testingbiobanklife-scienceshealthsequencing
Methods: apiKey, http-bearer
Schemes: 1
OAuth flows:
API key in: header
Security Schemes
Bearer apiKey
· in: header (Authorization)
Source
Authentication Profile
generated: '2026-08-16'
method: searched
source: openapi/galatea-bio-octopod-openapi.yml
docs: https://docs.galatea.bio/#api-reference-auth-contents
note: >-
Derived from the published Octopod API Swagger 2.0 document, then upgraded from the GalateaBio
Ancestry API documentation and the first-party octopod-cli client. The spec declares a single
security definition (apiKey named "Authorization" in header) which the docs and client confirm
carries a JWT bearer token in the form "Authorization: Bearer <token>".
summary:
types:
- apiKey
- http-bearer
api_key_in:
- header
oauth2_flows: []
mfa: true
applied_globally: true
schemes:
- name: Bearer
type: apiKey
in: header
parameter: Authorization
format: 'JWT bearer token, sent as "Authorization: Bearer <access_token>"'
sources:
- openapi/galatea-bio-octopod-openapi.yml
applies_to: all operations (spec declares a global security requirement)
credential_modes:
- mode: organization API key
description: >-
A long-lived organization API key minted by an organization admin. Used directly as the bearer
token. The octopod-cli calls this api_mode=1.
issued_by: POST /organizations/{organization_id}/generate-api-key
operation_id: organizations_generate-api-key_create
docs: https://docs.galatea.bio/#recipe-authentication
- mode: username and password login
description: >-
Email + password exchanged for a short-lived access token, a refresh token, and a websocket
access token. The docs explicitly warn the fetched access token has a short lifetime. The
octopod-cli calls this api_mode=2.
issued_by: POST /users/auth
operation_id: users_auth_create
request_fields: [email, password]
response_fields: [access, refresh, websocket_access]
docs: https://docs.galatea.bio/#api-reference-auth-login
- mode: SFTP key-based
description: >-
Separate credential path for bulk file transfer. Organizations manage SFTP users and their SSH
public keys through the API; uploads then authenticate to the SFTP host with a private keyfile
rather than a bearer token.
issued_by: POST /organizations/{organization_id}/sftp_users/{sftp_user_id}/ssh_keys
operation_id: organizations_sftp_users_ssh_keys_create
docs: https://docs.galatea.bio/#recipe-upload-file-with-sftp-get-status
token_lifecycle:
- action: obtain
operation_id: users_auth_create
path: POST /users/auth
- action: multi-factor confirmation
operation_id: users_confirm_create
path: POST /users/confirm
note: Requires mfa_session_id plus a numeric code; MFA is part of the published login flow.
- action: request a new MFA code
operation_id: users_request-new-code_create
path: POST /users/request-new-code
- action: refresh
operation_id: users_refresh_create
path: POST /users/refresh
note: Takes both the refresh token and the expired access token.
- action: revoke
operation_id: users_logout_create
path: POST /users/logout
note: Requires the refresh token; returns HTTP 200 on successful logout.
password_management:
- operation_id: users_change-password_create
path: POST /users/change-password
- operation_id: users_forgot-password_create
path: POST /users/forgot-password
- operation_id: users_reset-password_create
path: POST /users/reset-password
- operation_id: users_activate_create
path: POST /users/activate
webhook_authentication:
scheme: HMAC-SHA256 signature, base64 encoded
header: X-Octopod-Signature
signed_payload: sender_host + raw request body
secret_issued_by: POST /organizations/{organization_id}/generate-webhooks-secret
docs: https://docs.galatea.bio/#recipe-handling-webhooks-deliveries
see: asyncapi/galatea-bio-octopod-webhooks.yml
environments:
- name: production
base_url: https://api.galatea.bio/api/v1
webhook_sender_host: api.galatea.bio
- name: sandbox
base_url: https://api.sandbox.galatea.bio/api/v1
webhook_sender_host: api.sandbox.galatea.bio
unauthenticated_response:
status: 401
body: '{"detail": "Authentication credentials were not provided."}'
observed: 'GET https://api.galatea.bio/api/v1/users/me on 2026-08-16'