SilkDock
API

Chat

Multi-turn conversation with any supported model.

Parameters

ParameterTypeRequiredDescription
modelstringYesModel ID, e.g. gpt-4.1-mini, claude-haiku-4-5.
messagesarrayYesConversation messages. Each item has role (user/assistant/system) and content.
streambooleanNoEnable streaming. Default: false.
temperaturenumberNo0–2. Default: 1.
max_tokensintegerNoMaximum output tokens.
top_pnumberNoNucleus sampling. Default: 1.
nintegerNoNumber of completions. Default: 1.
stopstring|arrayNoStop sequences.

Examples

curl -X POST https://silkdock.ai/v1/chat/completions \-H "Authorization: Bearer $SILKDOCK_API_KEY" \-H "Content-Type: application/json" \-d '{  "model": "gpt-4.1-mini",  "messages": [    {"role": "system", "content": "You are a helpful assistant."},    {"role": "user", "content": "Hello"}  ]}'
curl -X POST https://silkdock.ai/v1/chat/completions ^-H "Authorization: Bearer %SILKDOCK_API_KEY%" ^-H "Content-Type: application/json" ^-d "{"model":"gpt-4.1-mini","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello"}]}"
http POST https://silkdock.ai/v1/chat/completions \Authorization:"Bearer $SILKDOCK_API_KEY" \model=gpt-4.1-mini \messages:='[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello"}]'
wget -qO- https://silkdock.ai/v1/chat/completions \--method=POST \--header="Authorization: Bearer $SILKDOCK_API_KEY" \--header="Content-Type: application/json" \--body-data='{  "model": "gpt-4.1-mini",  "messages": [    {"role": "system", "content": "You are a helpful assistant."},    {"role": "user", "content": "Hello"}  ]}'
$headers = @{  "Authorization" = "Bearer $env:SILKDOCK_API_KEY"  "Content-Type"  = "application/json"}$body = @{  model    = "gpt-4.1-mini"    messages = @(      @{ role = "system"; content = "You are a helpful assistant." }      @{ role = "user";   content = "Hello" }  )} | ConvertTo-Json -Depth 5Invoke-RestMethod -Uri "https://silkdock.ai/v1/chat/completions" -Method POST -Headers $headers -Body $body
const { OpenAI } = require("openai");const client = new OpenAI({apiKey: process.env.SILKDOCK_API_KEY,baseURL: "https://silkdock.ai/v1",});const response = await client.chat.completions.create({model: "gpt-4.1-mini",messages: [  { role: "system", content: "You are a helpful assistant." },  { role: "user", content: "Hello" },],});console.log(response.choices[0].message.content);
const res = await fetch("https://silkdock.ai/v1/chat/completions", {method: "POST",headers: {  "Authorization": `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",},body: JSON.stringify({  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user", content: "Hello" },  ],}),});const data = await res.json();console.log(data.choices[0].message.content);
import axios from "axios";const { data } = await axios.post("https://silkdock.ai/v1/chat/completions",{  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user", content: "Hello" },  ],},{  headers: {    Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`,    "Content-Type": "application/json",  },});console.log(data.choices[0].message.content);
$.ajax({url: "https://silkdock.ai/v1/chat/completions",method: "POST",contentType: "application/json",headers: { Authorization: `Bearer ${API_KEY}` },data: JSON.stringify({  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user", content: "Hello" },  ],}),success: (data) => console.log(data.choices[0].message.content),});
const xhr = new XMLHttpRequest();xhr.open("POST", "https://silkdock.ai/v1/chat/completions");xhr.setRequestHeader("Authorization", `Bearer ${API_KEY}`);xhr.setRequestHeader("Content-Type", "application/json");xhr.onload = () => {const data = JSON.parse(xhr.responseText);console.log(data.choices[0].message.content);};xhr.send(JSON.stringify({model: "gpt-4.1-mini",messages: [  { role: "system", content: "You are a helpful assistant." },  { role: "user", content: "Hello" },],}));
const request = require("request");request.post({url: "https://silkdock.ai/v1/chat/completions",headers: {  Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",},json: true,body: {  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user", content: "Hello" },  ],},}, (err, res, body) => console.log(body.choices[0].message.content));
const unirest = require("unirest");const res = await unirest.post("https://silkdock.ai/v1/chat/completions").headers({  Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",}).send({  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user", content: "Hello" },  ],});console.log(res.body.choices[0].message.content);
import OpenAI from "openai";const client = new OpenAI({apiKey: process.env.SILKDOCK_API_KEY,baseURL: "https://silkdock.ai/v1",});const response = await client.chat.completions.create({model: "gpt-4.1-mini",messages: [  { role: "system", content: "You are a helpful assistant." },  { role: "user", content: "Hello" },],});console.log(response.choices[0].message.content);
const res = await fetch("https://silkdock.ai/v1/chat/completions", {method: "POST",headers: {  "Authorization": `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",},body: JSON.stringify({  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user", content: "Hello" },  ],}),});const data = await res.json();console.log(data.choices[0].message.content);
import requests, osres = requests.post(  "https://silkdock.ai/v1/chat/completions",  headers={"Authorization": f"Bearer {os.getenv('SILKDOCK_API_KEY')}"},  json={      "model": "gpt-4.1-mini",      "messages": [          {"role": "system", "content": "You are a helpful assistant."},          {"role": "user", "content": "Hello"},      ],  },)print(res.json()["choices"][0]["message"]["content"])
from openai import OpenAIclient = OpenAI(  api_key=os.getenv("SILKDOCK_API_KEY"),  base_url="https://silkdock.ai/v1")response = client.chat.completions.create(  model="gpt-4.1-mini",  messages=[      {"role": "system", "content": "You are a helpful assistant."},      {"role": "user", "content": "Hello"},  ])print(response.choices[0].message.content)
#include <stdio.h>#include <curl/curl.h>int main(void) {  CURL *curl = curl_easy_init();  if (!curl) return 1;  struct curl_slist *headers = NULL;  headers = curl_slist_append(headers, "Content-Type: application/json");  headers = curl_slist_append(headers,      "Authorization: Bearer " SILKDOCK_API_KEY);  const char *body =      "{"model":"gpt-4.1-mini","      ""messages":[{"role":"system","content":"You are a helpful assistant."},"      "{"role":"user","content":"Hello"}]}";  curl_easy_setopt(curl, CURLOPT_URL, "https://silkdock.ai/v1/chat/completions");  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);  curl_easy_perform(curl);  curl_slist_free_all(headers);  curl_easy_cleanup(curl);  return 0;}/* compile: gcc main.c -lcurl -o main */
#import <Foundation/Foundation.h>NSURLSession *session = [NSURLSession sharedSession];NSURL *url = [NSURL URLWithString:@"https://silkdock.ai/v1/chat/completions"];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];[request setHTTPMethod:@"POST"];[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];[request setValue:[@"Bearer " stringByAppendingString:  [NSProcessInfo.processInfo.environment objectForKey:@"SILKDOCK_API_KEY"]]  forHTTPHeaderField:@"Authorization"];NSDictionary *payload = @{  @"model": @"gpt-4.1-mini",  @"messages": @[      @{@"role": @"system", @"content": @"You are a helpful assistant."},      @{@"role": @"user",   @"content": @"Hello"}  ]};[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:payload options:0 error:nil]];NSURLSessionDataTask *task = [session dataTaskWithRequest:request  completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {      NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];      NSLog(@"%@", json[@"choices"][0][@"message"][@"content"]);  }];[task resume];
import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.*;OpenAIClient client = OpenAIOkHttpClient.builder()  .apiKey(System.getenv("SILKDOCK_API_KEY"))  .baseURL("https://silkdock.ai/v1")  .build();ChatCompletion completion = client.chat().completions().create(  ChatCompletionCreateParams.builder()      .model(ChatModel.GPT_4_1_MINI)      .addSystemMessage("You are a helpful assistant.")      .addUserMessage("Hello")      .build());System.out.println(completion.choices().get(0).message().content().orElse(""));
import java.net.http.*;import java.net.URI;var body = """  {"model":"gpt-4.1-mini","messages":[    {"role":"system","content":"You are a helpful assistant."},    {"role":"user","content":"Hello"}  ]}""";var req = HttpRequest.newBuilder()  .uri(URI.create("https://silkdock.ai/v1/chat/completions"))  .header("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY"))  .header("Content-Type", "application/json")  .POST(HttpRequest.BodyPublishers.ofString(body))  .build();var res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());System.out.println(res.body());
import okhttp3.*;import java.io.IOException;OkHttpClient client = new OkHttpClient();String json = "{"model":"gpt-4.1-mini","messages":["  + "{"role":"system","content":"You are a helpful assistant."},"  + "{"role":"user","content":"Hello"}]}";Request request = new Request.Builder()  .url("https://silkdock.ai/v1/chat/completions")  .addHeader("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY"))  .post(RequestBody.create(json, MediaType.get("application/json")))  .build();try (Response response = client.newCall(request).execute()) {  System.out.println(response.body().string());}
import kong.unirest.Unirest;import org.json.JSONObject;HttpResponse<String> response = Unirest.post("https://silkdock.ai/v1/chat/completions")  .header("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY"))  .header("Content-Type", "application/json")  .body(new JSONObject()      .put("model", "gpt-4.1-mini")      .put("messages", new org.json.JSONArray()          .put(new JSONObject().put("role", "system").put("content", "You are a helpful assistant."))          .put(new JSONObject().put("role", "user").put("content", "Hello")))      .toString())  .asString();System.out.println(response.getBody());
package mainimport (  "context"  "fmt"  "os"  "github.com/openai/openai-go"  "github.com/openai/openai-go/option")func main() {  client := openai.NewClient(      option.WithAPIKey(os.Getenv("SILKDOCK_API_KEY")),      option.WithBaseURL("https://silkdock.ai/v1"),  )  resp, _ := client.Chat.Completions.New(context.Background(),      openai.ChatCompletionNewParams{          Model: openai.F(openai.ChatModelGPT4_1Mini),          Messages: openai.F([]openai.ChatCompletionMessageParamUnion{              openai.SystemMessage("You are a helpful assistant."),              openai.UserMessage("Hello"),          }),      },  )  fmt.Println(resp.Choices[0].Message.Content)}
package mainimport (  "bytes"  "encoding/json"  "fmt"  "io"  "net/http"  "os")func main() {  body, _ := json.Marshal(map[string]any{      "model":  "gpt-4.1-mini",      "messages": []map[string]string{          {"role": "system", "content": "You are a helpful assistant."},          {"role": "user", "content": "Hello"},      },  })  req, _ := http.NewRequest("POST", "https://silkdock.ai/v1/chat/completions", bytes.NewReader(body))  req.Header.Set("Authorization", "Bearer "+os.Getenv("SILKDOCK_API_KEY"))  req.Header.Set("Content-Type", "application/json")  resp, _ := http.DefaultClient.Do(req)  defer resp.Body.Close()  data, _ := io.ReadAll(resp.Body)  fmt.Println(string(data))}
<?php$ch = curl_init("https://silkdock.ai/v1/chat/completions");curl_setopt_array($ch, [  CURLOPT_POST           => true,  CURLOPT_RETURNTRANSFER => true,  CURLOPT_HTTPHEADER     => [      "Authorization: Bearer " . getenv("SILKDOCK_API_KEY"),      "Content-Type: application/json",  ],  CURLOPT_POSTFIELDS => json_encode([      "model"    => "gpt-4.1-mini",      "messages" => [          ["role" => "system", "content" => "You are a helpful assistant."],          ["role" => "user",   "content" => "Hello"],      ],  ]),]);echo curl_exec($ch);
<?phprequire_once "HTTP/Request2.php";$request = new HTTP_Request2("https://silkdock.ai/v1/chat/completions", HTTP_Request2::METHOD_POST);$request->setHeader("Authorization", "Bearer " . getenv("SILKDOCK_API_KEY"));$request->setHeader("Content-Type", "application/json");$request->setBody(json_encode([  "model"    => "gpt-4.1-mini",  "messages" => [      ["role" => "system", "content" => "You are a helpful assistant."],      ["role" => "user",   "content" => "Hello"],  ],]));echo $request->send()->getBody();
<?phprequire "vendor/autoload.php";use GuzzleHttpClient;$client = new Client();$response = $client->post("https://silkdock.ai/v1/chat/completions", [  "headers" => [      "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"),      "Content-Type"  => "application/json",  ],  "json" => [      "model"    => "gpt-4.1-mini",      "messages" => [          ["role" => "system", "content" => "You are a helpful assistant."],          ["role" => "user",   "content" => "Hello"],      ],  ],]);echo $response->getBody();
<?php$client = new httpClient;$request = new httpClientRequest("POST", "https://silkdock.ai/v1/chat/completions");$request->setHeaders([  "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"),  "Content-Type"  => "application/json",]);$body = new httpMessageBody;$body->append(json_encode([  "model"    => "gpt-4.1-mini",  "messages" => [      ["role" => "system", "content" => "You are a helpful assistant."],      ["role" => "user",   "content" => "Hello"],  ],]));$request->setBody($body);$client->enqueue($request)->send();echo $client->getResponse()->getBody();
import OpenAIlet client = OpenAI(configuration: .init(  token: ProcessInfo.processInfo.environment["SILKDOCK_API_KEY"]!,  host: "silkdock.ai",  scheme: "https"))let query = ChatQuery(  messages: [      .init(role: .system, content: "You are a helpful assistant."),      .init(role: .user,   content: "Hello"),  ],  model: "gpt-4.1-mini")let result = try await client.chats(query: query)print(result.choices.first?.message.content?.string ?? "")
import Foundationvar req = URLRequest(url: URL(string: "https://silkdock.ai/v1/chat/completions")!)req.httpMethod = "POST"req.setValue("Bearer \(ProcessInfo.processInfo.environment["SILKDOCK_API_KEY"]!)",           forHTTPHeaderField: "Authorization")req.setValue("application/json", forHTTPHeaderField: "Content-Type")req.httpBody = try! JSONSerialization.data(withJSONObject: [  "model": "gpt-4.1-mini",  "messages": [      ["role": "system", "content": "You are a helpful assistant."],      ["role": "user",   "content": "Hello"],  ],])let (data, _) = try! await URLSession.shared.data(for: req)print(String(data: data, encoding: .utf8)!)
using OpenAI;using OpenAI.Chat;var client = new ChatClient(  model: "gpt-4.1-mini",  credential: new System.ClientModel.ApiKeyCredential(      Environment.GetEnvironmentVariable("SILKDOCK_API_KEY")!),  options: new OpenAIClientOptions {      Endpoint = new Uri("https://silkdock.ai/v1")  });ChatCompletion completion = await client.CompleteChatAsync(  new SystemChatMessage("You are a helpful assistant."),  new UserChatMessage("Hello"));Console.WriteLine(completion.Content[0].Text);
using System.Net.Http;using System.Net.Http.Json;var client = new HttpClient();client.DefaultRequestHeaders.Add("Authorization",  $"Bearer {Environment.GetEnvironmentVariable("SILKDOCK_API_KEY")}");var res = await client.PostAsJsonAsync("https://silkdock.ai/v1/chat/completions", new {  model = "gpt-4.1-mini",  messages = new[] {      new { role = "system", content = "You are a helpful assistant." },      new { role = "user",   content = "Hello" },  },});Console.WriteLine(await res.Content.ReadAsStringAsync());
require "openai"client = OpenAI::Client.new(access_token: ENV["SILKDOCK_API_KEY"],uri_base: "https://silkdock.ai/v1")response = client.chat(parameters: {  model: "gpt-4.1-mini",  messages: [    { role: "system", content: "You are a helpful assistant." },    { role: "user",   content: "Hello" }  ]})puts response.dig("choices", 0, "message", "content")
require "net/http"require "json"uri = URI("https://silkdock.ai/v1/chat/completions")req = Net::HTTP::Post.new(uri)req["Authorization"] = "Bearer #{ENV['SILKDOCK_API_KEY']}"req["Content-Type"]  = "application/json"req.body = {model: "gpt-4.1-mini",messages: [  { role: "system", content: "You are a helpful assistant." },  { role: "user",   content: "Hello" },]}.to_jsonres = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }puts res.body
import com.openai.client.OpenAIClientimport com.openai.client.okhttp.OpenAIOkHttpClientimport com.openai.models.*val client: OpenAIClient = OpenAIOkHttpClient.builder()  .apiKey(System.getenv("SILKDOCK_API_KEY"))  .baseURL("https://silkdock.ai/v1")  .build()val completion = client.chat().completions().create(  ChatCompletionCreateParams.builder()      .model(ChatModel.GPT_4_1_MINI)      .addSystemMessage("You are a helpful assistant.")      .addUserMessage("Hello")      .build())println(completion.choices()[0].message().content().orElse(""))
import java.net.http.*import java.net.URIval req = HttpRequest.newBuilder()  .uri(URI.create("https://silkdock.ai/v1/chat/completions"))  .header("Authorization", "Bearer ${System.getenv("SILKDOCK_API_KEY")}")  .header("Content-Type", "application/json")  .POST(HttpRequest.BodyPublishers.ofString("""      {"model":"gpt-4.1-mini","messages":[        {"role":"system","content":"You are a helpful assistant."},        {"role":"user","content":"Hello"}      ]}"""))  .build()val res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString())println(res.body())
use reqwest::blocking::Client;use serde_json::json;fn main() -> Result<(), Box<dyn std::error::Error>> {  let res = Client::new()      .post("https://silkdock.ai/v1/chat/completions")      .header("Authorization", format!("Bearer {}", std::env::var("SILKDOCK_API_KEY")?))      .json(&json!({          "model": "gpt-4.1-mini",          "messages": [              {"role": "system", "content": "You are a helpful assistant."},              {"role": "user",   "content": "Hello"}          ]      }))      .send()?;  println!("{}", res.text()?);  Ok(())}
POST /v1/chat/completions HTTP/1.1Host: silkdock.aiAuthorization: Bearer <YOUR_API_KEY>Content-Type: application/json{"model": "gpt-4.1-mini","messages": [  {"role": "system", "content": "You are a helpful assistant."},  {"role": "user", "content": "Hello"}]}
import 'dart:convert';import 'package:http/http.dart' as http;void main() async {final res = await http.post(  Uri.parse('https://silkdock.ai/v1/chat/completions'),  headers: {    'Authorization': 'Bearer ${const String.fromEnvironment("SILKDOCK_API_KEY")}',    'Content-Type': 'application/json',  },  body: jsonEncode({    'model': 'gpt-4.1-mini',    'messages': [      {'role': 'system', 'content': 'You are a helpful assistant.'},      {'role': 'user',   'content': 'Hello'},    ],  }),);print(res.body);}
library(httr2)req <- request("https://silkdock.ai/v1/chat/completions") |>req_headers(  Authorization = paste("Bearer", Sys.getenv("SILKDOCK_API_KEY")),  "Content-Type" = "application/json") |>req_body_json(list(  model    = "gpt-4.1-mini",  messages = list(    list(role = "system", content = "You are a helpful assistant."),    list(role = "user",   content = "Hello")  )))resp <- req_perform(req)cat(resp_body_string(resp))
(* requires cohttp-lwt-unix *)open Cohttp_lwt_unixopen Cohttpopen Lwtlet () =let body = {|{"model":"gpt-4.1-mini","messages":[  {"role":"system","content":"You are a helpful assistant."},  {"role":"user","content":"Hello"}]}|} inlet headers = Header.of_list [  "Authorization", "Bearer " ^ Sys.getenv "SILKDOCK_API_KEY";  "Content-Type", "application/json";] inLwt_main.run (  Client.post ~headers ~body:(Cohttp_lwt.Body.of_string body)    (Uri.of_string "https://silkdock.ai/v1/chat/completions")  >>= fun (_, body) -> Cohttp_lwt.Body.to_string body  >>= fun s -> print_string s; return_unit)

Response

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1720000000,
  "model": "gpt-4.1-mini",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "你好!有什么可以帮助你的?" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 10, "completion_tokens": 12, "total_tokens": 22 }
}

Last updated on

On this page