https://api.oobo.ai (or your self-hosted URL)
Authentication
All CLI requests authenticate with an organization API key:Endpoints
Health check
Auth: Who am I
Ingest anchor
Push a commit anchor to Oobo. Called automatically by the CLI on everygit commit when sync is enabled.
Field reference
Top-level fields:| Field | Type | Required | Description |
|---|---|---|---|
event | string | yes | Event type, e.g. git.commit |
timestamp | string | no | ISO 8601 timestamp |
oobo_version | string | no | CLI version |
project | object | yes | Project metadata |
anchor | object | yes | Full anchor data |
transcript | array | no | Only included when transparency_mode == "on" |
project object:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Project name |
git_remote | string | yes | Git remote URL |
anchor object:
| Field | Type | Required | Description |
|---|---|---|---|
commit_hash | string | yes | Full commit SHA |
branch | string | no | Branch name |
author | string | no | Author in Name <email> format |
author_type | string | no | assisted, human, agent, or automated |
contributors | array | no | List of contributors |
committed_at | int | no | Unix timestamp |
message | string | no | Commit message |
files_changed | array | no | List of changed file paths |
added | int | no | Total lines added |
deleted | int | no | Total lines deleted |
file_changes | array | no | Per-file change details with attribution |
ai_added | int | no | Lines added by AI |
ai_deleted | int | no | Lines deleted by AI |
human_added | int | no | Lines added by humans |
human_deleted | int | no | Lines deleted by humans |
ai_percentage | float | no | Percentage of code written by AI (0–100) |
sessions | array | no | AI agent sessions linked to this commit |
transparency_mode | string | no | "on" or "off" |
anchor.contributors[]:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Contributor name or agent name |
role | string | yes | human or agent |
model | string | no | LLM model name (agents only) |
anchor.file_changes[]:
| Field | Type | Required | Description |
|---|---|---|---|
path | string | yes | File path |
added | int | no | Lines added in this file |
deleted | int | no | Lines deleted in this file |
attribution | string | no | ai, human, or mixed |
agent | string | no | Agent name (when attribution is ai or mixed) |
anchor.sessions[]:
| Field | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Unique session identifier |
agent | string | no | Agent name |
model | string | no | LLM model name |
link_type | string | no | How session was linked: explicit or inferred |
input_tokens | int | no | Input token count |
output_tokens | int | no | Output token count |
cache_read_tokens | int | no | Cached tokens read |
duration_secs | float | no | Session duration in seconds |
tool_calls | int | no | Number of tool calls |
files_touched | array | no | Files modified in this session |
is_subagent | bool | no | Whether this is a sub-agent session |
is_estimated | bool | no | Whether token counts are estimated vs actual |
transcript[]:
| Field | Type | Required | Description |
|---|---|---|---|
role | string | yes | user or assistant |
text | string | yes | Message content |
Success response
Error responses
| Status | Body | Cause |
|---|---|---|
| 401 | { "detail": "Missing or invalid Authorization header" } | No Authorization: Bearer ... header |
| 401 | { "detail": "Invalid API key format" } | Key doesn’t start with sk-oobo-v1- |
| 401 | { "detail": "Invalid API key" } | Key not found or deleted |
| 422 | Validation error | Missing required fields or wrong types |
| 500 | { "success": false, "message": "Failed to ingest anchor" } | Server error |
Duplicate handling
The server enforces a unique constraint on(git_remote, commit_hash). Pushing the same commit hash for the same remote twice results in a database error. The CLI handles this gracefully (treats as success).
Shares: Create
SharedSession JSON from oobo share.
Response 201:
Shares: Get
Shares: Delete
Shares: List
Error format
All error responses follow this structure:Self-hosted
Self-hosted instances must implement the endpoints above. Configure the CLI to point at your server:~/.oobo/config.toml:
