REST API

The Maniac API provides openai compatible inference endpoints for interacting with both frontier models and your custom models. This reference details the available endpoints.

List chat completions

get

List chat completions captured in telemetry, scoped to the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Query parameters
limitinteger · min: 1 · max: 100OptionalDefault: 20
offsetintegerOptionalDefault: 0
modelany ofOptional
stringOptional
or
nullOptional
containerany ofOptional
stringOptional
or
nullOptional
orderstring · enumOptionalDefault: descPossible values:
Body
or
nullOptional
Responses
chevron-right
200

Successful Response

application/json

OpenAI-style list response for chat completions.

objectconst: listOptional

Object type identifier.

Default: list
totalintegerRequired

Total number of items available for this resource.

get
/api/v1/chat/completions

Create a chat completion

post

Create a chat completion using the specified model.

Supports both streaming and non-streaming responses and is compatible with OpenAI's chat completions API. Use a container slug (maniac:<container>) or an external slug (e.g. openai/gpt-4o).

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Body

OpenAI-compatible chat completion request with Maniac extensions.

modelany ofOptional

Model slug to use. Supports global slugs or project slugs (maniac:).

Example: openai/gpt-4o
stringOptional
or
nullOptional
modelsany ofOptional

Fallback models.

string[]Optional
or
nullOptional
frequency_penaltyany ofOptional

Frequency penalty.

numberOptional
or
nullOptional
logit_biasany ofOptional

Logit bias.

or
nullOptional
logprobsany ofOptional

Include logprobs.

booleanOptional
or
nullOptional
top_logprobsany ofOptional

Top logprobs.

numberOptional
or
nullOptional
max_completion_tokensany ofOptional

Max completion tokens.

numberOptional
or
nullOptional
max_tokensany ofOptional

Max tokens.

numberOptional
or
nullOptional
metadataany ofOptional

Arbitrary key/value metadata to attach to the request.

Example: {"source":"dashboard"}
or
nullOptional
presence_penaltyany ofOptional

Presence penalty.

numberOptional
or
nullOptional
reasoningany ofOptional

Reasoning config.

or
nullOptional
response_formatany ofOptional

Response format.

or
or
or
nullOptional
seedany ofOptional

Random seed.

integerOptional
or
nullOptional
stopany ofOptional

Stop sequences.

stringOptional
or
string[]Optional
or
nullOptional
streamany ofOptional

Stream response.

Default: false
booleanOptional
or
nullOptional
stream_optionsany ofOptional

Stream options.

or
nullOptional
temperatureany ofOptional

Temperature.

numberOptional
or
nullOptional
tool_choiceany ofOptional

Tool choice.

string · enumOptionalPossible values:
or
or
nullOptional
toolsany ofOptional

Tools.

or
nullOptional
top_pany ofOptional

Top p.

numberOptional
or
nullOptional
tagsstring[]Optional

Optional tags for tracking.

Example: []
storeany ofOptional

Whether to store the completion in the database.

Default: true
booleanOptional
or
nullOptional
Responses
chevron-right
200

Server-Sent Events stream for streaming responses.

idstringRequired

Completion id.

creatednumberRequired

Creation timestamp (unix).

modelstringRequired

Model used.

objectconst: chat.completionOptional

Object type.

Default: chat.completion
usageany ofOptional

Token usage.

or
nullOptional
providerany ofOptional

Upstream provider name, if available.

stringOptional
or
nullOptional
containerany ofOptional

Container label used for routing, if any.

stringOptional
or
nullOptional
post
/api/v1/chat/completions

Get a chat completion

get

Fetch a single chat completion by id within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
completion_idstringRequired
Responses
chevron-right
200

Successful Response

application/json
idany ofOptional

Completion id.

stringOptional
or
nullOptional
createdany ofOptional

Creation timestamp (unix seconds).

anyOptional
or
nullOptional
modelany ofOptional

Model slug used.

stringOptional
or
nullOptional
objectconst: chat.completionOptional

Object type.

Default: chat.completion
usageany ofOptional

Token usage.

or
nullOptional
providerany ofOptional

Upstream provider name, if available.

stringOptional
or
nullOptional
containerany ofOptional

Container label used for routing, if any.

stringOptional
or
nullOptional
model_idany ofOptional

Model ID (uuid).

stringOptional
or
nullOptional
spendany ofOptional

Estimated spend.

numberOptional
or
nullOptional
tagsany ofOptional

Tags for this completion.

string[]Optional
or
nullOptional
metadataany ofOptional

Metadata for this completion.

or
nullOptional
get
/api/v1/chat/completions/{completion_id}

Register chat completion examples

post

Register completed chat examples for evaluation and analytics.

This endpoint accepts input/output pairs and stores them for later analysis, while aggregating usage metrics for reporting.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Body

Register completed chat examples for evaluation or analytics.

containerstringRequired

Container label to associate these examples with.

Example: maniac:my-container
Responses
chevron-right
200

Successful Response

application/json
okbooleanRequired

Whether the register operation succeeded.

containerstringRequired

Container label used for registration.

post
/api/v1/chat/completions/register

List containers

get

List containers owned by the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Query parameters
limitinteger · min: 1 · max: 100OptionalDefault: 20
offsetintegerOptionalDefault: 0
Responses
chevron-right
200

Successful Response

application/json
objectconst: listOptional

Object type identifier.

Default: list
totalintegerRequired

Total number of items available for this resource.

get
/api/v1/containers

Create a container

post

Create a new container. Containers represent one task in your codebase. Each container utilizes separate models, routing, and evaluations, and collects data separately.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Body
labelstringRequired

Container label.

initial_modelstringRequired

Initial model slug.

apistring · enumOptional

API type.

Default: chat.completionsPossible values:
default_parametersany ofOptional

Default inference parameters.

or
nullOptional
default_system_promptany ofOptional

Default system prompt.

stringOptional
or
nullOptional
Responses
post
/api/v1/containers

Get a container

get

Fetch a single container by label within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
labelstringRequired
Responses
chevron-right
200

Successful Response

application/json
idstringRequired

Container id.

objectconst: containerOptional

Object type.

Default: container
org_idany ofOptional

Organization id.

stringOptional
or
nullOptional
created_atany ofOptional

Creation timestamp.

string · date-timeOptional
or
nullOptional
labelstringRequired

Container label.

apistring · enumOptional

API type.

Default: chat.completionsPossible values:
default_system_promptany ofOptional

Default system prompt.

stringOptional
or
nullOptional
default_parametersany ofOptional

Default inference parameters.

or
nullOptional
optimized_system_promptany ofOptional

Optimized system prompt.

stringOptional
or
nullOptional
optimized_parametersany ofOptional

Optimized inference parameters.

or
nullOptional
initial_modelany ofOptional

Initial model slug.

stringOptional
or
nullOptional
deleted_atbooleanOptional

Soft delete flag.

Default: false
get
/api/v1/containers/{label}

Delete a container

delete

Soft-delete a container by label within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
labelstringRequired
Responses
chevron-right
200

Successful Response

application/json
objectconst: containerOptional

Object type.

Default: container
labelstringRequired

Container label.

deletedconst: Optional

Deletion status.

Default: true
delete
/api/v1/containers/{label}

List files (OpenAI-compatible)

get

List files owned by the authenticated project, optionally filtered by purpose.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Query parameters
purposeany ofOptional

Filter by purpose

stringOptional
or
nullOptional
limitinteger · min: 1 · max: 1000Optional

Max number of files.

Default: 100
offsetintegerOptional

Number of files to skip.

Default: 0
Responses
chevron-right
200

Successful Response

application/json

OpenAI-compatible list response for files.

objectconst: listOptional

Object type identifier.

Default: list
totalintegerRequired

Total number of items available for this resource.

get
/api/v1/files

Upload a file

post

Upload a file to the platform. This endpoint accepts a file and a purpose, and uploads the file to the platform, for later use in training or evaluation.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Body
purposestringRequired
filestring · binaryRequired
Responses
post
/api/v1/files

Retrieve file metadata

get

Fetch metadata for a single file by id within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
file_idstringRequired

File id (UUID)

Responses
chevron-right
200

Successful Response

application/json

OpenAI-compatible file object (subset).

We keep id as the DB UUID string, and expose the OpenAI-ish envelope.

idstringRequired

File id (UUID).

objectconst: fileOptional

Object type.

Default: file
bytesintegerRequired

File size in bytes.

created_atintegerRequired

Unix timestamp (seconds).

filenamestringRequired

Original filename.

purposestringRequired

Intended file purpose.

statusstringRequired

Current file status.

status_detailsany ofOptional

Optional status details.

stringOptional
or
nullOptional
get
/api/v1/files/{file_id}

Delete a file (OpenAI-compatible)

delete

Soft-delete a file by id within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
file_idstringRequired

File id (UUID)

Responses
chevron-right
200

Successful Response

application/json

OpenAI-compatible delete response.

idstringRequired

File id (UUID).

objectconst: fileOptional

Object type.

Default: file
deletedbooleanOptional

Deletion status.

Default: true
delete
/api/v1/files/{file_id}

Retrieve file content (OpenAI-compatible)

get

Download the raw contents of a file by id within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
file_idstringRequired

File id (UUID)

Responses
chevron-right
200

Raw file bytes

anyOptional
get
/api/v1/files/{file_id}/content

No content

List available models

get

List models available to the authenticated project. Optionally filter by container.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Query parameters
limitinteger · min: 1 · max: 100Optional

Max number of models.

Default: 100
offsetintegerOptional

Number of models to skip.

Default: 0
containerany ofOptional

Container ID or label to filter models by.

stringOptional
or
nullOptional
Responses
chevron-right
200

Successful Response

application/json
objectconst: listOptional

Object type identifier.

Default: list
totalintegerRequired

Total number of items available for this resource.

get
/api/v1/models

List evaluators

get

List evaluators for the authenticated project, optionally filtered by container.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Query parameters
containerany ofOptional
stringOptional
or
nullOptional
limitinteger · min: 1 · max: 100OptionalDefault: 20
offsetintegerOptionalDefault: 0
Responses
chevron-right
200

Successful Response

application/json
objectconst: listOptional

Object type identifier.

Default: list
totalintegerRequired

Total number of items available for this resource.

get
/api/v1/evaluators

Create an evaluator

post

Create a new evaluator scoped to a project or container.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Body
containerany ofOptional

Container label.

stringOptional
or
nullOptional
typestring · enumRequired

Evaluator type.

Possible values:
modelany ofOptional

Judge model slug.

stringOptional
or
nullOptional
promptany ofOptional

Judge prompt.

stringOptional
or
nullOptional
sourceany ofOptional

Code evaluator source.

stringOptional
or
nullOptional
requirementsany ofOptional

Optional requirements list.

string[]Optional
or
nullOptional
pass_thresholdany ofOptional

Optional pass threshold.

numberOptional
or
nullOptional
metadataany ofOptional

Optional metadata.

or
nullOptional
nameany ofOptional

Evaluator name.

stringOptional
or
nullOptional
descriptionany ofOptional

Evaluator description.

stringOptional
or
nullOptional
apiany ofOptional

API type.

stringOptional
or
nullOptional
inference_parametersany ofOptional

Optional inference parameters for judge evaluators (e.g. response_format, temperature).

or
nullOptional
Responses
post
/api/v1/evaluators

Delete an evaluator

delete

Delete an evaluator by id.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
evaluator_idstringRequired
Responses
chevron-right
200

Successful Response

application/json
objectconst: evaluatorOptional

Object type.

Default: evaluator
idstringRequired

Evaluator id.

deletedconst: Optional

Deletion status.

Default: true
delete
/api/v1/evaluators/{evaluator_id}

Create a dataset

post

Create a dataset for a container using telemetry filters.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Body
namestringRequired

Dataset name.

descriptionany ofOptional

Dataset description.

stringOptional
or
nullOptional
containerstringRequired

Container id or label for source data.

sizeintegerRequired

Requested dataset size.

tagsany ofOptional

Optional dataset tags.

string[]Optional
or
nullOptional
Responses
post
/api/v1/datasets

Get a dataset

get

Fetch a dataset by id within the authenticated project.

Authorizations
AuthorizationstringRequired

API key in Authorization header using Bearer .

Path parameters
dataset_idstringRequired
Responses
chevron-right
200

Successful Response

application/json
idstringRequired

Dataset id.

objectconst: datasetOptional

Object type.

Default: dataset
namestringRequired

Dataset name.

descriptionany ofOptional

Dataset description.

stringOptional
or
nullOptional
user_idany ofOptional

Owner user id.

stringOptional
or
nullOptional
project_idany ofOptional

Project id.

stringOptional
or
nullOptional
org_idany ofOptional

Organization id.

stringOptional
or
nullOptional
container_idany ofOptional

Container id.

stringOptional
or
nullOptional
requested_sizeany ofOptional

Requested dataset size.

integerOptional
or
nullOptional
sizeany ofOptional

Actual dataset size.

integerOptional
or
nullOptional
filtersany ofOptional

Filters applied when building the dataset.

or
nullOptional
created_atany ofOptional

Creation timestamp.

string · date-timeOptional
or
nullOptional
tagsany ofOptional

Optional dataset tags.

string[]Optional
or
nullOptional
get
/api/v1/datasets/{dataset_id}

Healthz

get

Health check endpoint for load balancers and uptime monitors.

Responses
chevron-right
200

Successful Response

application/json

Health check response.

okbooleanRequired
get
/healthz
200

Successful Response

Last updated