Zum Hauptinhalt springen
POST
/
v1
/
responses
curl https://api.apimart.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "model": "gpt-5.2-pro",
    "input": [
      {
        "role": "user",
        "content": [
          {
            "type": "input_text",
            "text": "What is in this image?"
          },
          {
            "type": "input_image",
            "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
          }
        ]
      }
    ]
  }'
import requests
import os

url = "https://api.apimart.ai/v1/responses"

payload = {
    "model": "gpt-5.2-pro",
    "input": [
        {
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "What is in this image?"
                },
                {
                    "type": "input_image",
                    "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                }
            ]
        }
    ]
}

headers = {
    "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = "https://api.apimart.ai/v1/responses";

const payload = {
  model: "gpt-5.2-pro",
  input: [
    {
      role: "user",
      content: [
        {
          type: "input_text",
          text: "What is in this image?"
        },
        {
          type: "input_image",
          image_url: "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        }
      ]
    }
  ]
};

const headers = {
  "Authorization": `Bearer ${process.env.OPENAI_API_KEY}`,
  "Content-Type": "application/json"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    url := "https://api.apimart.ai/v1/responses"

    payload := map[string]interface{}{
        "model": "gpt-5.2-pro",
        "input": []map[string]interface{}{
            {
                "role": "user",
                "content": []map[string]string{
                    {
                        "type": "input_text",
                        "text": "What is in this image?",
                    },
                    {
                        "type":      "input_image",
                        "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png",
                    },
                },
            },
        },
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("OPENAI_API_KEY"))
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://api.apimart.ai/v1/responses";
        String apiKey = System.getenv("OPENAI_API_KEY");

        String payload = """
        {
          "model": "gpt-5.2-pro",
          "input": [
            {
              "role": "user",
              "content": [
                {
                  "type": "input_text",
                  "text": "What is in this image?"
                },
                {
                  "type": "input_image",
                  "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                }
              ]
            }
          ]
        }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
<?php

$url = "https://api.apimart.ai/v1/responses";
$apiKey = getenv('OPENAI_API_KEY');

$payload = [
    "model" => "gpt-5.2-pro",
    "input" => [
        [
            "role" => "user",
            "content" => [
                [
                    "type" => "input_text",
                    "text" => "What is in this image?"
                ],
                [
                    "type" => "input_image",
                    "image_url" => "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                ]
            ]
        ]
    ]
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $apiKey,
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
require 'net/http'
require 'json'
require 'uri'

url = URI("https://api.apimart.ai/v1/responses")
api_key = ENV['OPENAI_API_KEY']

payload = {
  model: "gpt-5.2-pro",
  input: [
    {
      role: "user",
      content: [
        {
          type: "input_text",
          text: "What is in this image?"
        },
        {
          type: "input_image",
          image_url: "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        }
      ]
    }
  ]
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer #{api_key}"
request["Content-Type"] = "application/json"
request.body = payload.to_json

response = http.request(request)
puts response.body
import Foundation

let url = URL(string: "https://api.apimart.ai/v1/responses")!
let apiKey = ProcessInfo.processInfo.environment["OPENAI_API_KEY"] ?? ""

let payload: [String: Any] = [
    "model": "gpt-5.2-pro",
    "input": [
        [
            "role": "user",
            "content": [
                [
                    "type": "input_text",
                    "text": "What is in this image?"
                ],
                [
                    "type": "input_image",
                    "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                ]
            ]
        ]
    ]
]

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }

    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.apimart.ai/v1/responses";
        var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");

        var payload = @"{
            ""model"": ""gpt-5.2-pro"",
            ""input"": [
                {
                    ""role"": ""user"",
                    ""content"": [
                        {
                            ""type"": ""input_text"",
                            ""text"": ""What is in this image?""
                        },
                        {
                            ""type"": ""input_image"",
                            ""image_url"": ""https://openai-documentation.vercel.app/images/cat_and_otter.png""
                        }
                    ]
                }
            ]
        }";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

        var content = new StringContent(payload, Encoding.UTF8, "application/json");
        var response = await client.PostAsync(url, content);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>

int main(void) {
    CURL *curl;
    CURLcode res;
    const char *api_key = getenv("OPENAI_API_KEY");

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        const char *url = "https://api.apimart.ai/v1/responses";
        const char *payload = "{"
            "\"model\":\"gpt-5.2-pro\","
            "\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"What is in this image?\"},{\"type\":\"input_image\",\"image_url\":\"https://openai-documentation.vercel.app/images/cat_and_otter.png\"}]}]"
        "}";

        char auth_header[256];
        snprintf(auth_header, sizeof(auth_header), "Authorization: Bearer %s", api_key);

        struct curl_slist *headers = NULL;
        headers = curl_slist_append(headers, auth_header);
        headers = curl_slist_append(headers, "Content-Type: application/json");

        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

        res = curl_easy_perform(curl);

        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }

        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();
    return 0;
}
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/responses"];
        NSString *apiKey = [NSProcessInfo processInfo].environment[@"OPENAI_API_KEY"];

        NSDictionary *payload = @{
            @"model": @"gpt-5.2-pro",
            @"input": @[
                @{
                    @"role": @"user",
                    @"content": @[
                        @{
                            @"type": @"input_text",
                            @"text": @"What is in this image?"
                        },
                        @{
                            @"type": @"input_image",
                            @"image_url": @"https://openai-documentation.vercel.app/images/cat_and_otter.png"
                        }
                    ]
                }
            ]
        };

        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
                                                          options:0
                                                            error:&error];

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:[NSString stringWithFormat:@"Bearer %@", apiKey]
            forHTTPHeaderField:@"Authorization"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:jsonData];

        NSURLSessionDataTask *task = [[NSURLSession sharedSession]
            dataTaskWithRequest:request
            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                if (error) {
                    NSLog(@"Error: %@", error);
                    return;
                }
                NSString *result = [[NSString alloc] initWithData:data
                                                        encoding:NSUTF8StringEncoding];
                NSLog(@"%@", result);
            }];

        [task resume];
        [[NSRunLoop mainRunLoop] run];
    }
    return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix

let url = "https://api.apimart.ai/v1/responses"
let api_key = Sys.getenv "OPENAI_API_KEY"

let payload = {|{
  "model": "gpt-5.2-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "What is in this image?"
        },
        {
          "type": "input_image",
          "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        }
      ]
    }
  ]
}|}

let () =
  let headers = Header.init ()
    |> fun h -> Header.add h "Authorization" ("Bearer " ^ api_key)
    |> fun h -> Header.add h "Content-Type" "application/json"
  in
  let body = Cohttp_lwt.Body.of_string payload in

  let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
    body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
    print_endline body_str
  in
  Lwt_main.run response
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;

void main() async {
  final url = Uri.parse('https://api.apimart.ai/v1/responses');
  final apiKey = Platform.environment['OPENAI_API_KEY'];

  final payload = {
    'model': 'gpt-5.2-pro',
    'input': [
      {
        'role': 'user',
        'content': [
          {
            'type': 'input_text',
            'text': 'What is in this image?'
          },
          {
            'type': 'input_image',
            'image_url': 'https://openai-documentation.vercel.app/images/cat_and_otter.png'
          }
        ]
      }
    ]
  };

  final response = await http.post(
    url,
    headers: {
      'Authorization': 'Bearer $apiKey',
      'Content-Type': 'application/json',
    },
    body: jsonEncode(payload),
  );

  print(response.body);
}
library(httr)
library(jsonlite)

url <- "https://api.apimart.ai/v1/responses"
api_key <- Sys.getenv("OPENAI_API_KEY")

payload <- list(
  model = "gpt-5.2-pro",
  input = list(
    list(
      role = "user",
      content = list(
        list(
          type = "input_text",
          text = "What is in this image?"
        ),
        list(
          type = "input_image",
          image_url = "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        )
      )
    )
  )
)

response <- POST(
  url,
  add_headers(
    Authorization = paste("Bearer", api_key),
    `Content-Type` = "application/json"
  ),
  body = toJSON(payload, auto_unbox = TRUE),
  encode = "raw"
)

cat(content(response, "text"))
{
  "code": 200,
  "data": {
    "id": "resp-9876543210",
    "object": "response",
    "created": 1677652288,
    "model": "gpt-5.2-pro",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "This image shows a cat and an otter. They appear to be interacting with each other in a very cute and heartwarming scene. The cat and otter seem to be getting along well."
        },
        "finish_reason": "stop"
      }
    ],
    "usage": {
      "prompt_tokens": 156,
      "completion_tokens": 45,
      "total_tokens": 201
    }
  }
}
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient account balance, please top up and try again",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 403,
    "message": "Access forbidden, you do not have permission to access this resource",
    "type": "permission_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "Gateway error, server temporarily unavailable",
    "type": "bad_gateway"
  }
}
curl https://api.apimart.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "model": "gpt-5.2-pro",
    "input": [
      {
        "role": "user",
        "content": [
          {
            "type": "input_text",
            "text": "What is in this image?"
          },
          {
            "type": "input_image",
            "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
          }
        ]
      }
    ]
  }'
import requests
import os

url = "https://api.apimart.ai/v1/responses"

payload = {
    "model": "gpt-5.2-pro",
    "input": [
        {
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "What is in this image?"
                },
                {
                    "type": "input_image",
                    "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                }
            ]
        }
    ]
}

headers = {
    "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = "https://api.apimart.ai/v1/responses";

const payload = {
  model: "gpt-5.2-pro",
  input: [
    {
      role: "user",
      content: [
        {
          type: "input_text",
          text: "What is in this image?"
        },
        {
          type: "input_image",
          image_url: "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        }
      ]
    }
  ]
};

const headers = {
  "Authorization": `Bearer ${process.env.OPENAI_API_KEY}`,
  "Content-Type": "application/json"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    url := "https://api.apimart.ai/v1/responses"

    payload := map[string]interface{}{
        "model": "gpt-5.2-pro",
        "input": []map[string]interface{}{
            {
                "role": "user",
                "content": []map[string]string{
                    {
                        "type": "input_text",
                        "text": "What is in this image?",
                    },
                    {
                        "type":      "input_image",
                        "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png",
                    },
                },
            },
        },
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("OPENAI_API_KEY"))
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://api.apimart.ai/v1/responses";
        String apiKey = System.getenv("OPENAI_API_KEY");

        String payload = """
        {
          "model": "gpt-5.2-pro",
          "input": [
            {
              "role": "user",
              "content": [
                {
                  "type": "input_text",
                  "text": "What is in this image?"
                },
                {
                  "type": "input_image",
                  "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                }
              ]
            }
          ]
        }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
<?php

$url = "https://api.apimart.ai/v1/responses";
$apiKey = getenv('OPENAI_API_KEY');

$payload = [
    "model" => "gpt-5.2-pro",
    "input" => [
        [
            "role" => "user",
            "content" => [
                [
                    "type" => "input_text",
                    "text" => "What is in this image?"
                ],
                [
                    "type" => "input_image",
                    "image_url" => "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                ]
            ]
        ]
    ]
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $apiKey,
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
require 'net/http'
require 'json'
require 'uri'

url = URI("https://api.apimart.ai/v1/responses")
api_key = ENV['OPENAI_API_KEY']

payload = {
  model: "gpt-5.2-pro",
  input: [
    {
      role: "user",
      content: [
        {
          type: "input_text",
          text: "What is in this image?"
        },
        {
          type: "input_image",
          image_url: "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        }
      ]
    }
  ]
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer #{api_key}"
request["Content-Type"] = "application/json"
request.body = payload.to_json

response = http.request(request)
puts response.body
import Foundation

let url = URL(string: "https://api.apimart.ai/v1/responses")!
let apiKey = ProcessInfo.processInfo.environment["OPENAI_API_KEY"] ?? ""

let payload: [String: Any] = [
    "model": "gpt-5.2-pro",
    "input": [
        [
            "role": "user",
            "content": [
                [
                    "type": "input_text",
                    "text": "What is in this image?"
                ],
                [
                    "type": "input_image",
                    "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
                ]
            ]
        ]
    ]
]

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }

    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.apimart.ai/v1/responses";
        var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");

        var payload = @"{
            ""model"": ""gpt-5.2-pro"",
            ""input"": [
                {
                    ""role"": ""user"",
                    ""content"": [
                        {
                            ""type"": ""input_text"",
                            ""text"": ""What is in this image?""
                        },
                        {
                            ""type"": ""input_image"",
                            ""image_url"": ""https://openai-documentation.vercel.app/images/cat_and_otter.png""
                        }
                    ]
                }
            ]
        }";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

        var content = new StringContent(payload, Encoding.UTF8, "application/json");
        var response = await client.PostAsync(url, content);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>

int main(void) {
    CURL *curl;
    CURLcode res;
    const char *api_key = getenv("OPENAI_API_KEY");

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        const char *url = "https://api.apimart.ai/v1/responses";
        const char *payload = "{"
            "\"model\":\"gpt-5.2-pro\","
            "\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"What is in this image?\"},{\"type\":\"input_image\",\"image_url\":\"https://openai-documentation.vercel.app/images/cat_and_otter.png\"}]}]"
        "}";

        char auth_header[256];
        snprintf(auth_header, sizeof(auth_header), "Authorization: Bearer %s", api_key);

        struct curl_slist *headers = NULL;
        headers = curl_slist_append(headers, auth_header);
        headers = curl_slist_append(headers, "Content-Type: application/json");

        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

        res = curl_easy_perform(curl);

        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }

        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();
    return 0;
}
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/responses"];
        NSString *apiKey = [NSProcessInfo processInfo].environment[@"OPENAI_API_KEY"];

        NSDictionary *payload = @{
            @"model": @"gpt-5.2-pro",
            @"input": @[
                @{
                    @"role": @"user",
                    @"content": @[
                        @{
                            @"type": @"input_text",
                            @"text": @"What is in this image?"
                        },
                        @{
                            @"type": @"input_image",
                            @"image_url": @"https://openai-documentation.vercel.app/images/cat_and_otter.png"
                        }
                    ]
                }
            ]
        };

        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
                                                          options:0
                                                            error:&error];

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:[NSString stringWithFormat:@"Bearer %@", apiKey]
            forHTTPHeaderField:@"Authorization"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:jsonData];

        NSURLSessionDataTask *task = [[NSURLSession sharedSession]
            dataTaskWithRequest:request
            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                if (error) {
                    NSLog(@"Error: %@", error);
                    return;
                }
                NSString *result = [[NSString alloc] initWithData:data
                                                        encoding:NSUTF8StringEncoding];
                NSLog(@"%@", result);
            }];

        [task resume];
        [[NSRunLoop mainRunLoop] run];
    }
    return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix

let url = "https://api.apimart.ai/v1/responses"
let api_key = Sys.getenv "OPENAI_API_KEY"

let payload = {|{
  "model": "gpt-5.2-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "What is in this image?"
        },
        {
          "type": "input_image",
          "image_url": "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        }
      ]
    }
  ]
}|}

let () =
  let headers = Header.init ()
    |> fun h -> Header.add h "Authorization" ("Bearer " ^ api_key)
    |> fun h -> Header.add h "Content-Type" "application/json"
  in
  let body = Cohttp_lwt.Body.of_string payload in

  let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
    body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
    print_endline body_str
  in
  Lwt_main.run response
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;

void main() async {
  final url = Uri.parse('https://api.apimart.ai/v1/responses');
  final apiKey = Platform.environment['OPENAI_API_KEY'];

  final payload = {
    'model': 'gpt-5.2-pro',
    'input': [
      {
        'role': 'user',
        'content': [
          {
            'type': 'input_text',
            'text': 'What is in this image?'
          },
          {
            'type': 'input_image',
            'image_url': 'https://openai-documentation.vercel.app/images/cat_and_otter.png'
          }
        ]
      }
    ]
  };

  final response = await http.post(
    url,
    headers: {
      'Authorization': 'Bearer $apiKey',
      'Content-Type': 'application/json',
    },
    body: jsonEncode(payload),
  );

  print(response.body);
}
library(httr)
library(jsonlite)

url <- "https://api.apimart.ai/v1/responses"
api_key <- Sys.getenv("OPENAI_API_KEY")

payload <- list(
  model = "gpt-5.2-pro",
  input = list(
    list(
      role = "user",
      content = list(
        list(
          type = "input_text",
          text = "What is in this image?"
        ),
        list(
          type = "input_image",
          image_url = "https://openai-documentation.vercel.app/images/cat_and_otter.png"
        )
      )
    )
  )
)

response <- POST(
  url,
  add_headers(
    Authorization = paste("Bearer", api_key),
    `Content-Type` = "application/json"
  ),
  body = toJSON(payload, auto_unbox = TRUE),
  encode = "raw"
)

cat(content(response, "text"))
{
  "code": 200,
  "data": {
    "id": "resp-9876543210",
    "object": "response",
    "created": 1677652288,
    "model": "gpt-5.2-pro",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "This image shows a cat and an otter. They appear to be interacting with each other in a very cute and heartwarming scene. The cat and otter seem to be getting along well."
        },
        "finish_reason": "stop"
      }
    ],
    "usage": {
      "prompt_tokens": 156,
      "completion_tokens": 45,
      "total_tokens": 201
    }
  }
}
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient account balance, please top up and try again",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 403,
    "message": "Access forbidden, you do not have permission to access this resource",
    "type": "permission_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "Gateway error, server temporarily unavailable",
    "type": "bad_gateway"
  }
}

Autorisierung

Authorization
string
erforderlich
##Alle APIs erfordern eine Bearer-Token-Authentifizierung##API-Key erhalten:Besuchen Sie die Seite zur API-Key-Verwaltung, um Ihren API-Key zu erhaltenIm Anfrage-Header hinzufügen:
Authorization: Bearer YOUR_API_KEY

Body

model
string
Standard:"gpt-5.2-pro"
erforderlich
ModellnameUnterstützte Modelle umfassen:
  • gpt-5.2-pro
  • gpt-5.2-codex
  • Weitere Modelle folgen in Kürze …
input
array
erforderlich
Liste der EingabeinhalteEingabe-Array, jedes Element enthält die Felder role und content.💡 Schnellausfüllen (Try-it-Bereich):
  1. Klicken Sie auf „+ Add an item”, um ein Eingabeelement hinzuzufügen
  2. Eingabe role: user (Benutzernachricht), assistant (KI-Antwort) oder system (Systemanweisung)
  3. content Content-Blöcke hinzufügen (kann Text und Bilder enthalten)
temperature
number
Steuert die Zufälligkeit der Ausgabe, Bereich 0–2
  • Niedrigere Werte (z. B. 0.2) führen zu deterministischerer Ausgabe
  • Höhere Werte (z. B. 1.8) führen zu zufälligerer Ausgabe
Standard: 1.0
max_tokens
integer
Maximale Anzahl der zu generierenden TokensVerschiedene Modelle haben unterschiedliche maximale Grenzwerte, bitte beachten Sie die jeweilige Modelldokumentation
stream
boolean
Ob Streaming-Ausgabe verwendet werden soll
  • true: Streaming-Antwort (SSE-Format)
  • false: vollständige Antwort auf einmal zurückgeben
Standard: false
top_p
number
Nucleus-Sampling-Parameter, Bereich 0–1Steuert die Vielfalt des generierten Texts, empfohlen als Alternative zu temperatureStandard: 1.0
tools
array
Tool-Liste zur Erweiterung der ModellfähigkeitenUnterstützte Tool-Typen:
  • Websuche (web_search): Echtzeit-Suche nach Internet-Informationen
  • Dateisuche (file_search): Suche im Inhalt hochgeladener Dateien
  • Function Calling (function): Aufruf benutzerdefinierter Funktionen
  • Remote MCP (remote_mcp): Verbindung zu Remote-Diensten des Model Context Protocol
Beispiel: [{"type": "web_search"}]

Response

id
string
Eindeutiger Identifikator der Antwort
object
string
Objekttyp, fest response
created
integer
Zeitstempel der Erstellung
model
string
Der tatsächlich verwendete Modellname
choices
array
Liste der generierten Antworten
usage
object
Statistik zur Token-Nutzung

Anwendungsbeispiele

Nur-Text-Eingabe

{
  "model": "gpt-5.2-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Hello, introduce artificial intelligence"
        }
      ]
    }
  ]
}

Verwendung des Websuche-Tools

{
  "model": "gpt-5.2-pro",
  "tools": [{"type": "web_search"}],
  "input": "What positive news is there today?"
}
cURL Example
curl "https://api.apimart.ai/v1/responses" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <token>" \
    -d '{
        "model": "gpt-5.2-pro",
        "tools": [{"type": "web_search"}],
        "input": "What positive news is there today?"
    }'

Bildverständnis

{
  "model": "gpt-5.2-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Describe this image"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/image.jpg"
        }
      ]
    }
  ]
}

Analyse mehrerer Bilder

{
  "model": "gpt-5.2-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Compare the similarities and differences of these two images"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/image1.jpg"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/image2.jpg"
        }
      ]
    }
  ]
}

Base64-codiertes Bild

{
  "model": "gpt-5.2-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Analyze this image"
        },
        {
          "type": "input_image",
          "image_url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
        }
      ]
    }
  ]
}

Verwendung des Dateisuche-Tools

{
  "model": "gpt-5.2-pro",
  "tools": [{"type": "file_search"}],
  "input": "Based on uploaded documents, summarize the company's quarterly performance"
}

Verwendung von Function Calling

{
  "model": "gpt-5.2-pro",
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get weather information for a specified city",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "City name, e.g.: Beijing"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"],
              "description": "Temperature unit"
            }
          },
          "required": ["city"]
        }
      }
    }
  ],
  "input": "What's the weather like in Beijing today?"
}

Verwendung von Remote MCP

{
  "model": "gpt-5.2-pro",
  "tools": [
    {
      "type": "remote_mcp",
      "remote_mcp": {
        "url": "https://mcp.example.com/api",
        "auth_token": "your_mcp_token"
      }
    }
  ],
  "input": "Query user information in the database"
}

Kombination mehrerer Tools

{
  "model": "gpt-5.2-pro",
  "tools": [
    {"type": "web_search"},
    {"type": "file_search"},
    {
      "type": "function",
      "function": {
        "name": "calculate",
        "description": "Perform mathematical calculations",
        "parameters": {
          "type": "object",
          "properties": {
            "expression": {
              "type": "string",
              "description": "Mathematical expression"
            }
          },
          "required": ["expression"]
        }
      }
    }
  ],
  "input": "Search for the latest Bitcoin price and calculate the total value of 100 Bitcoins"
}

Spezifikationen der Content-Typen

input_text

Texteingabe-Typ Eigenschaften:
  • type: fest "input_text"
  • text: Textinhalt (String)

input_image

Bildeingabe-Typ Eigenschaften:
  • type: fest "input_image"
  • image_url: Bild-URL oder Base64-codiertes Data-URI
Unterstützte Bildformate:
  • JPEG
  • PNG
  • GIF
  • WebP
Größenbeschränkungen für Bilder:
  • Maximale Dateigröße: 20 MB
  • Empfohlenes Seitenverhältnis: nicht mehr als 2048x2048 Pixel

Details zur Tool-Nutzung

Websuche

Das Websuche-Tool ermöglicht es dem Modell, in Echtzeit auf Internet-Informationen zuzugreifen. Konfigurationsbeispiel:
{
  "tools": [{"type": "web_search"}]
}
Anwendungsfälle:
  • Abruf der neuesten Nachrichten und aktuellen Ereignisse
  • Echtzeit-Daten erhalten (Aktien, Wetter, Wechselkurse usw.)
  • Suche nach aktueller technischer Dokumentation
  • Überprüfung von Faktinformationen

Dateisuche

Das Dateisuche-Tool ermöglicht es dem Modell, relevante Informationen in hochgeladenen Dokumenten zu suchen. Konfigurationsbeispiel:
{
  "tools": [{"type": "file_search"}]
}
Anwendungsfälle:
  • Analyse interner Unternehmensdokumente
  • Suche in technischen Spezifikationen und Handbüchern
  • Abfragen zu Verträgen und Rechtsdokumenten
  • Q&A-Systeme auf Wissensbasis

Function Calling

Definieren Sie benutzerdefinierte Funktionen, damit das Modell externe APIs aufrufen oder bestimmte Operationen ausführen kann. Vollständiges Konfigurationsbeispiel:
{
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_stock_price",
        "description": "Get real-time stock price",
        "parameters": {
          "type": "object",
          "properties": {
            "symbol": {
              "type": "string",
              "description": "Stock symbol, e.g.: AAPL"
            },
            "currency": {
              "type": "string",
              "enum": ["USD", "CNY"],
              "description": "Currency unit",
              "default": "USD"
            }
          },
          "required": ["symbol"]
        }
      }
    }
  ]
}
Parameterbeschreibungen:
  • name: Funktionsname (erforderlich)
  • description: Funktionsbeschreibung (erforderlich)
  • parameters: Parameterdefinition im JSON-Schema-Format
    • type: Parametertyp
    • properties: Definitionen der Parametereigenschaften
    • required: Liste der erforderlichen Parameter
Anwendungsfälle:
  • Aufruf von Drittanbieter-APIs
  • Ausführen von Datenbankabfragen
  • Auslösen von Geschäftsprozessen
  • Integration mit internen Systemen

Remote MCP

Verbindung zu Remote-Diensten des Model Context Protocol (MCP) zur Erweiterung der Modellfähigkeiten. Konfigurationsbeispiel:
{
  "tools": [
    {
      "type": "remote_mcp",
      "remote_mcp": {
        "url": "https://your-mcp-server.com/api",
        "auth_token": "your_auth_token",
        "timeout": 30
      }
    }
  ]
}
Parameterbeschreibungen:
  • url: MCP-Serveradresse (erforderlich)
  • auth_token: Authentifizierungs-Token (optional)
  • timeout: Timeout in Sekunden, Standard 30 Sekunden
Anwendungsfälle:
  • Verbindung zu KI-Diensten auf Enterprise-Ebene
  • Verwendung domänenspezifischer Modelle
  • Zugriff auf geschützte Datenquellen
  • Integration verteilter KI-Systeme

Antwortformat bei Tool-Nutzung

Wenn das Modell Tools verwendet, enthält das Antwortformat Informationen zum Tool-Aufruf:
{
  "id": "resp-123456",
  "object": "response",
  "created": 1677652288,
  "model": "gpt-5.2-pro",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"city\": \"Beijing\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ]
}
Ablauf eines Tool-Aufrufs:
  1. Modell erhält Benutzereingabe
  2. Analysiert, ob Tools benötigt werden
  3. Falls ja, gibt eine Tool-Aufrufanforderung zurück
  4. Client führt den Tool-Aufruf aus
  5. Gibt die Tool-Ergebnisse an das Modell zurück
  6. Modell generiert die endgültige Antwort

Wichtige Hinweise

  1. Anforderungen an Bild-URLs:
    • Muss eine öffentlich zugängliche URL sein
    • Oder im Base64-codierten Data-URI-Format
  2. Token-Abrechnung:
    • Bilder verbrauchen Tokens entsprechend ihrer Auflösung
    • Bilder mit hoher Auflösung werden automatisch verkleinert, um Kosten zu optimieren
    • Tool-Aufrufe verbrauchen ebenfalls zusätzliche Tokens
  3. Reihenfolge des Inhalts:
    • Die Reihenfolge der Elemente im content-Array beeinflusst das Verständnis des Modells
    • Empfohlen, Textanweisungen zuerst zu platzieren, dann Bilder
  4. Multimodale Kombinationen:
    • In einer Anfrage können mehrere Texte und Bilder gemischt werden
    • Mehrfach-Dialoge mit Kontext-Kohärenz werden unterstützt
  5. Einschränkungen der Tool-Nutzung:
    • Bei gleichzeitiger Verwendung mehrerer Tools wählt das Modell intelligent das am besten geeignete Tool aus
    • Function Calling erfordert klare Funktionsdefinitionen und Parameterbeschreibungen
    • Ergebnisse der Websuche können regional und zeitlich begrenzt sein
  6. API-Kompatibilität:
    • Vollständig kompatibel mit dem Format der OpenAI Responses API
    • Nahtlose Migration bestehenden OpenAI-Codes
    • Unterstützt alle Tool-Erweiterungsfunktionen von OpenAI