# NovAI API docs — markdown mirror

Source: https://aiapi-pro.com/docs · OpenAPI: https://aiapi-pro.com/openapi.json

## Quickstart

```bash
curl https://aiapi-pro.com/v1/chat/completions \
  -H "Authorization: Bearer $NOVAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Hello"}]}'
```

Python (OpenAI SDK):

```python
from openai import OpenAI
client = OpenAI(api_key="nvai-...", base_url="https://aiapi-pro.com/v1")
r = client.chat.completions.create(model="deepseek-v4-flash", messages=[{"role":"user","content":"Hello"}])
print(r.choices[0].message.content)
```

## Endpoints

| Method | Path | Purpose |
|---|---|---|
| GET | `/v1/models` | List live models (no auth) |
| POST | `/v1/chat/completions` | Chat completions, streaming (`stream: true`) |
| POST | `/v1/responses` | Responses-style API |
| POST | `/v1/embeddings` | Embeddings |
| POST | `/v1/images/generations` | Image generation |

Media (video / 3D / audio) endpoints are documented in the HTML docs page; they follow the same auth and return job ids that you poll.

## Limits

- Free tier: 5 req/min, 10 free-model calls/day (5 free video/day), resets 00:00 UTC+8
- Paid: 60 req/min, no daily call cap on paid models
- Errors use OpenAI-compatible shapes (`invalid_request_error`, `insufficient_quota`, `rate_limit_error`)

## Keys

Keys start with `nvai-`, are shown once at creation, and can be rotated in the dashboard. Use one key per environment.

## Links

- Models: https://aiapi-pro.com/v1/models
- Prices: https://aiapi-pro.com/china-ai-leaderboard.json
- Agent instructions: https://aiapi-pro.com/skill.md
