Chat Completions

1. Endpoint

/v1/chat/completions

 

2. Method

POST

 

3. Request Parameters

Header

Parameter Type Required Description
Authorization string Yes Bearer API key, for example Bearer sk-xxxxxxxx
Content-Type string Yes application/json

Body

Parameter Type Required Description
model string Yes Model ID. See the model list below
messages array Yes Conversation messages. Each item uses the Message schema
temperature float No Sampling temperature. Range: 0-2. Default: 1
top_p float No Nucleus sampling parameter. Range: 0-1. Default: 1
max_tokens integer No Maximum number of tokens to generate
stream boolean No Whether to enable streaming output. Default: false
stop string/array No Stop sequence. Up to 4 stop sequences are supported
frequency_penalty float No Frequency penalty. Range: -2-2. Default: 0
presence_penalty float No Presence penalty. Range: -2-2. Default: 0
n integer No Number of responses to generate. Default: 1

Model List

model Description
qwen3.5-plus qwen3.5-plus
qwen3.6-plus qwen3.6-plus
qwen3.7-plus qwen3.7-plus
qwen3.7-max qwen3.7-max
kimi-k2.6 kimi-k2.6
deepseek-v3-2-251201 deepseek-v3-2-251201
deepseek-v4-flash deepseek-v4-flash
deepseek-v4-pro deepseek-v4-pro

Object Schemas

Message

Parameter Type Required Description
role string Yes Message role. Supported values: system, user, assistant
content string Yes Message content

4. Response Parameters

Non-streaming requests return a chat.completion object.

Parameter Type Description
id string Unique request ID
object string Object type. Fixed value: chat.completion
created integer Creation timestamp in seconds
model string Model ID used for this request
choices array Generated response choices
usage object Token usage statistics

choices

Parameter Type Description
index integer Choice index
message object Generated message object
finish_reason string Finish reason, for example stop for normal completion or length when the token limit is reached

message

Parameter Type Description
role string Role
content string Response content

usage

Parameter Type Description
prompt_tokens integer Number of input tokens
completion_tokens integer Number of output tokens
total_tokens integer Total number of tokens

Streaming requests return text/event-stream. Each event starts with data: and the stream ends with data: [DONE].

5. Examples

Non-streaming request

curl -X POST https://hiharness.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -d '{
    "model": "qwen3.5-plus",
    "messages": [
      {"role": "system", "content": "You are a helpful AI assistant."},
      {"role": "user", "content": "Hello, please introduce yourself."}
    ],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

Non-streaming response

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1748236800,
  "model": "qwen3.5-plus",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! I am an AI assistant. How can I help you?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 18,
    "total_tokens": 33
  }
}

Streaming request

curl -X POST https://hiharness.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -d '{
    "model": "qwen3.5-plus",
    "messages": [
      {"role": "system", "content": "You are a helpful AI assistant."},
      {"role": "user", "content": "Hello, please introduce yourself."}
    ],
    "stream": true,
    "temperature": 0.7,
    "max_tokens": 1024
  }'

Streaming response

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1748236800,"model":"qwen3.5-plus","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1748236800,"model":"qwen3.5-plus","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1748236800,"model":"qwen3.5-plus","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1748236800,"model":"qwen3.5-plus","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

6. Python Examples

requests non-streaming

import requests

BASE_URL = "https://hiharness.ai"
API_KEY = "sk-xxxxxxxx"

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

payload = {
    "model": "qwen3.5-plus",
    "messages": [
        {"role": "system", "content": "You are a helpful AI assistant."},
        {"role": "user", "content": "Hello, please introduce yourself."},
    ],
    "temperature": 0.7,
    "max_tokens": 1024,
}

response = requests.post(
    f"{BASE_URL}/v1/chat/completions",
    headers=headers,
    json=payload,
)
response.raise_for_status()

result = response.json()
print(result["choices"][0]["message"]["content"])

requests streaming

import json
import requests

BASE_URL = "https://hiharness.ai"
API_KEY = "sk-xxxxxxxx"

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

payload = {
    "model": "qwen3.5-plus",
    "messages": [
        {"role": "system", "content": "You are a helpful AI assistant."},
        {"role": "user", "content": "Hello, please introduce yourself."},
    ],
    "stream": True,
    "temperature": 0.7,
    "max_tokens": 1024,
}

response = requests.post(
    f"{BASE_URL}/v1/chat/completions",
    headers=headers,
    json=payload,
    stream=True,
)
response.raise_for_status()

for line in response.iter_lines():
    if not line:
        continue
    line = line.decode("utf-8")
    if not line.startswith("data: "):
        continue
    data = line[6:]
    if data == "[DONE]":
        break
    chunk = json.loads(data)
    delta = chunk["choices"][0]["delta"]
    if "content" in delta:
        print(delta["content"], end="", flush=True)

print()

OpenAI Python Client non-streaming

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx",
    base_url="https://hiharness.ai/v1",
)

response = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=[
        {"role": "system", "content": "You are a helpful AI assistant."},
        {"role": "user", "content": "Hello, please introduce yourself."},
    ],
    temperature=0.7,
    max_tokens=1024,
)

print(response.choices[0].message.content)

OpenAI Python Client streaming

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx",
    base_url="https://hiharness.ai/v1",
)

stream = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=[
        {"role": "system", "content": "You are a helpful AI assistant."},
        {"role": "user", "content": "Hello, please introduce yourself."},
    ],
    stream=True,
    temperature=0.7,
    max_tokens=1024,
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="", flush=True)

print()

7. Error Codes

HTTP Status Code Description
400 Invalid request parameters
401 API key is invalid or missing
429 Rate limit exceeded
500 Internal server error
503 Model service is temporarily unavailable

results matching ""

    No results matching ""

    results matching ""

      No results matching ""