Quickstart
Fastest way to start using SilkDock in any language or framework.
Welcome to SilkDock—a single drop‑in endpoint that lets you call today's best large‑language models while keeping your existing code and development workflow intact.
Point your HTTP requests to
https://silkdock.ai/v1/….
1 · Get an API key
- Sign in to the dashboard.
- Create a new Key → Copy the key.
2 · Pick your language
curl -X POST https://silkdock.ai/v1/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer $YOUR_API_KEY" \-d '{"model": "gpt-4o","messages": [ {"role": "user", "content": "Hello, how are you?"}]}'curl -X POST https://silkdock.ai/v1/chat/completions ^-H "Content-Type: application/json" ^-H "Authorization: Bearer %YOUR_API_KEY%" ^-d "{"model":"gpt-4o","messages":[{"role":"user","content":"Hello, how are you?"}]}"http POST https://silkdock.ai/v1/chat/completions \Authorization:"Bearer $YOUR_API_KEY" \model=gpt-4o \messages:='[{"role":"user","content":"Hello, how are you?"}]'wget --quiet --method POST \--header "Content-Type: application/json" \--header "Authorization: Bearer $YOUR_API_KEY" \--body-data '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello, how are you?"}]}' \--output-document - \https://silkdock.ai/v1/chat/completions$headers = @{"Content-Type" = "application/json""Authorization" = "Bearer $env:YOUR_API_KEY"}$body = @{model = "gpt-4o"messages = @(@{ role = "user"; content = "Hello, how are you?" })} | ConvertTo-Json -Depth 5$response = Invoke-RestMethod `-Uri "https://silkdock.ai/v1/chat/completions" `-Method POST `-Headers $headers `-Body $bodyWrite-Output $response.choices[0].message.contentconst response = await fetch('https://silkdock.ai/v1/chat/completions', {method: 'POST',headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.YOUR_API_KEY}`},body: JSON.stringify({ model: 'gpt-4o', messages: [ { role: 'user', content: 'Hello, how are you?' } ]})});if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const data = await response.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-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]},{headers: {'Content-Type': 'application/json','Authorization': `Bearer ${process.env.YOUR_API_KEY}`}});console.log(data.choices[0].message.content);$.ajax({url: 'https://silkdock.ai/v1/chat/completions',method: 'POST',contentType: 'application/json',headers: {'Authorization': `Bearer ${process.env.YOUR_API_KEY}`},data: JSON.stringify({model: 'gpt-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]}),success: function (data) {console.log(data.choices[0].message.content);},error: function (xhr) {console.error('Error:', xhr.status, xhr.responseText);}});const xhr = new XMLHttpRequest();xhr.open('POST', 'https://silkdock.ai/v1/chat/completions');xhr.setRequestHeader('Content-Type', 'application/json');xhr.setRequestHeader('Authorization', `Bearer ${process.env.YOUR_API_KEY}`);xhr.onload = function () {if (xhr.status >= 200 && xhr.status < 300) {const data = JSON.parse(xhr.responseText);console.log(data.choices[0].message.content);} else {console.error('Error:', xhr.status, xhr.responseText);}};xhr.send(JSON.stringify({model: 'gpt-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]}));const request = require('request');request.post({url: 'https://silkdock.ai/v1/chat/completions',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${process.env.YOUR_API_KEY}`},json: {model: 'gpt-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]}},function (error, response, body) {if (error) throw error;console.log(body.choices[0].message.content);});const unirest = require('unirest');unirest.post('https://silkdock.ai/v1/chat/completions').headers({'Content-Type': 'application/json','Authorization': `Bearer ${process.env.YOUR_API_KEY}`}).send({model: 'gpt-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]}).then(function (response) {console.log(response.body.choices[0].message.content);}).catch(function (error) {console.error(error);});const response = await fetch('https://silkdock.ai/v1/chat/completions', {method: 'POST',headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.YOUR_API_KEY}`},body: JSON.stringify({ model: 'gpt-4o', messages: [ { role: 'user', content: 'Hello, how are you?' } ]})});if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const data = await response.json();console.log(data.choices[0].message.content);import { useState } from 'react'function ChatComponent() {const [response, setResponse] = useState('');const [loading, setLoading] = useState(false);const sendMessage = async () => {setLoading(true);try {const res = await fetch('https://silkdock.ai/v1/chat/completions', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${process.env.YOUR_API_KEY}`},body: JSON.stringify({model: 'gpt-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]})}); if (!res.ok) { throw new Error(`HTTP error! status: ${res.status}`); } const data = await res.json(); setResponse(data.choices[0].message.content); } catch (error) { console.error('Error:', error); } finally { setLoading(false); }};return (<div><button onClick={sendMessage} disabled={loading}> {loading ? "Sending..." : "Send Message"}</button>{response && <p>{response}</p>}</div>); }export default ChatComponent;; // app/api/chat/route.tsimport { NextRequest, NextResponse } from "next/server";export async function POST(request: NextRequest) {const { message } = await request.json();const response = await fetch('https://silkdock.ai/v1/chat/completions', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${process.env.YOUR_API_KEY}`},body: JSON.stringify({model: 'gpt-4o',messages: [{ role: 'user', content: message }]})});if (!response.ok) {return NextResponse.json({ error: 'Failed to get response' }, { status: response.status });}const data = await response.json();return NextResponse.json({message: data.choices[0].message.content});}// Usage in component:// const response = await fetch('/api/chat', {// method: 'POST',// headers: { 'Content-Type': 'application/json' },// body: JSON.stringify({ message: 'Hello, how are you?' })// });import requestsimport osresponse = requests.post('https://silkdock.ai/v1/chat/completions',headers={'Content-Type': 'application/json','Authorization': f'Bearer {os.getenv("YOUR_API_KEY")}'},json={'model': 'gpt-4o','messages': [{'role': 'user', 'content': 'Hello, how are you?'}]})response.raise_for_status()print(response.json()['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 " YOUR_API_KEY); const char *body = "{"model":"gpt-4o","messages":" "[{"role":"user","content":"Hello, how are you?"}]}"; 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:@YOUR_API_KEY]forHTTPHeaderField:@"Authorization"];NSDictionary *payload = @{@"model": @"gpt-4o",@"messages": @[@{@"role": @"user", @"content": @"Hello, how are you?"}]};[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:payload options:0 error:nil]];NSURLSessionDataTask *task = [session dataTaskWithRequest:requestcompletionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];NSLog(@"%@", json[@"choices"][0][@"message"][@"content"]);}];[task resume];import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.URI;String apiKey = System.getenv("YOUR_API_KEY");String requestBody = """{"model": "gpt-4o","messages": [{"role": "user", "content": "Hello, how are you?"}]}""";HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://silkdock.ai/v1/chat/completions")).header("Content-Type", "application/json").header("Authorization", "Bearer " + apiKey).POST(HttpRequest.BodyPublishers.ofString(requestBody)).build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());import okhttp3.*;import java.io.IOException;OkHttpClient client = new OkHttpClient();String apiKey = System.getenv("YOUR_API_KEY");String json = "{"model":"gpt-4o","messages":[{"role":"user","content":"Hello, how are you?"}]}";RequestBody body = RequestBody.create(json, MediaType.get("application/json"));Request request = new Request.Builder().url("https://silkdock.ai/v1/chat/completions").addHeader("Authorization", "Bearer " + apiKey).post(body).build();try (Response response = client.newCall(request).execute()) {System.out.println(response.body().string());}import kong.unirest.HttpResponse;import kong.unirest.Unirest;String apiKey = System.getenv("YOUR_API_KEY");HttpResponse<String> response = Unirest.post("https://silkdock.ai/v1/chat/completions").header("Content-Type", "application/json").header("Authorization", "Bearer " + apiKey).body("{"model":"gpt-4o","messages":[{"role":"user","content":"Hello, how are you?"}]}").asString();System.out.println(response.getBody());package mainimport ( "bytes" "encoding/json" "fmt" "net/http" "os")type ChatRequest struct {Model string `json:"model"`Messages []Message `json:"messages"`}type Message struct {Role string `json:"role"`Content string `json:"content"`}func main() {apiKey := os.Getenv("YOUR_API_KEY") requestBody := ChatRequest{ Model: "gpt-4o", Messages: []Message{{Role: "user", Content: "Hello, how are you?"}}, } jsonData, _ := json.Marshal(requestBody) req, _ := http.NewRequest("POST", "https://silkdock.ai/v1/chat/completions", bytes.NewBuffer(jsonData)) req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer "+apiKey) client := &http.Client{} resp, _ := client.Do(req) defer resp.Body.Close() fmt.Println("Response received")}<?php$apiKey = $_ENV['YOUR_API_KEY'];$data = ['model' => 'gpt-4o','messages' => [['role' => 'user', 'content' => 'Hello, how are you?']]];$options = [ 'http' => [ 'header' => [ 'Content-Type: application/json', 'Authorization: Bearer ' . $apiKey ], 'method' => 'POST', 'content' => json_encode($data)]];$context = stream_context_create($options);$response = file_get_contents('https://silkdock.ai/v1/chat/completions',false,$context);if ($response === FALSE) {throw new Exception('Request failed');}$result = json_decode($response, true);echo $result['choices'][0]['message']['content'];?><?phprequire_once 'HTTP/Request2.php';$apiKey = $_ENV['YOUR_API_KEY'];$request = new HTTP_Request2('https://silkdock.ai/v1/chat/completions', HTTP_Request2::METHOD_POST);$request->setHeader('Content-Type', 'application/json');$request->setHeader('Authorization', 'Bearer ' . $apiKey);$request->setBody(json_encode(['model' => 'gpt-4o','messages' => [['role' => 'user', 'content' => 'Hello, how are you?']]]));$response = $request->send();$result = json_decode($response->getBody(), true);echo $result['choices'][0]['message']['content'];?><?phprequire 'vendor/autoload.php';use GuzzleHttp\Client;$apiKey = $_ENV['YOUR_API_KEY'];$client = new Client();$response = $client->post('https://silkdock.ai/v1/chat/completions', ['headers' => ['Content-Type' => 'application/json','Authorization' => 'Bearer ' . $apiKey,],'json' => ['model' => 'gpt-4o','messages' => [['role' => 'user', 'content' => 'Hello, how are you?']],],]);$result = json_decode($response->getBody(), true);echo $result['choices'][0]['message']['content'];?><?php$apiKey = $_ENV['YOUR_API_KEY'];$client = new http\Client;$request = new http\Client\Request('POST', 'https://silkdock.ai/v1/chat/completions');$body = new http\Message\Body;$body->append(json_encode(['model' => 'gpt-4o','messages' => [['role' => 'user', 'content' => 'Hello, how are you?']],]));$request->setBody($body);$request->setHeaders(['Content-Type' => 'application/json','Authorization' => 'Bearer ' . $apiKey,]);$client->enqueue($request)->send();$response = $client->getResponse();$result = json_decode($response->getBody(), true);echo $result['choices'][0]['message']['content'];?>require 'net/http'require 'json'require 'uri'uri = URI('https://silkdock.ai/v1/chat/completions')http = Net::HTTP.new(uri.host, uri.port)http.use_ssl = truerequest = Net::HTTP::Post.new(uri)request['Content-Type'] = 'application/json'request['Authorization'] = "Bearer #{ENV['YOUR_API_KEY']}"request.body = {model: 'gpt-4o',messages: [{ role: 'user', content: 'Hello, how are you?' }]}.to_jsonresponse = http.request(request)if response.code != '200'raise "HTTP Error: #{response.code}"endresult = JSON.parse(response.body)puts result['choices'][0]['message']['content']use reqwest::Client;use serde_json::json;use std::env;#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> {let client = Client::new();let api_key = env::var("YOUR_API_KEY")?; let response = client .post("https://silkdock.ai/v1/chat/completions") .header("Content-Type", "application/json") .header("Authorization", format!("Bearer {}", api_key)) .json(&json!({ "model": "gpt-4o", "messages": [ {"role": "user", "content": "Hello, how are you?"} ] })) .send() .await?; let result: serde_json::Value = response.json().await?; println!("{}", result["choices"][0]["message"]["content"]); Ok(())}3 · Going further
- Streaming: pass
stream: trueto any request—SilkDoc will proxy the event stream unchanged. - Monitoring: Every call appears in the dashboard with latency, cost & token.
4 · FAQ
Happy building! ✨
Last updated on