# API reference

> Every route of https://api.notholy.com/v1. Machine-readable: https://docs.notholy.com/openapi.json

## POST /chat/completions

Chat completion (OpenAI format)

## POST /responses

Response (OpenAI Responses format, stateless)

previous_response_id returns 400. Send the full conversation in input.

## POST /completions

Text completion (legacy OpenAI format)

## POST /messages

Message (Anthropic Messages format)

The Anthropic SDK base URL is https://api.notholy.com. cache_control is ignored; PDF document sources return 400.

## POST /messages/count_tokens

Count input tokens (Anthropic format)

## POST /embeddings

Embeddings (no model available yet)

Always returns 404 model_not_found until an embedding model is added. Not charged.

## GET /models

List models

## GET /models/{id}

Get one model

## GET /credits

Balance of the organization and spend of the key

## GET /cve/{id}

One CVE with NVD, CISA KEV and FIRST EPSS data

## GET /cve/search

Search the CVE mirror

## POST /advisories/query

Advisories for a package and version

## POST /web/search

Web search

## POST /web/read

Read a public page through the protected egress

## POST /files

Upload a file for static analysis (kept 1 hour)

## GET /files/{id}

File status

## GET /files/{id}/content

Extracted text of a file
