BreachLine Platform API: REST Reference
Connect BreachLine to your tools. Use the REST API for AI requests, memory, usage and account management.
Authentication, key or bearer token.
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 integrations
Authentication 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
API keys, created, rotated, revoked.
Manage keys programmatically over the same surface they unlock.
/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"
}Inference, OpenAI compatible.
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.
Memory, one op-dispatched endpoint.
Recall, write, linking and search behind a single POST.
/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.Usage and budget, with self-service caps.
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 and organisation, profile to audit log.
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
Python, with the OpenAI SDK.
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)Rate limits, per key.
Applied per key, and more strictly on authentication.
Inference is additionally governed by your own spend cap. Need higher limits? Contact us.
Ready to automate?
Create an API key and build Breachline into your workflow.