Chat with Image Models
Have intelligent conversations about images using advanced AI vision models. Upload images and engage in natural language discussions about their content, analyze visual elements, extract information, and get detailed descriptions through an interactive chat interface.
Before using this API, you must first upload your image using the Asset API. The imageList parameter should contain the file path returned from the Asset API upload response.
📖 See Asset API documentation for details on how to upload images.
Available Models
Getting Started
To chat with images, you have two options:
Option 1: Simple Chat (No Conversation History)
- Upload Images: Use the Asset API to upload your images and get image keys
- Send Message: Make a request with
conversationId: nullfor simple chat without history - Get Response: Receive AI response without maintaining conversation history
Option 2: Maintain Conversation History
- Upload Images: Use the Asset API to upload your images and get image keys
- Create Conversation: Use the Conversation API to create a conversation and get a
uuid - Start Chatting: Use the
uuidasconversationIdin your feature requests to ask questions about the images - Continue Chat: Send follow-up messages with the same
conversationIdto maintain context
Request Parameters
All models share the same request structure:
| Field Name | Type | Supported Value | Description | Required |
|---|---|---|---|---|
| type | text | CHAT_WITH_IMAGE | Feature identifier | ✔️ |
| model | text | See available models | AI model to use | ✔️ |
| conversationId | string/null | UUID from conversation API or null | Conversation UUID obtained from /api/conversations for maintaining context, or null for simple chat without history | ✔️ |
| promptObject.prompt | string | What do you see in this image? | Your message or question | ✔️ |
| promptObject.imageList | array | ["image1.jpg", "image2.png"] | Array of uploaded image keys | ✔️ |
| promptObject.isMixed | boolean | false | Enable mixed conversation mode | ✖️ |
| promptObject.webSearch | boolean | false | Enable web search for enhanced responses | ✖️ |
| promptObject.numOfSite | number | 5 | Number of sites to search (if webSearch enabled) | ✖️ |
| promptObject.maxWord | number | 1000 | Max words per site (if webSearch enabled) | ✖️ |
Parameter Details
imageList: Array of image keys obtained from uploading images via the Asset API. Images should be in PNG, JPEG, or WebP format.
conversationId: Unique identifier for the conversation. Use a UUID from the Conversation API to maintain context across multiple exchanges, or set to null for simple single-message chat without history.
isMixed: When enabled, allows mixing different models within the same conversation thread.
webSearch: Enables real-time web search to enhance responses with current information related to the image content.
API Reference
Simple Chat (No History)
Chat with History
Step 1: Create Conversation
Step 2: Chat with Images
Request Headers
| Field | Value |
|---|---|
| API-KEY | <api-key> |
| Content-Type | application/json |
Code Examples
- Simple Chat (No History)
- cURL - Step 1: Create Conversation
- cURL - Step 2: Chat with Images
- JavaScript
- Python
curl --location 'https://api.1min.ai/api/features' \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"type": "CHAT_WITH_IMAGE",
"model": "gpt-4o",
"conversationId": null,
"promptObject": {
"prompt": "What do you see in this image? Please describe the scene in detail.",
"imageList": ["uploads/images/photo-123.jpg"],
"isMixed": false,
"webSearch": false,
"numOfSite": 3,
"maxWord": 500
}
}'
curl --location 'https://api.1min.ai/api/conversations' \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"type": "CHAT_WITH_IMAGE",
"title": "My Image Analysis Chat",
"model": "gpt-4o"
}'
curl --location 'https://api.1min.ai/api/features' \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"type": "CHAT_WITH_IMAGE",
"model": "gpt-4o",
"conversationId": "<conversation-uuid-from-step-1>",
"promptObject": {
"prompt": "What do you see in this image? Please describe the scene in detail.",
"imageList": ["uploads/images/photo-123.jpg"],
"isMixed": false,
"webSearch": false,
"numOfSite": 3,
"maxWord": 500
}
}'
// Option 1: Simple chat (no history)
const simpleResponse = await fetch('https://api.1min.ai/api/features', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'API-KEY': 'YOUR_API_KEY'
},
body: JSON.stringify({
type: 'CHAT_WITH_IMAGE',
model: 'gpt-4o',
conversationId: null,
promptObject: {
prompt: 'What do you see in this image? Please describe the scene in detail.',
imageList: ['uploads/images/photo-123.jpg'],
isMixed: false,
webSearch: false,
numOfSite: 3,
maxWord: 500
}
})
});
// Option 2: Chat with history
// Step 1: Create conversation
const createConversation = await fetch('https://api.1min.ai/api/conversations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'API-KEY': 'YOUR_API_KEY'
},
body: JSON.stringify({
type: 'CHAT_WITH_IMAGE',
title: 'My Image Analysis Chat',
model: 'gpt-4o'
})
});
const conversation = await createConversation.json();
const conversationId = conversation.uuid;
// Step 2: Chat with images
const chatResponse = await fetch('https://api.1min.ai/api/features', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'API-KEY': 'YOUR_API_KEY'
},
body: JSON.stringify({
type: 'CHAT_WITH_IMAGE',
model: 'gpt-4o',
conversationId: conversationId,
promptObject: {
prompt: 'What do you see in this image? Please describe the scene in detail.',
imageList: ['uploads/images/photo-123.jpg'],
isMixed: false,
webSearch: false,
numOfSite: 3,
maxWord: 500
}
})
});
import requests
# Option 1: Simple chat (no history)
simple_response = requests.post(
'https://api.1min.ai/api/features',
headers={
'Content-Type': 'application/json',
'API-KEY': 'YOUR_API_KEY'
},
json={
'type': 'CHAT_WITH_IMAGE',
'model': 'gpt-4o',
'conversationId': None,
'promptObject': {
'prompt': 'What do you see in this image? Please describe the scene in detail.',
'imageList': ['uploads/images/photo-123.jpg'],
'isMixed': False,
'webSearch': False,
'numOfSite': 3,
'maxWord': 500
}
}
)
# Option 2: Chat with history
# Step 1: Create conversation
conversation_response = requests.post(
'https://api.1min.ai/api/conversations',
headers={
'Content-Type': 'application/json',
'API-KEY': 'YOUR_API_KEY'
},
json={
'type': 'CHAT_WITH_IMAGE',
'title': 'My Image Analysis Chat',
'model': 'gpt-4o'
}
)
conversation = conversation_response.json()
conversation_id = conversation['uuid']
# Step 2: Chat with images
chat_response = requests.post(
'https://api.1min.ai/api/features',
headers={
'Content-Type': 'application/json',
'API-KEY': 'YOUR_API_KEY'
},
json={
'type': 'CHAT_WITH_IMAGE',
'model': 'gpt-4o',
'conversationId': conversation_id,
'promptObject': {
'prompt': 'What do you see in this image? Please describe the scene in detail.',
'imageList': ['uploads/images/photo-123.jpg'],
'isMixed': False,
'webSearch': False,
'numOfSite': 3,
'maxWord': 500
}
}
)
Interactive Playground
Example: Simple Chat (No History)
Try the API directly for simple image questions:
Example: Step 1 - Create Conversation (For History)
First, create a conversation to maintain chat history:
The response will include a uuid field. Use this as the conversationId in the next step.
Example: Step 2 - Chat with Images
Use the conversationId from the previous step to ask questions:
Response Format
{
"aiRecord": {
"uuid": "751bf89f-fc12-4678-98fe-b11f5ae1da82",
"userId": "c937fbcc-fa8f-4565-a440-c4d87f56fcb2",
"teamId": "a4e176b2-dabb-451e-9c58-62b451fa9630",
"teamUser": {
"teamId": "a4e176b2-dabb-451e-9c58-62b451fa9630",
"userId": "c937fbcc-fa8f-4565-a440-c4d87f56fcb2",
"userName": "John Doe",
"userAvatar": "https://lh3.googleusercontent.com/a/ACg8ocLqgsNsHRfmWF9d-E1RvJetVsEzxNOsOg-NXWNTpMxLDPJbwELI=s96-c",
"status": "ACTIVE",
"role": "ADMIN",
"creditLimit": 100000000,
"usedCredit": 449667,
"createdAt": "2025-10-20T04:13:40.847Z",
"createdBy": "SYSTEM",
"updatedAt": "2025-10-23T04:31:10.711Z",
"updatedBy": "SYSTEM"
},
"model": "gpt-4o",
"type": "CHAT_WITH_IMAGE",
"metadata": null,
"rating": null,
"feedback": null,
"conversationId": null,
"status": "SUCCESS",
"createdAt": "2025-10-23T04:33:06.915Z",
"aiRecordDetail": {
"promptObject": {
"prompt": "What do you see in this image? Please describe the scene in detail.",
"isMixed": false,
"maxWord": 500,
"imageList": [
"development/images/2025_10_23_10_38_16_045_cat.png",
"development/images/2025_10_23_10_38_16_045_cat.png"
],
"numOfSite": 3,
"webSearch": false
},
"resultObject": [
"The image depicts a fluffy orange cat sitting on a wooden floor in a sunlit room. The cat has long hair and is looking directly at the viewer. Sunlight is streaming in through large windows, creating a warm and inviting atmosphere. There are a few green plants in the background, adding to the cozy, natural setting. The overall mood is calm and peaceful."
],
"responseObject": {}
},
"additionalData": null,
"temporaryUrl": ""
}
}
Conversation Examples
Basic Image Description
{
"type": "CHAT_WITH_IMAGE",
"model": "gpt-4o",
"conversationId": null,
"promptObject": {
"prompt": "Describe this image in detail",
"imageList": ["landscape-photo.jpg"]
}
}
Multiple Images Comparison
{
"type": "CHAT_WITH_IMAGE",
"model": "gpt-4o",
"conversationId": "comparison-session-uuid",
"promptObject": {
"prompt": "Compare these two images and tell me the differences",
"imageList": ["image1.jpg", "image2.jpg"]
}
}
Enhanced with Web Search
{
"type": "CHAT_WITH_IMAGE",
"model": "gpt-4o",
"conversationId": "research-session-uuid",
"promptObject": {
"prompt": "What building is this and what's its historical significance?",
"imageList": ["building-photo.jpg"],
"webSearch": true,
"numOfSite": 5,
"maxWord": 1000
}
}
Best Practices
- Image Quality: Use clear, high-resolution images for better analysis results
- Specific Questions: Ask specific questions to get more detailed and relevant responses
- Context: Provide context about what you're looking for in the image
- Conversation Flow: Use the same conversationId to maintain context across multiple exchanges
- Model Selection: Choose models based on your needs:
- GPT-4o: Best overall performance for detailed analysis
- Gemini: Excellent for large context and multiple images
- Claude: Great for creative and detailed descriptions
- Mini models: Cost-effective for simple questions
Error Handling
Common error scenarios:
- Invalid image format: Ensure images are in PNG, JPEG, or WebP format
- Image too large: Resize images if they exceed size limits
- Missing images: Verify that imageList contains valid uploaded image keys
- Model limitations: Some models may have specific image size or format requirements
Authentication
This endpoint requires an API key to be provided in the API-KEY header.