DeepSeek OCR
Recognize one document image as editable text or Markdown.
Recognize one document image as editable text or Markdown.
DeepSeek OCR through PixMind's OpenAI-compatible chat completions endpoint.
Provider
DeepSeekModel ID
deepseek-ocrEndpoint
POST /api-platform/v1/chat/completionsAuthentication
Base URL: https://aihub-admin.aimix.pro. Send Authorization: Bearer <PIXMIND_API_KEY> on both creation and polling requests, and Content-Type: application/json when submitting JSON. Keep your key in a server environment variable.
Model notes
- Keep the API key on your server and use streaming when the client needs incremental output.
- One user message with one image per request. Image <=10MB, shortest edge >=5px; URL <=1024 UTF-8 bytes. Use Free OCR. or Convert the document to markdown. Tools and thinking are not supported.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Stable PixMind model ID. Use `deepseek-ocr`. Allowed values: |
messages | array | Yes | OpenAI-compatible chat messages. Gemini user content may be a string or an array of text, image_url, and video_url blocks. |
max_tokens | integer | No | Maximum completion tokens; send a positive integer up to 8192. Playground default: |
stream | boolean | No | Return tokens incrementally when enabled. Allowed values: Default: |
Request example
curl --request POST 'https://aihub-admin.aimix.pro/api-platform/v1/chat/completions' \
-H "Authorization: Bearer $PIXMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ocr",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Convert the document to markdown."
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/document.png"
}
}
]
}
],
"stream": false
}'// Node.js 20+. Keep the API key on your server.
const apiKey = process.env.PIXMIND_API_KEY;
if (!apiKey) throw new Error("PIXMIND_API_KEY is required");
const response = await fetch("https://aihub-admin.aimix.pro/api-platform/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"model": "deepseek-ocr",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Convert the document to markdown."
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/document.png"
}
}
]
}
],
"stream": false
}),
signal: AbortSignal.timeout(30_000)
});
const task = await response.json();
if (!response.ok) {
throw new Error(task.message ?? task.error?.message ?? `HTTP ${response.status}`);
}
console.log(task);Response example
Non-streaming chat completions return choices directly. With stream: true, consume the SSE stream instead.
{
"id": "chatcmpl_example",
"object": "chat.completion",
"model": "deepseek-ocr",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello!"
},
"finish_reason": "stop"
}
]
}