The FusedFrames API is a REST API at https://api.fusedframes.com. There is
no version prefix; use the paths as shown. Every response is JSON with
camelCase field names.
The API is read-only. It reads the documents FusedFrames wrote from your
recorded work. It cannot record anything and it cannot write. Every endpoint
is a GET. The CLI and the MCP server read the same data with
the same keys.
A first request
List the document libraries your key can see:
curl https://api.fusedframes.com/libraries \
-H "Authorization: Bearer ff_your_key"{
"libraries": [
{
"id": "lib_...",
"name": "Support",
"description": "How the support team resolves issues",
"documentCount": 128
}
]
}The response above is trimmed. Each library also carries its categories, tags and timestamps.
Authentication
Every request needs an API key sent as a bearer token in the Authorization
header. See Authentication to create a key and learn
what it can see.
Conventions
Pagination
List and search endpoints take two query parameters: page (starts at 1) and
pageSize (default 20, maximum 100; source recordings cap at 50). Responses
echo both back along with an exact total:
{ "documents": [], "total": 0, "page": 1, "pageSize": 20 }/libraries and the category, tag and application lists return everything at
once, with no pages.
Errors
Every error uses the same shape:
{
"error": {
"code": "not_found",
"message": "Library not found"
}
}A bad parameter returns 400 with code bad_request. Search can also answer
402 (insufficient_ai_credit or subscription_suspended) when the workspace
cannot pay for semantic search, and source recordings answer 403 (forbidden)
when the key lacks recording-details access.
Rate limits
Each key can make 100 requests a minute and each IP address 300 a minute.
Successful responses carry X-RateLimit-Limit, X-RateLimit-Remaining and
X-RateLimit-Reset headers so you can pace yourself. Going over returns a
429 with a Retry-After header saying how many seconds to wait.
Referring to libraries and documents
Wherever a path takes a library, you can pass the library's ID (lib_...) or
its slug. Old slugs keep working after a rename. Documents must be referred to
by ID (doc_...); document slugs only make sense inside their own library, so
the API does not accept them.