Get started
Overview
The Nomic HTTP API connects your systems to the same platform capabilities you use in the product—agents, file ingest, parsing, codes search, and organization administration. It is available on Business and Enterprise organization instances.
Every request is versioned under one base URL on your Nomic instance. Use API keys from the Developer Console; responses follow shared conventions for errors, pagination, and rate limits.
Start here
What you can use
Base URL
https://<your-domain>.nomic.ai/api/v0
Replace <your-domain> with the part of your instance's hostname before .nomic.ai — for example, acme.drive if you sign in at acme.drive.nomic.ai, giving https://acme.drive.nomic.ai/api/v0. Individual plan accounts do not include the Agent API.
Authentication
Authenticate every request with an API key in the Authorization header. Two
schemes are accepted — use whichever your HTTP client makes easier:
Authorization: Bearer npk_...
or HTTP Basic with the key as the username and an empty password (handy for
curl -u and many SIEM/enterprise clients):
curl "https://<your-domain>.nomic.ai/api/v0/users" -u "$NOMIC_API_KEY:"
Create and manage API keys in the Developer Console at /developer on your Nomic instance. Each key is scoped to a specific user, and usage is attributed to that user's account.
Scopes
API keys are granted scopes that control which API areas they can access. When creating a key, choose the broad developer scope, the broad admin scope, or any of the granular developer and admin scopes.
Developer scopes
| Scope | Grants access to |
|---|---|
developer | Every developer API: agents, files, parsing, codes, projects, budgets, and workflows. Includes every developer:* scope. |
developer:agent | Agents, codes search, and listing and reading workflows. |
developer:files | Searching, uploading, and polling files. |
developer:parse | Parse jobs. |
developer:projects:read | Reading projects and their members. |
developer:projects:create | Creating projects. |
developer:projects:admin | Updating project metadata and members. Includes developer:projects:read. |
developer:budgets:read | Reading the budgets you administer and their member limits. |
developer:budgets:write | Creating and changing budgets and setting member limits. Includes developer:budgets:read. |
developer:workflows | Creating, editing, and releasing workflows. |
Developer scopes grant access to an API area; each request still runs as the key's owner, so project roles, file permissions, and budget admin rights apply as they would in the app.
Admin scopes
Admin access requires the key owner to be an organization admin. A key keeps its admin scopes only while its owner remains an admin, so give integrations such as a SIEM poller a key owned by a dedicated admin account.
| Scope | Grants access to |
|---|---|
admin | Admin APIs such as users, analytics, API keys, and audit logs. |
admin:audit:read | Audit logs, for SIEM/SOAR ingestion. |
admin:analytics:read | Analytics endpoints. |
admin:users:read | Reading users. |
admin:users:write | Modifying users. Includes admin:users:read. |
admin:api-keys:read | Listing API keys. |
admin:api-keys:write | Revoking API keys. Includes admin:api-keys:read. |
admin:integrations:read | Listing the drives under a SharePoint site. |
admin:integrations:write | Connecting SharePoint sites to sync. Includes admin:integrations:read. |
The admin scope includes every granular admin scope. Prefer the narrowest
scope an integration needs; a SIEM integration only needs admin:audit:read.
Errors
API error responses return a JSON body with:
error: Human-readable description of what went wrong.code: Machine-readable error code you can use for programmatic handling. Present on validation, authentication, authorization, spend, rate-limit, and unknown-path failures; a few handlers (file upload, user lookups and enable/disable, API key revocation, and parse status) returnerroralone, so treatcodeas optional.issues(optional): Validation details for schema/path/query/body validation failures.
{
"error": "File version not found",
"code": "not_found"
}
Validation failures may include additional field-level details:
{
"error": "Invalid request body",
"code": "bad_request",
"issues": [
{
"path": ["fileVersionId"],
"message": "Required"
}
]
}
Status codes
| Code | Meaning |
|---|---|
400 | Bad request — invalid or missing parameters, including schema validation failures |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found or not accessible |
409 | Request conflicts with current state |
413 | Payload too large (file upload exceeds 500 MB) |
429 | Rate limit exceeded — see Rate limits |
500 | Internal server error |
501 | Feature unavailable on this instance |
503 | Dependent service not configured |
Error codes
Where a code is present, branch on it rather than parsing the human-readable
error message:
code | Typical status | Meaning |
|---|---|---|
bad_request | 400 | Invalid or missing parameters, including schema validation failures |
unauthorized | 401 | Missing or invalid API key |
payment_required | 402 | Spend limit reached |
forbidden | 403 | Authenticated but missing the required scope |
not_found | 404 | Resource not found or not accessible |
conflict | 409 | Request conflicts with current state |
invalid_state | 409 | Operation not allowed in the agent's current status |
project_budgets_disabled | 409 | Project budgets are turned off for the organization |
member_limits_disabled | 409 | Member limits are turned off for the budget |
rate_limited | 429 | Rate limit exceeded — see the Retry-After header |
internal_server_error | 500 | Unexpected server error |
not_implemented | 501 | Feature unavailable on this instance |
Artifact exports return their own, more specific codes, listed on that page.
Pagination
List endpoints use cursor-based pagination. Pass limit to control page size and cursor to fetch the next page.
curl "https://<your-domain>.nomic.ai/api/v0/users?limit=25" \
-H "Authorization: Bearer $NOMIC_API_KEY"
The response includes:
| Field | Type | Description |
|---|---|---|
data | array | Items for the current page |
nextCursor | string, null, or absent | Pass as cursor to fetch the next page. When there are no more results it is absent on users, audit logs, and API keys, and null everywhere else — stop paging when it is missing or null. |
totalCount | number | Total matching items across all pages. Returned by users, audit logs, API keys, projects, project members, budgets, and the user, workflow, project, and usage-event analytics; not by agents, workflows, or file search. |
Stability
All v0 endpoints are currently experimental. Request and response shapes may change between releases. We recommend testing against your integration when upgrading.
More resources
Agents in depth: Agent API · Quickstart · SKILL.md (plain text)