Guides
Images
Models marked Images on Models (
"images": true in /v1/models) read screenshots, diagrams and photos alongside text: a UI bug, a whiteboard, an error dialog.OpenAI API#
Make the user message's content an array of parts, with an image_url part holding a public https URL or a base64 data URL.
import base64import osfrom openai import OpenAIclient = OpenAI(base_url="https://fullsendai.com/v1", api_key=os.environ["FULLSEND_API_KEY"])with open("screenshot.png", "rb") as file: image = base64.b64encode(file.read()).decode()reply = client.chat.completions.create( model="deepseek-v4.1-flash", messages=[{ "role": "user", "content": [ {"type": "text", "text": "Why is this button misaligned?"}, {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image}"}}, ], }],)print(reply.choices[0].message.content)Anthropic API#
Use an image block with a base64 or url source, as with Anthropic.
import base64import osimport anthropicclient = anthropic.Anthropic(base_url="https://fullsendai.com", api_key=os.environ["FULLSEND_API_KEY"])with open("screenshot.png", "rb") as file: image = base64.b64encode(file.read()).decode()message = client.messages.create( model="deepseek-v4.1-flash", max_tokens=1024, messages=[{ "role": "user", "content": [ {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": image}}, {"type": "text", "text": "Why is this button misaligned?"}, ], }],)Formats, size and cost#
- PNG and JPEG are the safe choices; other formats depend on the model. Send several images in one message by adding more parts.
- Images are input tokens, counted by the model, so a large screenshot costs more than a small one. The exact count is in
usage. Crop to what matters. - An image URL must be publicly reachable; for anything private, send base64.
- A model without image support refuses images with
400 invalid_request_error, or ignores them. Checkimagesin/v1/modelsfirst. - PDFs aren't read as documents. Extract the text, or send pages as images.
Stuck? Email [email protected]System statusChangelog