Platform API
Inference, memory, usage and account management over one authenticated REST surface. Build Breachline into your own tooling and CI.
Security
Authentication
Authenticate with an API key or a JWT bearer token
Getting an API key
- 1Sign in to your Breachline console and open Settings
- 2Go to the API Keys section
- 3Create a key and select only the scopes it needs
- 4Copy the secret — it is shown once and never again
- 5Store it in your secret manager, never in source
Common scopes
llm:chatChat and responsesllm:embeddingsEmbeddings and rerankllm:realtimeRealtime voice and visionmemory:readRecall from memorymemory:writeWrite to memoryusage:readRead your usage and spendintegrations:useUse connected integrationsAuthentication headers
# Authenticate with an API key curl -X GET "https://api.breachline.io/api/v1/llm/v1/models" \ -H "X-API-Key: bl_live_xxxxxxxxxxxx" \ -H "Content-Type: application/json" # Or with a JWT bearer token curl -X GET "https://api.breachline.io/api/v1/auth/me" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \ -H "Content-Type: application/json"
Auth endpoints
/api/v1/auth/registerRegister a new user account
/api/v1/auth/loginAuthenticate and receive JWT tokens
/api/v1/auth/refreshExchange a refresh token for a new access token
/api/v1/auth/logoutRevoke the current session
/api/v1/auth/meGet the authenticated principal
/api/v1/auth/sessionsList active sessions
/api/v1/auth/sessions/{session_id}Revoke a specific session
/api/v1/auth/mfa/enrollBegin multi-factor enrolment
/api/v1/auth/mfa/statusGet multi-factor status
/api/v1/auth/verify-emailVerify an email address with a one-time code
/api/v1/auth/forgot-passwordStart a password reset
/api/v1/auth/reset-passwordComplete a password reset
Management
API keys
Create, rotate and revoke keys programmatically
/api/v1/keys/createCreate a new API key (returned once, never again)
/api/v1/keys/listList your API keys and their scopes
/api/v1/keys/refresh/{key_id}Rotate a key, invalidating the old secret
/api/v1/keys/{key_id}Revoke an API key immediately
Create an API key
curl -X POST "https://api.breachline.io/api/v1/keys/create" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "CI/CD Pipeline Key",
"scopes": ["llm:chat", "memory:read", "usage:read"],
"expires_in_days": 90
}'
# Response — the secret is shown ONCE and is not recoverable
{
"id": "key_abc123",
"name": "CI/CD Pipeline Key",
"key": "bl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"scopes": ["llm:chat", "memory:read", "usage:read"],
"created_at": "2026-01-15T10:00:00Z",
"expires_at": "2026-04-15T10:00:00Z"
}Nebula
Inference
An OpenAI-compatible gateway. Point any OpenAI SDK at our base URL — there is no separate package to install.
/api/v1/llm/v1/chat/completionsChat completions — streaming and tool calling
/api/v1/llm/v1/responsesResponses API — the modern OpenAI-compatible surface
/api/v1/llm/v1/modelsList the available Nebula models
/api/v1/llm/v1/embeddingsGenerate embeddings for retrieval
/api/v1/llm/v1/rerankRerank candidate documents against a query
/api/v1/llm/v1/audio/transcriptionsTranscribe audio to text
/api/v1/llm/v1/audio/speechSynthesise speech from text
/api/v1/llm/v1/images/generationsGenerate an image from a prompt
/api/v1/llm/v1/batchesSubmit an asynchronous batch job
/api/v1/llm/v1/batches/{batch_id}Retrieve batch status
/api/v1/llm/v1/batches/{batch_id}/resultsDownload batch results
/api/v1/llm/v1/realtime/ticketMint a short-lived ticket for the realtime socket
Chat completion
curl -X POST "https://api.breachline.io/api/v1/llm/v1/chat/completions" \
-H "X-API-Key: bl_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "nebula-4.5",
"messages": [
{"role": "user", "content": "Summarise the OWASP Top 10 for an API team."}
],
"stream": false
}'
# Response
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "nebula-4.5",
"choices": [
{"index": 0, "message": {"role": "assistant", "content": "..."}, "finish_reason": "stop"}
],
"usage": {"prompt_tokens": 24, "completion_tokens": 512, "total_tokens": 536}
}Full model reference, streaming and tool calling live in the Nebula API docs.
Cognition
Memory
One op-dispatched endpoint for recall, write, linking and search
/api/v1/memoryThe unified memory surface — recall, write, link and search, selected by the op field
Recall from memory
curl -X POST "https://api.breachline.io/api/v1/memory" \
-H "X-API-Key: bl_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"op": "recall",
"query": "What did we learn about the staging login flow?",
"limit": 10
}'
# The memory surface is op-dispatched: one endpoint, many operations.
# Every result is scoped to your organisation and never crosses tenants.Cost
Usage and budget
Read your consumption and set your own spend caps
/api/v1/usage/meYour own token usage
/api/v1/usage/me/logsYour per-request activity log (metadata only)
/api/v1/usage/me/budgetBudget burn and error-rate signal
/api/v1/usage/me/budget/capRead your self-service spend cap
/api/v1/usage/me/budget/capSet a spend cap in GBP per window
/api/v1/usage/me/budget/capRemove your spend cap
/api/v1/usage/org/{org_id}An organisation's usage (members only)
Account
Account and organisation
Profile, settings, audit log, data rights and org membership
/api/v1/users/meGet your profile
/api/v1/users/meUpdate your profile
/api/v1/users/me/exportExport all of your data
/api/v1/users/meDelete your account
/api/v1/settings/notificationsRead notification preferences
/api/v1/settings/notificationsUpdate notification preferences
/api/v1/settings/audit-logsRead the tamper-evident audit log
/api/v1/settings/audit-logs/verify-chainVerify the audit log hash chain
/api/v1/gdpr/deletion-requestsRaise a GDPR Article 17 erasure request
/api/v1/organizationsList organisations you belong to
/api/v1/organizations/{org_id}/membersList an organisation's members
/api/v1/organizations/{org_id}/invitesInvite someone to an organisation
Integration
Python example
Streaming a completion with the official OpenAI SDK
Streaming with the OpenAI SDK
from openai import OpenAI
# The gateway is OpenAI-compatible, so the official SDK IS the SDK.
# There is no separate Breachline package to install.
client = OpenAI(
api_key="bl_live_xxxxxxxxxxxx",
base_url="https://api.breachline.io/api/v1/llm/v1",
)
stream = client.chat.completions.create(
model="nebula-4.5",
messages=[{"role": "user", "content": "Review this Terraform plan for exposure."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)Usage
Rate limits
Applied per key, and more strictly on authentication
Inference is additionally governed by your own spend cap. Need higher limits? Contact us.
Get started
Ready to automate?
Create an API key and build Breachline into your workflow