API Reference¶
LLM API¶
Completions¶
An ordinary request¶
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "model": "claude-3-sonnet",
  "messages": [
    {
      "role": "user",
      "content": "ping"
    }
  ],
  "stream": true,
  "temperature": 1,
  "max_tokens": 4096
}
Including a picture in the request¶
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "model": "claude-3-sonnet",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type":"text": 
          "text":"Describe this picture."
        },
        {
          "type": "image_url",
          "image_url": { 
            "url": "data:image/webp;base64,...."
          }
        }
      ]
    }
  ]
}
- image url can be a base64 string or a http(s) url.
 
Including a docuement in the request¶
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "model": "claude-3-sonnet",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type":"text": 
          "text":"Describe this document."
        },
        {
          "type":"doc",
          "doc": { 
            "name": "xxx",
            "format": "pdf",
            "size": 900,
            "source": {
              "bytes": {
                0:35,1:35,2:37,...
              }
            }
          }
        }
      ]
    }
  ]
}
Function calling (tool use)¶
Request
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "model": "c37",
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "query-weather",
        "description": "query weather",
        "parameters": {
          "type": "object",
          "properties": {
            "latitude": {
              "type": "string",
              "description": "latitude"
            },
            "longitude": {
                "type": "string",
                "description": "longitude"
            }
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      }
    }
  ],
  "stream": true,
  "tool_choice": "auto",
  "messages": [
    {
      "role": "system",
      "content": "You are an expert. Current time: 2024-11-13T08:13:17.778Z."
    },
    {
      "role": "user",
      "content": "I wanna query weather of Beijing."
    }
  ]
}
Response (stream: false)
{
  "id": "1028c350-da16-4ae0-bcce-77e877f90695",
  "model": "c37",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": "The user wants to query the weather for Beijing. To use the `query-weather` function, I need to provide the latitude and longitude of Beijing.\n\nBeijing's approximate coordinates are:\n- Latitude: 39.9042° N (which would be \"39.9042\")\n- Longitude: 116.4074° E (which would be \"116.4074\")\n\nWith these coordinates, I can call the `query-weather` function to get the current weather information for Beijing.",
        "content": "I'd be happy to check the weather in Beijing for you. I'll need to use the coordinates for Beijing to make the query.",
        "tool_calls": [
          {
            "id": "tooluse_su_WaAeJQviJSDZ5BPXNyA",
            "type": "function",
            "function": {
              "name": "query-weather",
              "arguments": "{\"latitude\":\"39.9042\",\"longitude\":\"116.4074\"}"
            }
          }
        ]
      }
    }
  ],
  "usage": {
    "completion_tokens": 219,
    "prompt_tokens": 449,
    "total_tokens": 668
  }
}
Response (stream: true)
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912748,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":"","reasoning_content":"The"},"finish_reason":null,"logprobs":null}],"model":"c37"}
...
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912750,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" that"},"finish_reason":null,"logprobs":null}],"model":"c37"}
...
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912750,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","tool_calls":[{"index":0,"id":"tooluse_uz8oUJ90TQuISdaP1yaU2A","type":"function","function":{"name":"query-weather","arguments":""}}]},"finish_reason":null,"logprobs":null}],"model":"c37"}
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912751,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","tool_calls":[{"index":0,"function":{"arguments":"{\"lat"}}]},"finish_reason":null,"logprobs":null}],"model":"c37"}
...
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912751,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","tool_calls":[{"index":0,"function":{"arguments":"74\"}"}}]},"finish_reason":null,"logprobs":null}],"model":"c37"}
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912751,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"tool_use","logprobs":null}],"model":"c37"}
data: {"id":"chatcmpl-689a9c21-4305-4a56-a32a-b0781d4ebcc0","created":1743912751,"object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop","logprobs":null}],"usage":{"completion_tokens":189,"prompt_tokens":449,"total_tokens":638},"model":"c37"}
Embeddings¶
POST {{hostLocal}}/v1/embeddings
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "model": "your-embedding-model",
  "input": "Hello world."
}
List models¶
Admin API¶
API key¶
Create an api key¶
POST /admin/api-key/apply
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "name": "jack",
  "group_id": 1,
  "role": "user",
  "email": "",
  "month_quota": 1.00
}
Create an api key with admin role¶
POST /admin/api-key/apply
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "name": "rob",
  "group_id": 1,
  "role": "admin",
  "email": ""
}
Update and api key’s info¶
POST /admin/api-key/update
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "id": 2,
  "name": "jack",
  "month_quota": 10.00
}
Recharge up an API key¶
POST /admin/api-key/recharge
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "api_key": "br-xxxxxxxxxxxxxxx",
  "balance": 0.23
}
Recharge history¶
List api keys¶
GET /admin/api-key/list?q=&name=&group_id=&role=&limit=10&offset=
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Delete an api key¶
POST /admin/api-key/delete
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "id": 1
}
Model¶
List models¶
Create a model¶
POST /admin/model/save
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "name": "xxxx",
  "group_id": 1,
  "multiple": false, 
  "config": "{\"modelId\": \"somevalue\"}", 
  "provider": "bedrock-converse",
  "price_in": 1,
  "price_out":3
}
Update a model¶
POST /admin/model/save
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "id": 1,
  "name": "xxxx",
  "group_id": 1,
  "multiple": false, 
  "config": "{\"modelId\": \"somevalue\"}", 
  "provider": "bedrock-converse",
  "price_in": 1,
  "price_out":3
}
Delete a model¶
POST /admin/model/delete
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "id": 1
}
Webhook¶
List webhook¶
GET /admin/bot/feishu/list?q=&limit=10&offset=
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Create a webhook¶
POST /admin/bot/feishu/save
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "name": "xxxx",
  "config": "{\"appId\": \"cli_xxxxx\", \"apiKey\": \"br-xxxxx\", \"modelId\": \"claude-3-sonnet\", \"appSecret\": \"xxxxx\" }", 
  "provider": "bedrock-converse"
}
Update a webhook¶
POST /admin/bot/feishu/save
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ 
  "appId": "cli_xxxxx", 
  "apiKey": "br-xxxxx", 
  "modelId": "claude-3-sonnet", 
  "appSecret": "xxxxx" 
}
Delete a webhook¶
POST /admin/bot/feishu/delete
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "id": 1
}
Group¶
List groups¶
Delete a group¶
POST /admin/group/delete
Content-Type: application/json
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "id": 1
}
Model Authorization¶
- List models of a group
 - Authorize the model to a group
 - Deauthorize the model from a group
 - List models of an api key
 - Authorize the model to an api key
 - Deauthorize the model from an api key
 
Chat records¶
List sessions¶
GET /admin/session/list?q=&limit=10&offset=&key_id=
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
List threads / histories
GET /admin/thread/list?q=&limit=10&offset=&key_id=&session_id=
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
User API¶
My sessions¶
My session detail¶
My threads / histories¶
GET /user/thread/list?q=&limit=10&offset=&session_id=
Authorization: Bearer br_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx