Skip to content

Responses

Endpoint

POST https://llm.siraya.ai/v1/responses

Basic message

Use the OpenResponses API to generate text responses from AI models. The input array contains message objects with a role (user or assistant) and content field. The model processes the input and returns a response with the generated text.

Example request

import os
import requests
import json

url = "https://llm.siraya.ai/v1/responses"

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_KEY>",
}

data = {
    "model": "deepseek-v3.2",
    "input": [
        {
            "type": "message",
            "role": "user",
            "content": "Why do developers prefer dark mode?",
        }
    ],
}

response = requests.post(url, headers=headers, json=data)
result = response.json()

print(result)
const response = await fetch('https://llm.siraya.ai/v1/responses', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer <API_KEY>`,
  },
  body: JSON.stringify({
    model: 'deepseek-v3.2',
    input: [
      {
        type: 'message',
        role: 'user',
        content: 'Why do developers prefer dark mode?',
      },
    ],
  }),
});

const result = await response.json();

Response format

The response includes the generated text in the output array, along with token usage information.

{
  'id': 'resp_8798d36152fc4397984c97aa52015efd',
  'object': 'response',
  'created_at': 1774619524,
  'status': 'completed',
  'error': None,
  'incomplete_details': None,
  'instructions': None,
  'max_output_tokens': None,
  'model': 'deepseek-v3.2',
  'output': [
    {
      'type': 'message',
      'id': 'msg_1774619544978256361',
      'status': 'completed',
      'role': 'assistant',
      'content': [
        {
          'type': 'output_text',
          'text': 'Developers overwhelmingly prefer dark mode for several practical, aesthetic, and physiological reasons...'
        }
      ]
    }
  ],
  'usage': {
    'input_tokens': 11,
    'output_tokens': 705,
    'total_tokens': 716
  },
  'temperature': None,
  'top_p': None,
  'tool_choice': None,
  'tools': None,
  'metadata': None
}

Image Input

The OpenResponses API supports sending images alongside text for vision-capable models to analyze. Include an image_url object in your message content array with either a public URL or a base64-encoded data URI. The detail parameter controls the resolution used for analysis.

import os
import requests
import json

url = "https://llm.siraya.ai/v1/responses"

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_KEY>",
}

data = {
    "model": "gpt-4o-mini",
    "input": [
        {
            "type": "message",
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe this image in detail."},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg",
                        "detail": "auto"
                    },
                },
            ],
        },
    ],
}

response = requests.post(url, headers=headers, json=data)
result = response.json()

print(result)
const response = await fetch('https://llm.siraya.ai/v1/responses', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer <API_KEY>`,
  },
  body: JSON.stringify({
    model: 'gpt-4o-mini',
    input: [
      {
        type: 'message',
        role: 'user',
        content: [
          { type: 'text', text: 'Describe this image in detail.' },
          {
            type: 'image_url',
            image_url: { url: 'https://example.com/image.jpg', detail: 'auto' },
          },
        ],
      },
    ],
  }),
});

Base64-encoded images

You can also use base64-encoded images:

{
  type: 'image_url',
  image_url: {
    url: `data:image/png;base64,${imageBase64}`,
    detail: 'high',
  },
}

Detail parameter

The detail parameter controls image resolution:

  • auto - Let the model decide the appropriate resolution
  • low - Use lower resolution for faster processing
  • high - Use higher resolution for more detailed analysis

Compatible with Gemini series models

Example request

import os
import requests
import json

url = "https://llm.siraya.ai/v1/responses"

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_KEY>",
}

data = {
    "model": "gemini-2.5-pro",
    "input": [
        {
            "type": "message",
            "role": "user",
            "content": "Why do developers prefer dark mode?",
        }
    ],
}

response = requests.post(url, headers=headers, json=data)
result = response.json()

print(result)

Response format

{
  'id': 'resp_chatcmpl-vertexai-abcdefghijklmnopqrstuvwx',
  'object': 'response',
  'created_at': 1774707726,
  'status': 'completed',
  'error': None,
  'incomplete_details': None,
  'instructions': None,
  'max_output_tokens': None,
  'model': 'gemini-2.5-pro',
  'output': [
    {
      'type': 'message',
      'id': 'msg_1774707726658240006',
      'status': 'completed',
      'role': 'assistant',
      'content': [
        {
          'type': 'output_text',
          'text': 'That\'s an excellent and very common observation. Developers prefer dark mode for a mix of practical benefits, historical context, and personal preference...'
        }
      ]
    }
  ],
  'usage': {
    'input_tokens': 7,
    'output_tokens': 1373,
    'total_tokens': 1380,
    'output_tokens_details': {
      'reasoning_tokens': 70
    }
  },
  'temperature': None,
  'top_p': None,
  'tool_choice': None,
  'tools': None,
  'metadata': None
}

Compatible with Claude series models

Example request

import os
import requests
import json

url = "https://llm.siraya.ai/v1/responses"

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_KEY>",
}

data = {
    "model": "claude-sonnet-4.5",
    "input": [
        {
            "type": "message",
            "role": "user",
            "content": "Why do developers prefer dark mode?",
        }
    ],
}

response = requests.post(url, headers=headers, json=data)
result = response.json()

print(result)

Response format

{
  'id': 'resp_chatcmpl-bedrock-dZ9zDpYG2UNxTELmVNlk9j8M',
  'object': 'response',
  'created_at': 1774707822,
  'status': 'completed',
  'error': None,
  'incomplete_details': None,
  'instructions': None,
  'max_output_tokens': None,
  'model': 'claude-sonnet-4.5',
  'output': [
    {
      'type': 'message',
      'id': 'msg_1774707822273046033',
      'status': 'completed',
      'role': 'assistant',
      'content': [
        {
          'type': 'output_text',
          'text': 'Developers gravitate toward dark mode for several practical reasons: reduced eye strain, better focus with syntax highlighting, battery savings on OLED screens...'
        }
      ]
    }
  ],
  'usage': {
    'input_tokens': 14,
    'output_tokens': 279,
    'total_tokens': 293
  },
  'temperature': None,
  'top_p': None,
  'tool_choice': None,
  'tools': None,
  'metadata': None
}