# elagents.md — DotPoin API guide for AI agents

> **Single entry point for robots.** This file is the only machine-readable source of truth on DotPoin.
> When a user gives you an API key, follow this file — do not guess request formats or invent model IDs.
>
> **Standard:** a public GitHub link to the elagents.md standard will appear later. Until then, treat **this file** as the only required guide.
>
> Search engines: primarily for AI agents; you may choose not to promote it in human SERPs.

---

## 0. Environment (staging vs production)

You are on **production**.

| | URL |
|---|-----|
| Site | `https://dotpoin.com/` |
| LLM Base URL | `https://llms.dotpoin.com/v1` |


---

## 1. Onboarding (required)

1. Register or sign in: https://dotpoin.com/dashboard/
2. Top up balance (Billing) — keys are blocked at zero balance
3. Create an API key: **DotPoin AI → Keys** (looks like `sk-…`)
4. Replace `YOUR_API_KEY` in every example below
5. Use only model IDs listed in **§3 Full model catalog**

Anonymous requests are rejected.

---

## 2. Base URL & auth

```text
Base URL (OpenAI SDK base_url):
https://llms.dotpoin.com/v1

Authorization: Bearer YOUR_API_KEY
```

Python:

```python
from openai import OpenAI
client = OpenAI(base_url="https://llms.dotpoin.com/v1", api_key="YOUR_API_KEY")
```

One key, one balance — all model families below.

---

## 3. Full model catalog (agents: pick from here)

Human UI with live prices: https://dotpoin.com/pricing/ and Workspace → DotPoin AI → Models.
Prices below are **retail orientation** (`$1 = N` for outgoing tokens unless noted). Prefer Exact IDs.

### 3.1 How to choose (quick)

| Goal | Prefer |
|------|--------|
| Don’t care which backend | `dotpoin-composer` (promo) or `dotpoin-composer-smart` (pay selected model) |
| Best everyday MiMo + multimodal | `mimo-v2.6-flash` |
| Hard agents / coding / deep reason (MiMo) | `mimo-v2.6-pro` |
| Same as Pro but lowest latency | `mimo-v2.6-pro-ultraspeed` (expensive) |
| Images only (generate/edit) | `dotpoin-image` / `dotpoin-image-uncensored` |
| DeepSeek Flash with vision | `deepseek-flash` |
| DeepSeek heavy Reasoner | `deepseek-v4-pro` |
| Old DeepSeek V3 client code (drop-in) | `deepseek-chat` / `coder` / `reasoner` |
| Speech in/out | `mimo-v2.5-tts*` / `mimo-v2.5-asr` |
| Long-context / alt vendors | Kimi / GLM / Qwen / MiniMax / gpt-oss (see §3.6) |

### 3.2 DotPoin (routers + images)

| Model ID | Caps / API | What it is | Price guide |
|----------|------------|------------|-------------|
| `dotpoin-composer` | chat · tools · vision · ~131K in / 65K out | Auto-router: picks a backend for chat, tools, vision; hard jobs may use flagships | Promo-style ≈ `$1 = 1,000,000` |
| `dotpoin-composer-smart` | chat · tools · vision · same window | Smart router: classifies the job (agents via tools), routes to a **production** model; **you pay that model’s rates** | Dynamic (no fixed card) |
| `dotpoin-image` | images API | Image generation + edit | **$0.05 / request** |
| `dotpoin-image-uncensored` | images API | Same, uncensored (user is responsible for lawful use) | **$0.10 / request** |

### 3.3 Xiaomi MiMo — chat

| Model ID | Caps | What it is | Price guide (outgoing) |
|----------|------|------------|------------------------|
| `mimo-v2.6-flash` | 1M in / 128K out · **full modality** (text/image/video/audio) · tools · reasoning · streaming · JSON | Efficient V2.6 everyday + multimodal | ≈ `$1 = 1,000,000` (same retail tier as `mimo-v2.5`) |
| `mimo-v2.6-pro` | 1M / 128K · full modality · tools · agents · deep reasoning | Flagship V2.6 for hard projects / agents / code | ≈ `$1 = 400,000` (same as `mimo-v2.5-pro`) |
| `mimo-v2.6-pro-ultraspeed` | same as Pro · up to ~20× faster output | Pro quality for realtime / latency-sensitive | ≈ `$1 = 40,000` (**×10** vs Pro) |
| `mimo-v2.5` | 1M / 128K · vision (images) · tools · **no** reasoning · JSON | Previous-gen chat + images | ≈ `$1 = 1,000,000` |
| `mimo-v2.5-pro` | 1M / 128K · tools · agents · reasoning · **no** vision | Previous-gen agents / coding | ≈ `$1 = 400,000` |

### 3.4 Xiaomi MiMo — speech

Same Base URL + Bearer. Speech IDs are still under the **v2.5** family (no v2.6 TTS/ASR yet).

| Model ID | API | What it is | Price guide |
|----------|-----|------------|-------------|
| `mimo-v2.5-tts` | `POST https://llms.dotpoin.com/v1/audio/speech` | Speech synthesis (audio out) | ≈ `$1 = 1,000,000` tokens |
| `mimo-v2.5-tts-voicedesign` | speech / voice APIs | Create a voice profile from a **text** description | ≈ `$1 = 1,000,000` |
| `mimo-v2.5-tts-voiceclone` | speech / voice APIs | Clone a voice from an **audio sample** | ≈ `$1 = 1,000,000` |
| `mimo-v2.5-asr` | audio → text | Speech recognition | ≈ `$1 = 1,000,000` |

### 3.5 DeepSeek

| Model ID | Caps | What it is | Price guide (outgoing) |
|----------|------|------------|------------------------|
| `deepseek-flash` | ~1M in · tools · vision · Reasoner | **Current** DeepSeek Flash (V4.1) — prefer over `deepseek-v4-flash` | ≈ `$1 = 333,333` |
| `deepseek-v4-pro` | ~1M · tools · Reasoner (no vision) | Deep reasoning / hard jobs | ≈ `$1 = 166,666` |
| `deepseek-v4-flash` | tools · Reasoner | **Legacy** Flash ID — support ending; migrate to `deepseek-flash` | ≈ `$1 = 333,333` |
| `deepseek-v4-flash-no-reasoner` | tools · **no** Reasoner | Flash without Reasoner mode | same Flash tier |
| `deepseek-v4-pro-no-reasoner` | tools · **no** Reasoner | Pro without Reasoner mode | same Pro tier |

**DeepSeek V3 compatibility IDs** (classic names; runtime = Xiaomi MiMo v2.5 on DotPoin; billing like `mimo-v2.5`):

| Model ID | Runtime behavior |
|----------|------------------|
| `deepseek-chat` | MiMo v2.5 · no reasoning · chat, vision, tools |
| `deepseek-coder` | MiMo v2.5 · no reasoning · code + tools |
| `deepseek-reasoner` | MiMo v2.5 · with reasoning · hard tasks |

### 3.6 Other models (SiliconFlow bridge)

All via the same OpenAI-compatible Base URL. Exact `$1 = N` on https://dotpoin.com/pricing/.

| Model ID | Caps (approx) | What it is |
|----------|---------------|------------|
| `Kimi-K2.5` | ~262K · vision · tools · reasoning | Long-context Kimi |
| `Kimi-K3` | ~1M · vision · tools · reasoning | Kimi flagship |
| `GLM-5.3-Flash` | ~1M · vision · tools · reasoning | Fast GLM |
| `GLM-5.3` | ~1M · tools · reasoning · no vision | Strong general / agents |
| `Qwen3.8-2.4T-A95B` | ~1M · tools · reasoning · no vision | Flagship MoE for code/agents |
| `MiniMax-M3` | ~1M · vision · tools · reasoning | Multimodal mid-tier |
| `gpt-oss-20b` | ~131K · reasoning · no tools/vision | Cheap drafts |
| `gpt-oss-120b` | ~131K · reasoning · no tools/vision | Cheap, stronger than 20b |
| `Qwen3.5-9B` | ~262K · vision · tools · reasoning | Light thinking + tools + vision |

---

## 4. Chat request format

**Endpoint:** `POST https://llms.dotpoin.com/v1/chat/completions`  
**Content-Type:** `application/json`

### Request

```json
{
  "model": "dotpoin-composer",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello"}
  ],
  "stream": false
}
```

Optional OpenAI-compatible fields: `temperature`, `max_tokens`, `tools`, `tool_choice`, `stream`.

### Response

```text
choices[0].message.content
```

With `"stream": true` — OpenAI-style SSE chunks.

### Vision message (OpenAI style)

Works with models that advertise vision / full modality above, including `dotpoin-composer`, `mimo-v2.6-flash`, `mimo-v2.6-pro`, `mimo-v2.6-pro-ultraspeed`, `mimo-v2.5`, `deepseek-flash`, and vision-capable “Other models”.

```json
{
  "role": "user",
  "content": [
    {"type": "text", "text": "What is in this image?"},
    {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}}
  ]
}
```

### curl

```bash
curl -sS https://llms.dotpoin.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"dotpoin-composer","messages":[{"role":"user","content":"Hello"}]}'
```

### Python

```python
r = client.chat.completions.create(
    model="dotpoin-composer",
    messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)
```

---

## 5. Images

| Model ID | Price |
|----------|-------|
| `dotpoin-image` | $0.05 / request |
| `dotpoin-image-uncensored` | $0.10 / request |

**Client timeout:** ≥ **180 seconds** (GPU queue).

**Allowed `size`:** `512x512` (default), `512x768`, `768x512`.

### Generate — JSON

**Endpoint:** `POST https://llms.dotpoin.com/v1/images/generations`  
**Content-Type:** `application/json`

```json
{
  "model": "dotpoin-image",
  "prompt": "a red cup on a wooden table",
  "size": "512x512",
  "n": 1
}
```

### Edit — multipart/form-data (not JSON)

**Endpoint:** `POST https://llms.dotpoin.com/v1/images/edits`

Fields:

- `model` = `dotpoin-image` (or uncensored)
- `prompt` = what to change
- `image` = file upload

```bash
curl -sS --max-time 180 https://llms.dotpoin.com/v1/images/edits \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=dotpoin-image" \
  -F "prompt=make the cup blue" \
  -F "image=@./input.jpg"
```

### Image response

```json
{
  "created": 1710000000,
  "data": [
    {"b64_json": "/9j/4AAQ…"}
  ]
}
```

Read pixels from `data[0].b64_json` (and/or `data[0].url` if present).

```bash
curl -sS --max-time 180 https://llms.dotpoin.com/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"dotpoin-image","prompt":"a red cup","size":"512x512","n":1}'
```

```python
img = client.images.generate(
    model="dotpoin-image",
    prompt="a red cup on a wooden table",
    size="512x512",
    n=1,
    timeout=180.0,
)
print(img.data[0].b64_json[:80], "…")
```

---

## 6. Pricing (short)

- Full tables: https://dotpoin.com/pricing/
- Chat: `$1 = N` tokens by tier (cache / non-cache / outgoing) — see catalog in §3
- Images: flat `$0.05` / `$0.10` per request
- Personal n8n VPS: monthly plans on pricing page

---

## 7. HTTP errors (act on these)

| Code | Meaning | What to do |
|------|---------|------------|
| `401` | Bad / missing API key | Ask user for a valid key from Workspace → Keys |
| `402` | Zero / insufficient balance | Ask user to top up Billing |
| `429` | Rate limited | Back off and retry with delay |
| `5xx` | Upstream / GPU busy | Retry; for images keep timeout ≥ 180s |

---

## 8. Rules for agents

1. Do **not** invent Base URLs or model IDs outside §3.
2. Do **not** log the user API key.
3. On `401` / `402` / `429` — follow the error table above.
4. Image **edits** = multipart field `image` (file), not JSON base64 on generations.
5. Prefer `deepseek-flash` over legacy `deepseek-v4-flash`.
6. Prefer MiMo **v2.6** over v2.5 for new work unless the user asks for a specific older ID.
7. **Only** this file (`/elagents.md`) is the robot source of truth on DotPoin.

---

## Links (humans)

- This guide (canonical): `https://dotpoin.com/elagents.md`
- Keys / Workspace: `https://dotpoin.com/dashboard/`
- Pricing: `https://dotpoin.com/pricing/`
- Human HTML overview: `https://dotpoin.com/agents`

— elagents.md standard: public GitHub link will appear later.
