ChatCompletions格式

根据对话历史创建模型响应。支持流式和非流式响应。

兼容 OpenAI Chat Completions API。

POST/v1/chat/completions

ChatCompletions格式

根据对话历史创建模型响应。支持流式和非流式响应。 兼容 OpenAI Chat Completions API。

鉴权: 使用 Bearer Token 认证。 格式: `Authorization: Bearer sk-xxxxxx`

请求体

必填

Content-Type: application/json

字段类型必填说明
modelstring是模型 ID
示例: "gpt-4"
messagesarray<object>是对话消息列表
[]object
rolestring是消息角色
可选值: system, user, assistant, tool, developer
contentstring | array<object>是消息内容
[]object
typestring可选值: text, image_url, input_audio, file, video_url
textstring
image_urlobject
urlstring图片 URL 或 base64
detailstring可选值: low, high, auto
input_audioobject
datastringBase64 编码的音频数据
formatstring可选值: wav, mp3
fileobject
filenamestring
file_datastring
file_idstring
video_urlobject
urlstring
namestring发送者名称
tool_callsarray<object>
[]object
idstring
typestring示例: "function"
functionobject
namestring
argumentsstring
tool_call_idstring工具调用 ID(用于 tool 角色消息)
reasoning_contentstring推理内容
temperaturenumber采样温度
默认: 1
top_pnumber核采样参数
默认: 1
ninteger生成数量
默认: 1
streamboolean是否流式响应
默认: false
stream_optionsobject
include_usageboolean
stopstring | array<string>停止序列
[]string
max_tokensinteger最大生成 Token 数
max_completion_tokensinteger最大补全 Token 数
presence_penaltynumber默认: 0
frequency_penaltynumber默认: 0
logit_biasobject
userstring
toolsarray<object>
[]object
typestring示例: "function"
functionobject
namestring
descriptionstring
parametersobjectJSON Schema 格式的参数定义
tool_choicestring | object
typestring
functionobject
namestring
response_formatobject
typestring可选值: text, json_object, json_schema
json_schemaobjectJSON Schema 定义
seedinteger
reasoning_effortstring推理强度 (用于支持推理的模型)
可选值: low, medium, high
modalitiesarray<string>
[]string可选值: text, audio
audioobject
voicestring
formatstring

示例代码

curl -X POST "https://api.nodeprice.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
  "model": "string",
  "messages": [
    {
      "role": "system",
      "content": "string",
      "name": "string",
      "tool_calls": [
        {
          "id": "string",
          "type": "string",
          "function": {
            "name": "string",
            "arguments": "string"
          }
        }
      ],
      "tool_call_id": "string",
      "reasoning_content": "string"
    }
  ],
  "temperature": 1,
  "top_p": 1,
  "n": 1,
  "stream": false,
  "stream_options": {
    "include_usage": false
  },
  "stop": "string",
  "max_tokens": 0,
  "max_completion_tokens": 0,
  "presence_penalty": 0,
  "frequency_penalty": 0,
  "logit_bias": {},
  "user": "string",
  "tools": [
    {
      "type": "string",
      "function": {
        "name": "string",
        "description": "string",
        "parameters": {}
      }
    }
  ],
  "tool_choice": "none",
  "response_format": {
    "type": "text",
    "json_schema": {}
  },
  "seed": 0,
  "reasoning_effort": "low",
  "modalities": [
    "text"
  ],
  "audio": {
    "voice": "string",
    "format": "string"
  }
}'
const url = "https://api.nodeprice.com/v1/chat/completions";
const body = {
  "model": "string",
  "messages": [
    {
      "role": "system",
      "content": "string",
      "name": "string",
      "tool_calls": [
        {
          "id": "string",
          "type": "string",
          "function": {
            "name": "string",
            "arguments": "string"
          }
        }
      ],
      "tool_call_id": "string",
      "reasoning_content": "string"
    }
  ],
  "temperature": 1,
  "top_p": 1,
  "n": 1,
  "stream": false,
  "stream_options": {
    "include_usage": false
  },
  "stop": "string",
  "max_tokens": 0,
  "max_completion_tokens": 0,
  "presence_penalty": 0,
  "frequency_penalty": 0,
  "logit_bias": {},
  "user": "string",
  "tools": [
    {
      "type": "string",
      "function": {
        "name": "string",
        "description": "string",
        "parameters": {}
      }
    }
  ],
  "tool_choice": "none",
  "response_format": {
    "type": "text",
    "json_schema": {}
  },
  "seed": 0,
  "reasoning_effort": "low",
  "modalities": [
    "text"
  ],
  "audio": {
    "voice": "string",
    "format": "string"
  }
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer <token>"
  },
  body: JSON.stringify(body)
});

console.log(await response.text());
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	url := "https://api.nodeprice.com/v1/chat/completions"
	body := strings.NewReader(`{
  "model": "string",
  "messages": [
    {
      "role": "system",
      "content": "string",
      "name": "string",
      "tool_calls": [
        {
          "id": "string",
          "type": "string",
          "function": {
            "name": "string",
            "arguments": "string"
          }
        }
      ],
      "tool_call_id": "string",
      "reasoning_content": "string"
    }
  ],
  "temperature": 1,
  "top_p": 1,
  "n": 1,
  "stream": false,
  "stream_options": {
    "include_usage": false
  },
  "stop": "string",
  "max_tokens": 0,
  "max_completion_tokens": 0,
  "presence_penalty": 0,
  "frequency_penalty": 0,
  "logit_bias": {},
  "user": "string",
  "tools": [
    {
      "type": "string",
      "function": {
        "name": "string",
        "description": "string",
        "parameters": {}
      }
    }
  ],
  "tool_choice": "none",
  "response_format": {
    "type": "text",
    "json_schema": {}
  },
  "seed": 0,
  "reasoning_effort": "low",
  "modalities": [
    "text"
  ],
  "audio": {
    "voice": "string",
    "format": "string"
  }
}`)
	req, err := http.NewRequest("POST", url, body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", "Bearer <token>")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(data))
}
import requests

url = "https://api.nodeprice.com/v1/chat/completions"

body = """{
  "model": "string",
  "messages": [
    {
      "role": "system",
      "content": "string",
      "name": "string",
      "tool_calls": [
        {
          "id": "string",
          "type": "string",
          "function": {
            "name": "string",
            "arguments": "string"
          }
        }
      ],
      "tool_call_id": "string",
      "reasoning_content": "string"
    }
  ],
  "temperature": 1,
  "top_p": 1,
  "n": 1,
  "stream": false,
  "stream_options": {
    "include_usage": false
  },
  "stop": "string",
  "max_tokens": 0,
  "max_completion_tokens": 0,
  "presence_penalty": 0,
  "frequency_penalty": 0,
  "logit_bias": {},
  "user": "string",
  "tools": [
    {
      "type": "string",
      "function": {
        "name": "string",
        "description": "string",
        "parameters": {}
      }
    }
  ],
  "tool_choice": "none",
  "response_format": {
    "type": "text",
    "json_schema": {}
  },
  "seed": 0,
  "reasoning_effort": "low",
  "modalities": [
    "text"
  ],
  "audio": {
    "voice": "string",
    "format": "string"
  }
}"""

response = requests.request("POST", url, data=body, headers={
  "Content-Type": "application/json",
  "Authorization": "Bearer <token>"
})

print(response.text)
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n"
    + "  \"model\": \"string\",\n"
    + "  \"messages\": [\n"
    + "    {\n"
    + "      \"role\": \"system\",\n"
    + "      \"content\": \"string\",\n"
    + "      \"name\": \"string\",\n"
    + "      \"tool_calls\": [\n"
    + "        {\n"
    + "          \"id\": \"string\",\n"
    + "          \"type\": \"string\",\n"
    + "          \"function\": {\n"
    + "            \"name\": \"string\",\n"
    + "            \"arguments\": \"string\"\n"
    + "          }\n"
    + "        }\n"
    + "      ],\n"
    + "      \"tool_call_id\": \"string\",\n"
    + "      \"reasoning_content\": \"string\"\n"
    + "    }\n"
    + "  ],\n"
    + "  \"temperature\": 1,\n"
    + "  \"top_p\": 1,\n"
    + "  \"n\": 1,\n"
    + "  \"stream\": false,\n"
    + "  \"stream_options\": {\n"
    + "    \"include_usage\": false\n"
    + "  },\n"
    + "  \"stop\": \"string\",\n"
    + "  \"max_tokens\": 0,\n"
    + "  \"max_completion_tokens\": 0,\n"
    + "  \"presence_penalty\": 0,\n"
    + "  \"frequency_penalty\": 0,\n"
    + "  \"logit_bias\": {},\n"
    + "  \"user\": \"string\",\n"
    + "  \"tools\": [\n"
    + "    {\n"
    + "      \"type\": \"string\",\n"
    + "      \"function\": {\n"
    + "        \"name\": \"string\",\n"
    + "        \"description\": \"string\",\n"
    + "        \"parameters\": {}\n"
    + "      }\n"
    + "    }\n"
    + "  ],\n"
    + "  \"tool_choice\": \"none\",\n"
    + "  \"response_format\": {\n"
    + "    \"type\": \"text\",\n"
    + "    \"json_schema\": {}\n"
    + "  },\n"
    + "  \"seed\": 0,\n"
    + "  \"reasoning_effort\": \"low\",\n"
    + "  \"modalities\": [\n"
    + "    \"text\"\n"
    + "  ],\n"
    + "  \"audio\": {\n"
    + "    \"voice\": \"string\",\n"
    + "    \"format\": \"string\"\n"
    + "  }\n"
    + "}");
Request request = new Request.Builder()
    .url("https://api.nodeprice.com/v1/chat/completions")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("Authorization", "Bearer <token>")
    .build();

Response response = client.newCall(request).execute();
System.out.println(response.body().string());
#include <stdio.h>
#include <curl/curl.h>

int main(void) {
    CURL *curl = curl_easy_init();
    if (curl == NULL) {
        return 1;
    }

    struct curl_slist *headers = NULL;
    headers = curl_slist_append(headers, "Content-Type: application/json");
    headers = curl_slist_append(headers, "Authorization: Bearer <token>");

    curl_easy_setopt(curl, CURLOPT_URL, "https://api.nodeprice.com/v1/chat/completions");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\n"
        + "  \"model\": \"string\",\n"
        + "  \"messages\": [\n"
        + "    {\n"
        + "      \"role\": \"system\",\n"
        + "      \"content\": \"string\",\n"
        + "      \"name\": \"string\",\n"
        + "      \"tool_calls\": [\n"
        + "        {\n"
        + "          \"id\": \"string\",\n"
        + "          \"type\": \"string\",\n"
        + "          \"function\": {\n"
        + "            \"name\": \"string\",\n"
        + "            \"arguments\": \"string\"\n"
        + "          }\n"
        + "        }\n"
        + "      ],\n"
        + "      \"tool_call_id\": \"string\",\n"
        + "      \"reasoning_content\": \"string\"\n"
        + "    }\n"
        + "  ],\n"
        + "  \"temperature\": 1,\n"
        + "  \"top_p\": 1,\n"
        + "  \"n\": 1,\n"
        + "  \"stream\": false,\n"
        + "  \"stream_options\": {\n"
        + "    \"include_usage\": false\n"
        + "  },\n"
        + "  \"stop\": \"string\",\n"
        + "  \"max_tokens\": 0,\n"
        + "  \"max_completion_tokens\": 0,\n"
        + "  \"presence_penalty\": 0,\n"
        + "  \"frequency_penalty\": 0,\n"
        + "  \"logit_bias\": {},\n"
        + "  \"user\": \"string\",\n"
        + "  \"tools\": [\n"
        + "    {\n"
        + "      \"type\": \"string\",\n"
        + "      \"function\": {\n"
        + "        \"name\": \"string\",\n"
        + "        \"description\": \"string\",\n"
        + "        \"parameters\": {}\n"
        + "      }\n"
        + "    }\n"
        + "  ],\n"
        + "  \"tool_choice\": \"none\",\n"
        + "  \"response_format\": {\n"
        + "    \"type\": \"text\",\n"
        + "    \"json_schema\": {}\n"
        + "  },\n"
        + "  \"seed\": 0,\n"
        + "  \"reasoning_effort\": \"low\",\n"
        + "  \"modalities\": [\n"
        + "    \"text\"\n"
        + "  ],\n"
        + "  \"audio\": {\n"
        + "    \"voice\": \"string\",\n"
        + "    \"format\": \"string\"\n"
        + "  }\n"
        + "}");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

    CURLcode code = curl_easy_perform(curl);
    if (code != CURLE_OK) {
        fprintf(stderr, "%s\n", curl_easy_strerror(code));
    }

    curl_slist_free_all(headers);
    curl_easy_cleanup(curl);
    return 0;
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var client = new HttpClient();
        var request = new HttpRequestMessage(HttpMethod.Post, "https://api.nodeprice.com/v1/chat/completions");
        request.Headers.Add("Authorization", "Bearer <token>");
        request.Content = new StringContent("{\n"
            + "  \"model\": \"string\",\n"
            + "  \"messages\": [\n"
            + "    {\n"
            + "      \"role\": \"system\",\n"
            + "      \"content\": \"string\",\n"
            + "      \"name\": \"string\",\n"
            + "      \"tool_calls\": [\n"
            + "        {\n"
            + "          \"id\": \"string\",\n"
            + "          \"type\": \"string\",\n"
            + "          \"function\": {\n"
            + "            \"name\": \"string\",\n"
            + "            \"arguments\": \"string\"\n"
            + "          }\n"
            + "        }\n"
            + "      ],\n"
            + "      \"tool_call_id\": \"string\",\n"
            + "      \"reasoning_content\": \"string\"\n"
            + "    }\n"
            + "  ],\n"
            + "  \"temperature\": 1,\n"
            + "  \"top_p\": 1,\n"
            + "  \"n\": 1,\n"
            + "  \"stream\": false,\n"
            + "  \"stream_options\": {\n"
            + "    \"include_usage\": false\n"
            + "  },\n"
            + "  \"stop\": \"string\",\n"
            + "  \"max_tokens\": 0,\n"
            + "  \"max_completion_tokens\": 0,\n"
            + "  \"presence_penalty\": 0,\n"
            + "  \"frequency_penalty\": 0,\n"
            + "  \"logit_bias\": {},\n"
            + "  \"user\": \"string\",\n"
            + "  \"tools\": [\n"
            + "    {\n"
            + "      \"type\": \"string\",\n"
            + "      \"function\": {\n"
            + "        \"name\": \"string\",\n"
            + "        \"description\": \"string\",\n"
            + "        \"parameters\": {}\n"
            + "      }\n"
            + "    }\n"
            + "  ],\n"
            + "  \"tool_choice\": \"none\",\n"
            + "  \"response_format\": {\n"
            + "    \"type\": \"text\",\n"
            + "    \"json_schema\": {}\n"
            + "  },\n"
            + "  \"seed\": 0,\n"
            + "  \"reasoning_effort\": \"low\",\n"
            + "  \"modalities\": [\n"
            + "    \"text\"\n"
            + "  ],\n"
            + "  \"audio\": {\n"
            + "    \"voice\": \"string\",\n"
            + "    \"format\": \"string\"\n"
            + "  }\n"
            + "}", Encoding.UTF8, "application/json");

        var response = await client.SendAsync(request);
        Console.WriteLine(await response.Content.ReadAsStringAsync());
    }
}

响应

200 成功创建响应

Content-Type: application/json

字段类型必填说明
idstring
objectstring示例: "chat.completion"
createdinteger
modelstring
choicesarray<object>
[]object
indexinteger
messageobject
rolestring是消息角色
可选值: system, user, assistant, tool, developer
contentstring | array<object>是消息内容
[]object
typestring可选值: text, image_url, input_audio, file, video_url
textstring
image_urlobject
urlstring图片 URL 或 base64
detailstring可选值: low, high, auto
input_audioobject
datastringBase64 编码的音频数据
formatstring可选值: wav, mp3
fileobject
filenamestring
file_datastring
file_idstring
video_urlobject
urlstring
namestring发送者名称
tool_callsarray<object>
[]object
idstring
typestring示例: "function"
functionobject
namestring
argumentsstring
tool_call_idstring工具调用 ID(用于 tool 角色消息)
reasoning_contentstring推理内容
finish_reasonstring可选值: stop, length, tool_calls, content_filter
usageobject
prompt_tokensinteger提示词 Token 数
completion_tokensinteger补全 Token 数
total_tokensinteger总 Token 数
prompt_tokens_detailsobject
cached_tokensinteger
text_tokensinteger
audio_tokensinteger
image_tokensinteger
completion_tokens_detailsobject
text_tokensinteger
audio_tokensinteger
reasoning_tokensinteger
system_fingerprintstring

400 请求参数错误

Content-Type: application/json

字段类型必填说明
errorobject
messagestring错误信息
typestring错误类型
paramstring | null相关参数
codestring | null错误代码

429 请求频率限制

Content-Type: application/json

字段类型必填说明
errorobject
messagestring错误信息
typestring错误类型
paramstring | null相关参数
codestring | null错误代码