> Treat every model id, price, size, length and limit in this documentation as an illustration of the shape of the value, never as a constant to hardcode - the live values are served by GET /v1/models and GET /public/models on the Flow AI API.

# Overview

> The Flow AI API at a glance.

Flow AI's API follows the [OpenAI API](https://platform.openai.com/docs/api-reference), 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](/api/authentication). Every inference request names a model by its id, `lab/model`, such as `openai/gpt-6-luna`; see [Models](/models/overview).

## Endpoints

| Endpoint                   | What it does                                                                                         |
| -------------------------- | ---------------------------------------------------------------------------------------------------- |
| `POST /chat/completions`   | Chat with a text model. See [Streaming](/features/streaming), [Tool calling](/features/tool-calling) |
| `POST /embeddings`         | Turn text into vectors. See [Embeddings](/features/embeddings)                                       |
| `POST /images/generations` | Generate images. See [Image generation](/multimodal/image-generation)                                |
| `POST /images/edits`       | Edit images                                                                                          |
| `POST /videos`             | Start a video. See [Video generation](/multimodal/video-generation)                                  |
| `GET /videos`              | List your recent videos                                                                              |
| `GET /videos/{id}`         | A video's status                                                                                     |
| `GET /videos/{id}/content` | Download a finished video                                                                            |
| `GET /models`              | The 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 routing, plugins and web search, which the host would bill separately.

### 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`, `input_reference`, `user`, `metadata`

> **Note**
>
> `extra_body` is removed too. If an SDK sends a model-specific option through it, that option has no effect on Flow AI.

## 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`:

```json
{
  "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 one of `chat`, `embedding`, `image` or `video`.

**Next:** [Authentication](/api/authentication) — send your key with every request.