Skip to navigation

API Overview

HyperFlowSI’s API follows the OpenAI API, so the official OpenAI SDKs and plain HTTP both work.

Base URL

https://ai.hyperflow.fun/v1

Every request takes your key as Authorization: Bearer sk-...; see Authentication. Every inference request names a model by its id, lab/model, such as openai/gpt-6-luna; see Models.

Endpoints

EndpointWhat it does
POST /chat/completionsChat with a text model. See Streaming, Tool calling
POST /embeddingsTurn text into vectors. See Embeddings
POST /images/generationsGenerate images. See Image generation
POST /images/editsEdit images
POST /videosStart a video. See Video generation
GET /videosList your recent videos
GET /videos/{id}A video’s status, and a link to it once it’s made
GET /videos/{id}/contentDownload a finished video
GET /modelsThe models your key can call

Parameters

Each endpoint takes the parameters below. Anything else is removed before the request reaches the model, so it has no effect. This includes a host’s own options, such as web search.

Chat completions

model, messages, stream, stream_options, max_tokens, max_completion_tokens, temperature, top_p, frequency_penalty, presence_penalty, stop, seed, n (1 to 8), logprobs, top_logprobs, logit_bias, tools (function tools only), tool_choice, parallel_tool_calls, response_format, reasoning_effort, user, metadata

Embeddings

model, input, dimensions, encoding_format, user, metadata

Image generation

model, prompt, n, size, quality, style, background, output_format, user, metadata

Image edits

model, prompt, image, mask, n, size, quality, background, output_format, user, metadata

Videos

model, prompt, seconds, size (an aspect ratio), resolution, input_reference, last_frame, reference_images, seed, generate_audio, watermark, return_last_frame, user, metadata

A field named extra_body is removed too, so an option nested in it has no effect. The OpenAI Python SDK’s extra_body= argument is different: it adds its fields to the request itself, so a parameter listed above works when sent that way.

The model list

GET /models returns the models the key may call, in OpenAI’s shape, with the lab as owned_by and the model’s type as mode:

{
"object": "list",
"data": [
{ "id": "openai/gpt-6-luna", "object": "model", "created": 0, "owned_by": "OpenAI", "mode": "chat" },
{ "id": "cohere/cohere-embed-v4", "object": "model", "created": 0, "owned_by": "Cohere", "mode": "embedding" }
]
}

mode is the model’s type, such as chat, embedding, image or video. Other types can appear, so ignore the ones you don’t use.

Next: Authentication: send your key with every request.