API
Embedding
Generate vector embeddings for text.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Model ID, e.g. text-embedding-ada-002. |
input | string|array | Yes | Text to embed. Single string or array of strings. |
encoding_format | string | No | float (default) or base64. |
dimensions | integer | No | Embedding dimensions (model-dependent). |
Input length limits
Each input item must fit the selected model's token limit. For example, text-embedding-3-small accepts about 8192 tokens per item. Every string in a batch is checked separately, and the gateway does not split an oversized item automatically.
The dimensions field changes the returned vector size and can reduce storage and retrieval costs, but it does not increase the input token limit. Split long documents before embedding them. Blocks of 500-2000 tokens with a small overlap are a common starting point; explicit splitting avoids silently discarding text.
import tiktoken
from openai import OpenAI
client = OpenAI(api_key="sk-xxx", base_url="https://silkdock.ai/v1")
encoding = tiktoken.get_encoding("cl100k_base")
def chunk_text(text: str, max_tokens: int = 2000, overlap: int = 100) -> list[str]:
tokens = encoding.encode(text)
step = max_tokens - overlap
return [
encoding.decode(tokens[start:start + max_tokens])
for start in range(0, len(tokens), step)
]
response = client.embeddings.create(
model="text-embedding-3-small",
input=chunk_text(long_document),
)
embeddings = [item.embedding for item in response.data]Examples
curl -X POST https://silkdock.ai/v1/embeddings \-H "Authorization: Bearer $SILKDOCK_API_KEY" \-H "Content-Type: application/json" \-d '{ "model": "text-embedding-ada-002", "input": ["Hello world", "Goodbye world"]}'curl -X POST https://silkdock.ai/v1/embeddings ^-H "Authorization: Bearer %SILKDOCK_API_KEY%" ^-H "Content-Type: application/json" ^-d "{"model":"text-embedding-ada-002","input":["Hello world","Goodbye world"]}"http POST https://silkdock.ai/v1/embeddings \Authorization:"Bearer $SILKDOCK_API_KEY" \model=text-embedding-ada-002 \input:='["Hello world","Goodbye world"]'wget -qO- https://silkdock.ai/v1/embeddings \--method=POST \--header="Authorization: Bearer $SILKDOCK_API_KEY" \--header="Content-Type: application/json" \--body-data='{"model":"text-embedding-ada-002","input":["Hello world","Goodbye world"]}'$headers = @{ "Authorization" = "Bearer $env:SILKDOCK_API_KEY" "Content-Type" = "application/json"}$body = @{ model = "text-embedding-ada-002" input = @("Hello world", "Goodbye world")} | ConvertTo-Json -Depth 3Invoke-RestMethod -Uri "https://silkdock.ai/v1/embeddings" -Method POST -Headers $headers -Body $bodyconst { OpenAI } = require("openai");const client = new OpenAI({apiKey: process.env.SILKDOCK_API_KEY,baseURL: "https://silkdock.ai/v1",});const response = await client.embeddings.create({model: "text-embedding-ada-002",input: ["Hello world", "Goodbye world"],});response.data.forEach(item => {console.log(`[${item.index}] ${item.embedding.slice(0, 3)} ...`);});const res = await fetch("https://silkdock.ai/v1/embeddings", {method: "POST",headers: { "Authorization": `Bearer ${process.env.SILKDOCK_API_KEY}`, "Content-Type": "application/json",},body: JSON.stringify({ model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"],}),});const { data } = await res.json();console.log(data[0].embedding); // float[]import axios from "axios";const { data: result } = await axios.post("https://silkdock.ai/v1/embeddings",{ model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"],},{ headers: { Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`, "Content-Type": "application/json", },});console.log(result.data[0].embedding);$.ajax({url: "https://silkdock.ai/v1/embeddings",method: "POST",contentType: "application/json",headers: { Authorization: `Bearer ${API_KEY}` },data: JSON.stringify({ model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"],}),success: (result) => console.log(result.data[0].embedding),});const xhr = new XMLHttpRequest();xhr.open("POST", "https://silkdock.ai/v1/embeddings");xhr.setRequestHeader("Authorization", `Bearer ${API_KEY}`);xhr.setRequestHeader("Content-Type", "application/json");xhr.onload = () => {const result = JSON.parse(xhr.responseText);console.log(result.data[0].embedding);};xhr.send(JSON.stringify({model: "text-embedding-ada-002",input: ["Hello world", "Goodbye world"],}));const request = require("request");request.post({url: "https://silkdock.ai/v1/embeddings",headers: { Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`, "Content-Type": "application/json",},json: true,body: { model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"],},}, (err, res, body) => console.log(body.data[0].embedding));const unirest = require("unirest");const res = await unirest.post("https://silkdock.ai/v1/embeddings").headers({ Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`, "Content-Type": "application/json",}).send({ model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"],});console.log(res.body.data[0].embedding);import OpenAI from "openai";const client = new OpenAI({apiKey: process.env.SILKDOCK_API_KEY,baseURL: "https://silkdock.ai/v1",});const response = await client.embeddings.create({model: "text-embedding-ada-002",input: ["Hello world", "Goodbye world"],});response.data.forEach(item => {console.log(`[${item.index}] ${item.embedding.slice(0, 3)} ...`);});const res = await fetch("https://silkdock.ai/v1/embeddings", {method: "POST",headers: { "Authorization": `Bearer ${process.env.SILKDOCK_API_KEY}`, "Content-Type": "application/json",},body: JSON.stringify({ model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"],}),});const { data } = await res.json();console.log(data[0].embedding); // float[]import requests, osres = requests.post( "https://silkdock.ai/v1/embeddings", headers={"Authorization": f"Bearer {os.getenv('SILKDOCK_API_KEY')}"}, json={ "model": "text-embedding-ada-002", "input": ["Hello world", "Goodbye world"], },)for item in res.json()["data"]: print(f"[{item['index']}] {item['embedding'][:3]} ...")import osfrom openai import OpenAIclient = OpenAI( api_key=os.getenv("SILKDOCK_API_KEY"), base_url="https://silkdock.ai/v1")response = client.embeddings.create( model="text-embedding-ada-002", input=["Hello world", "Goodbye world"])for item in response.data: print(f"[{item.index}] {item.embedding[:3]} ...")#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":"text-embedding-ada-002"," ""input":["Hello world","Goodbye world"]}"; curl_easy_setopt(curl, CURLOPT_URL, "https://silkdock.ai/v1/embeddings"); 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/embeddings"];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": @"text-embedding-ada-002", @"input": @[@"Hello world", @"Goodbye world"]};[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[@"data"][0][@"embedding"]); }];[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();EmbeddingCreateResponse response = client.embeddings().create( EmbeddingCreateParams.builder() .model(EmbeddingModel.TEXT_EMBEDDING_ADA_002) .input(EmbeddingCreateParams.Input.ofArrayOfStrings( List.of("Hello world", "Goodbye world"))) .build());response.data().forEach(e -> System.out.println(e.embedding()));import java.net.http.*;import java.net.URI;var req = HttpRequest.newBuilder() .uri(URI.create("https://silkdock.ai/v1/embeddings")) .header("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString( """{"model":"text-embedding-ada-002", "input":["Hello world","Goodbye world"]}""")) .build();System.out.println(HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString()).body());import okhttp3.*;OkHttpClient client = new OkHttpClient();String json = "{"model":"text-embedding-ada-002"," + ""input":["Hello world","Goodbye world"]}";Request request = new Request.Builder() .url("https://silkdock.ai/v1/embeddings") .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;HttpResponse<String> response = Unirest.post("https://silkdock.ai/v1/embeddings") .header("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY")) .header("Content-Type", "application/json") .body("{"model":"text-embedding-ada-002"," + ""input":["Hello world","Goodbye world"]}") .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.Embeddings.New(context.Background(), openai.EmbeddingNewParams{ Model: openai.F(openai.EmbeddingModelTextEmbeddingAda002), Input: openai.F(openai.EmbeddingNewParamsInputUnion( openai.EmbeddingNewParamsInputArrayOfStrings( []string{"Hello world", "Goodbye world"}, ), )), }, ) fmt.Println(resp.Data[0].Embedding)}package mainimport ( "bytes" "encoding/json" "fmt" "io" "net/http" "os")func main() { body, _ := json.Marshal(map[string]any{ "model": "text-embedding-ada-002", "input": []string{"Hello world", "Goodbye world"}, }) req, _ := http.NewRequest("POST", "https://silkdock.ai/v1/embeddings", 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/embeddings");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" => "text-embedding-ada-002", "input" => ["Hello world", "Goodbye world"], ]),]);echo curl_exec($ch);<?phprequire_once "HTTP/Request2.php";$request = new HTTP_Request2("https://silkdock.ai/v1/embeddings", HTTP_Request2::METHOD_POST);$request->setHeader("Authorization", "Bearer " . getenv("SILKDOCK_API_KEY"));$request->setHeader("Content-Type", "application/json");$request->setBody(json_encode([ "model" => "text-embedding-ada-002", "input" => ["Hello world", "Goodbye world"],]));echo $request->send()->getBody();<?phprequire "vendor/autoload.php";use GuzzleHttpClient;$client = new Client();$response = $client->post("https://silkdock.ai/v1/embeddings", [ "headers" => [ "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"), "Content-Type" => "application/json", ], "json" => [ "model" => "text-embedding-ada-002", "input" => ["Hello world", "Goodbye world"], ],]);echo $response->getBody();<?php$client = new httpClient;$request = new httpClientRequest("POST", "https://silkdock.ai/v1/embeddings");$request->setHeaders([ "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"), "Content-Type" => "application/json",]);$body = new httpMessageBody;$body->append(json_encode([ "model" => "text-embedding-ada-002", "input" => ["Hello world", "Goodbye world"],]));$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 = EmbeddingsQuery( model: "text-embedding-ada-002", input: "Hello world")let result = try await client.embeddings(query: query)print(result.data.first?.embedding ?? [])import Foundationvar req = URLRequest(url: URL(string: "https://silkdock.ai/v1/embeddings")!)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": "text-embedding-ada-002", "input": ["Hello world", "Goodbye world"],])let (data, _) = try! await URLSession.shared.data(for: req)print(String(data: data, encoding: .utf8)!)using OpenAI;using OpenAI.Embeddings;var client = new EmbeddingClient( model: "text-embedding-ada-002", credential: new System.ClientModel.ApiKeyCredential( Environment.GetEnvironmentVariable("SILKDOCK_API_KEY")!), options: new OpenAIClientOptions { Endpoint = new Uri("https://silkdock.ai/v1") });var result = await client.GenerateEmbeddingAsync("Hello world");Console.WriteLine(string.Join(", ", result.Value.ToFloats().ToArray()));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/embeddings", new { model = "text-embedding-ada-002", input = new[] { "Hello world", "Goodbye world" },});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.embeddings(parameters: { model: "text-embedding-ada-002", input: ["Hello world", "Goodbye world"]})puts response.dig("data", 0, "embedding")require "net/http"require "json"uri = URI("https://silkdock.ai/v1/embeddings")req = Net::HTTP::Post.new(uri)req["Authorization"] = "Bearer #{ENV['SILKDOCK_API_KEY']}"req["Content-Type"] = "application/json"req.body = {model: "text-embedding-ada-002",input: ["Hello world", "Goodbye world"]}.to_jsonres = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }puts res.bodyimport 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 response = client.embeddings().create( EmbeddingCreateParams.builder() .model(EmbeddingModel.TEXT_EMBEDDING_ADA_002) .input(EmbeddingCreateParams.Input.ofArrayOfStrings( listOf("Hello world", "Goodbye world"))) .build())println(response.data()[0].embedding())import java.net.http.*import java.net.URIval req = HttpRequest.newBuilder() .uri(URI.create("https://silkdock.ai/v1/embeddings")) .header("Authorization", "Bearer ${System.getenv("SILKDOCK_API_KEY")}") .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString( """{"model":"text-embedding-ada-002", "input":["Hello world","Goodbye world"]}""")) .build()println(HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString()).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/embeddings") .header("Authorization", format!("Bearer {}", std::env::var("SILKDOCK_API_KEY")?)) .json(&json!({ "model": "text-embedding-ada-002", "input": ["Hello world", "Goodbye world"] })) .send()?; println!("{}", res.text()?); Ok(())}POST /v1/embeddings HTTP/1.1Host: silkdock.aiAuthorization: Bearer <YOUR_API_KEY>Content-Type: application/json{"model": "text-embedding-ada-002","input": ["Hello world", "Goodbye world"]}import 'dart:convert';import 'package:http/http.dart' as http;void main() async {final res = await http.post( Uri.parse('https://silkdock.ai/v1/embeddings'), headers: { 'Authorization': 'Bearer ${const String.fromEnvironment("SILKDOCK_API_KEY")}', 'Content-Type': 'application/json', }, body: jsonEncode({ 'model': 'text-embedding-ada-002', 'input': ['Hello world', 'Goodbye world'], }),);print(res.body);}library(httr2)req <- request("https://silkdock.ai/v1/embeddings") |>req_headers( Authorization = paste("Bearer", Sys.getenv("SILKDOCK_API_KEY")), "Content-Type" = "application/json") |>req_body_json(list( model = "text-embedding-ada-002", input = list("Hello world", "Goodbye world")))resp <- req_perform(req)cat(resp_body_string(resp))(* requires cohttp-lwt-unix *)open Cohttp_lwt_unixopen Cohttpopen Lwtlet () =let body = {|{"model":"text-embedding-ada-002", "input":["Hello world","Goodbye world"]}|} 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/embeddings") >>= fun (_, body) -> Cohttp_lwt.Body.to_string body >>= fun s -> print_string s; return_unit)Response
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0023064255, -0.009327292, "..."] }
],
"model": "text-embedding-ada-002",
"usage": { "prompt_tokens": 8, "total_tokens": 8 }
}Last updated on