Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.usefini.com/llms.txt

Use this file to discover all available pages before exploring further.

Fini’s public API lets you move data and agent calls between Fini and your own systems, backends, dashboards, analytics pipelines, QA tooling, and support operations workflows. There are two ways to call it, and both authenticate the same way:

REST API

Call endpoints directly from your backend over HTTPS with a Bearer token. Language-agnostic, full control.

Claude skill pack

Every Fini API exposed as a Claude skill. Drive the same operations from a Claude workflow without writing the HTTP layer.
The skill pack is a convenience layer over the REST API, not a separate product. Anything callable via REST is callable via the skill pack, using the same credentials.

Authentication

Every endpoint authenticates with a workspace API key sent as a Bearer token.
1

Create a key in Deploy → API Keys

Go to Deploy → API Keys. Create, reveal, and revoke credentials there. Keys are workspace-scoped, each workspace needs its own.
2

Choose the right scope

Read routes require the read scope. Routes that create, update, or queue work require write. The reference page for each endpoint documents which scope it needs.
3

Send it as a Bearer token

Pass the key in the Authorization header:
Authorization: Bearer fini_xxxxxxxxxxxxxxxxx
Keep API keys on the server side. Do not embed them in browser code, public mobile apps, or anywhere a user can read them. A leaked key can read workspace data, and write-scoped keys can queue document imports and modify knowledge until revoked.

Base URL

https://api-prod.usefini.com
All endpoint paths in the reference are appended to this base.

Using the Claude skill pack

The skill pack is the easiest way to call Fini from a Claude workflow, fetching interactions, running the agent, and updating knowledge become skill calls instead of HTTP requests.
1

Install the Fini skill pack

Add the Fini skill pack from the Claude skills directory.
2

Provide your workspace API key

The skill pack authenticates with the same fini_... key created in Deploy → API Keys. Paste the key when prompted on first use.
3

Invoke any Fini operation from Claude

Skill calls map one-to-one with the REST endpoints documented in this section. Scope rules are identical, a read-only key can’t run skill calls that wrap write routes.
Knowledge written through the API, REST or skill pack, is an input, not a direct write to the source of truth. It lands in Review and Approvals (or publishes directly if explicitly chosen), exactly like Sources or Magic Articles. The API does not bypass the consolidation layer.

Why credentials live in Deploy

You create and revoke credentials from Deploy → API Keys because that workflow belongs in the product UI. The endpoint reference lives here so developer docs stay in one place.

Why the API isn’t working

The key is missing, malformed, or revoked. Confirm the header is exactly Authorization: Bearer fini_... with the full key and no extra whitespace. If the key was rotated, generate a new one in Deploy → API Keys.
The key is valid but missing the scope the endpoint requires (read for reads, write for document registration and ingestion), or it’s scoped to a different workspace than the data you’re calling. Use the key that belongs to the workspace you’re targeting.
The skill pack uses the same workspace API key as REST. If skill calls fail with an auth error, re-provide the key, it’s the same fini_... credential, not a separate token.
Expected. API-written knowledge enters Review as a draft. It only affects answers once approved and published, and only for bots the article is attached to.
Keys are server-side credentials. Proxies and client-side fetch wrappers commonly strip the Authorization header, confirm it’s actually being sent from that environment, and don’t ship the key to a browser even if you can get it to work.
Usually means the workspace has no matching data in the requested window or filter set. This is expected, not an error.