You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: "Moondream 3.1 now available on Workers AI"
3
+
description: Moondream 3.1, a fast and efficient vision language model with frontier-level visual reasoning, is now available on Workers AI.
4
+
products:
5
+
- workers-ai
6
+
date: 2026-07-08
7
+
---
8
+
9
+
Partnering with [Moondream](https://moondream.ai/) to bring their latest model [`@cf/moondream/moondream3.1-9B-A2B`](/workers-ai/models/moondream3.1-9B-A2B/) to Workers AI. Moondream 3.1 is a fast vision language model built on a mixture-of-experts architecture with 9B total parameters and 2B active, delivering frontier-level visual reasoning while retaining fast, cost-efficient inference.
10
+
11
+
Moondream 3.1 is designed for real-world vision tasks, with a 32K token context window for handling complex queries and structured outputs.
12
+
13
+
## Key capabilities
14
+
15
+
-**Query** — ask open-ended questions about an image, with an optional reasoning parameter
16
+
-**Caption** — generate short, normal, or long descriptions of an image
17
+
-**Point** — return coordinates for objects matching a target phrase
18
+
-**Detect** — return bounding boxes for objects matching a target phrase
19
+
20
+
## Real-time vision at the edge
21
+
22
+
Vision workloads like live camera feeds, robotics, content moderation, and interactive agents need answers in milliseconds, not seconds. Moondream 3.1's small active footprint (2B active parameters) pairs well with Workers AI's serverless, globally distributed inference: requests run close to your users, and streaming responses start returning tokens almost immediately.
23
+
24
+
In our testing, first tokens streamed back in roughly 20–30 ms, and results were fast across every task. The example end-to-end times below (client-observed median, including network round trip) are for a simple, single-subject image. Actual latency depends heavily on the image and how much detail you ask for.
25
+
26
+
| Task | End-to-end (p50) |
27
+
| --------- | ---------------- |
28
+
|`query`|~770 ms |
29
+
|`caption`|~480 ms |
30
+
|`point`|~145 ms |
31
+
|`detect`|~160 ms |
32
+
33
+
At these speeds you can call the model inline while handling a request rather than pushing the work to a background queue or a separate service. That opens up use cases where a slow response breaks the experience: moderating user-uploaded images before they are stored, locating an object in a video frame to drive a live overlay, extracting fields from a document during a form submission, or letting an agent inspect a screenshot and decide its next step within a single turn.
34
+
35
+
## Get started
36
+
37
+
Use Moondream 3.1 through the [Workers AI binding](/workers-ai/configuration/bindings/) (`env.AI.run()`) or the REST API at `/ai/run`. You can also use [AI Gateway](/ai-gateway/) with these endpoints.
38
+
39
+
For more information, refer to the [Moondream 3.1 model page](/workers-ai/models/moondream3.1-9B-A2B/) and [pricing](/workers-ai/platform/pricing/).
Copy file name to clipboardExpand all lines: src/content/docs/workers-ai/platform/pricing.mdx
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -116,3 +116,4 @@ The Price in Tokens column is equivalent to the Price in Neurons column - the di
116
116
|@cf/meta/m2m100-1.2b | $0.342 per M input tokens <br/> $0.342 per M output tokens | 31050 neurons per M input tokens <br/> 31050 neurons per M output tokens |
117
117
|@cf/microsoft/resnet-50 | $2.51 per M images | 228055 neurons per M images |
118
118
|@cf/ai4bharat/indictrans2-en-indic-1B | $0.342 per M input tokens <br/> $0.342 per M output tokens | 31050 neurons per M input tokens <br/> 31050 neurons per M output tokens |
119
+
|@cf/moondream/moondream3.1-9B-A2B | $0.300 per M input tokens <br/> $1.000 per M output tokens | 27273 neurons per M input tokens <br/> 90909 neurons per M output tokens |
"description": "Moondream 3 is a fast, efficient 9B mixture-of-experts vision language model (2B active parameters) that delivers frontier-level visual reasoning for tasks like object detection, pointing, OCR, and structured output.",
27
+
"task": {
28
+
"id": "882a91d1-c331-4eec-bdad-834c919942a8",
29
+
"name": "Image-to-Text",
30
+
"description": "Image to text models output a text from a given image. Image captioning or optical character recognition can be considered as the most common applications of image to text."
31
+
},
32
+
"created_at": "2026-07-07 14:39:02.726",
33
+
"tags": [],
34
+
"schema": {
35
+
"input": {
36
+
"type": "object",
37
+
"properties": {
38
+
"task": {
39
+
"type": "string",
40
+
"enum": [
41
+
"query",
42
+
"caption",
43
+
"point",
44
+
"detect"
45
+
],
46
+
"default": "query",
47
+
"description": "Which Moondream skill to run."
48
+
},
49
+
"image": {
50
+
"type": "string",
51
+
"description": "Input image as a public HTTPS URL or base64 data URI. Optional for `query`; required for `caption`, `point`, and `detect`."
52
+
},
53
+
"question": {
54
+
"type": "string",
55
+
"default": "What's in this image?",
56
+
"description": "Question for the `query` task."
57
+
},
58
+
"caption_length": {
59
+
"type": "string",
60
+
"enum": [
61
+
"short",
62
+
"normal",
63
+
"long"
64
+
],
65
+
"default": "normal",
66
+
"description": "Caption length for the `caption` task."
67
+
},
68
+
"target": {
69
+
"type": "string",
70
+
"default": "person",
71
+
"description": "Object phrase to locate for `point` and `detect` tasks (e.g. 'person wearing a red shirt')."
72
+
},
73
+
"reasoning": {
74
+
"type": "boolean",
75
+
"default": true,
76
+
"description": "Enable reasoning trace for the `query` task."
77
+
},
78
+
"temperature": {
79
+
"type": "number",
80
+
"minimum": 0,
81
+
"maximum": 2,
82
+
"default": 0.2,
83
+
"description": "Sampling temperature."
84
+
},
85
+
"top_p": {
86
+
"type": "number",
87
+
"minimum": 0,
88
+
"maximum": 1,
89
+
"default": 0.9,
90
+
"description": "Top-p (nucleus) sampling."
91
+
},
92
+
"max_tokens": {
93
+
"type": "integer",
94
+
"minimum": 1,
95
+
"maximum": 28672,
96
+
"default": 8192,
97
+
"description": "Max tokens to generate for `query` and `caption`."
98
+
},
99
+
"max_objects": {
100
+
"type": "integer",
101
+
"minimum": 1,
102
+
"maximum": 500,
103
+
"default": 150,
104
+
"description": "Max objects to return for `point` and `detect`."
105
+
},
106
+
"stream": {
107
+
"type": "boolean",
108
+
"default": true,
109
+
"description": "Return incremental tokens for `query` and `caption`. `point` and `detect` do not support streaming."
110
+
}
111
+
}
112
+
},
113
+
"output": {
114
+
"type": "object",
115
+
"contentType": "application/json",
116
+
"properties": {
117
+
"finish_reason": {
118
+
"type": "string",
119
+
"description": "Reason the generation finished."
120
+
},
121
+
"metrics": {
122
+
"type": "object",
123
+
"properties": {
124
+
"input_tokens": {
125
+
"type": "integer",
126
+
"description": "Number of input tokens consumed."
127
+
},
128
+
"output_tokens": {
129
+
"type": "integer",
130
+
"description": "Number of output tokens generated."
131
+
},
132
+
"prefill_time_ms": {
133
+
"type": "number",
134
+
"description": "Prefill time in milliseconds."
135
+
},
136
+
"decode_time_ms": {
137
+
"type": "number",
138
+
"description": "Decode time in milliseconds."
139
+
},
140
+
"ttft_ms": {
141
+
"type": "number",
142
+
"description": "Time to first token in milliseconds."
143
+
}
144
+
},
145
+
"required": [
146
+
"input_tokens",
147
+
"output_tokens",
148
+
"prefill_time_ms",
149
+
"decode_time_ms",
150
+
"ttft_ms"
151
+
]
152
+
},
153
+
"answer": {
154
+
"type": "string",
155
+
"description": "Answer text for the `query` task. Null for other tasks."
156
+
},
157
+
"caption": {
158
+
"type": "string",
159
+
"description": "Caption text for the `caption` task. Null for other tasks."
160
+
},
161
+
"points": {
162
+
"type": "array",
163
+
"description": "Located points for the `point` task. Null for other tasks.",
164
+
"items": {
165
+
"type": "object",
166
+
"properties": {
167
+
"x": {
168
+
"type": "number",
169
+
"description": "X coordinate."
170
+
},
171
+
"y": {
172
+
"type": "number",
173
+
"description": "Y coordinate."
174
+
}
175
+
},
176
+
"required": [
177
+
"x",
178
+
"y"
179
+
]
180
+
}
181
+
},
182
+
"objects": {
183
+
"type": "array",
184
+
"description": "Detected bounding boxes for the `detect` task. Null for other tasks.",
185
+
"items": {
186
+
"type": "object",
187
+
"properties": {
188
+
"x_min": {
189
+
"type": "number",
190
+
"description": "Minimum X coordinate."
191
+
},
192
+
"y_min": {
193
+
"type": "number",
194
+
"description": "Minimum Y coordinate."
195
+
},
196
+
"x_max": {
197
+
"type": "number",
198
+
"description": "Maximum X coordinate."
199
+
},
200
+
"y_max": {
201
+
"type": "number",
202
+
"description": "Maximum Y coordinate."
203
+
}
204
+
},
205
+
"required": [
206
+
"x_min",
207
+
"y_min",
208
+
"x_max",
209
+
"y_max"
210
+
]
211
+
}
212
+
},
213
+
"reasoning": {
214
+
"type": "object",
215
+
"description": "Reasoning trace for the `query` task when reasoning=true. Null otherwise.",
0 commit comments