curl --request POST \
--url https://embeddings.conare.ai/api/v1/embeddings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input_type": "document",
"input": [
"User prefers smaller islands, wants to avoid crowds.",
"ASA 104 certified, comfortable with bareboat charters."
]
}
'import requests
url = "https://embeddings.conare.ai/api/v1/embeddings"
payload = {
"input_type": "document",
"input": ["User prefers smaller islands, wants to avoid crowds.", "ASA 104 certified, comfortable with bareboat charters."]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input_type: 'document',
input: [
'User prefers smaller islands, wants to avoid crowds.',
'ASA 104 certified, comfortable with bareboat charters.'
]
})
};
fetch('https://embeddings.conare.ai/api/v1/embeddings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://embeddings.conare.ai/api/v1/embeddings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'input_type' => 'document',
'input' => [
'User prefers smaller islands, wants to avoid crowds.',
'ASA 104 certified, comfortable with bareboat charters.'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://embeddings.conare.ai/api/v1/embeddings"
payload := strings.NewReader("{\n \"input_type\": \"document\",\n \"input\": [\n \"User prefers smaller islands, wants to avoid crowds.\",\n \"ASA 104 certified, comfortable with bareboat charters.\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://embeddings.conare.ai/api/v1/embeddings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input_type\": \"document\",\n \"input\": [\n \"User prefers smaller islands, wants to avoid crowds.\",\n \"ASA 104 certified, comfortable with bareboat charters.\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://embeddings.conare.ai/api/v1/embeddings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input_type\": \"document\",\n \"input\": [\n \"User prefers smaller islands, wants to avoid crowds.\",\n \"ASA 104 certified, comfortable with bareboat charters.\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"model": "<string>",
"dims": 1024,
"embeddings": [
[
123
]
],
"usage": {
"totalChars": 123,
"approxTokens": 123
}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}Create embeddings
Embed up to 96 texts with the same self-hosted model that indexes and
retrieves memories. Choose document for vectors you will store and
query for vectors you will use to search them.
- Use your
sk-conare-...platform key atembeddings.conare.aiand directly at ConareDB: one server-side bearer covers both halves of a low-latency search path. This host terminates beside the US-East TPU; Azure and Nuxt are not in the response path. The digest is registered immediately at the active US and exact-space Europe rollback origins: no embedding-specific scope, tenant allowlist, or propagation wait. - Send it as
Authorization: Bearer sk-conare-...;X-API-Keyand a raw unprefixed Authorization value are not supported. - Existing
cint_...Integration keys remain accepted through theapi.conare.aicompatibility ingress. - Stateless: nothing is stored, and no
endUserIdis involved. - DR2E5 is asymmetric.
input_type: document(the default) applies the certified passage contract.input_type: queryapplies the certified query contract and the current UTC[asked YYYY-MM-DD]conditioning used by managed Conare search. Never search with a document vector. - Vectors are unit-normalized and returned in input order; each input is at most 8,192 characters. Metered as embed tokens (~4 characters per token).
modelis a pin, not a selector: the endpoint serves exactly one model (named in every response), and any other name is a400(model_not_served). Pin it whenever vectors must stay compatible with an existing index.
curl --request POST \
--url https://embeddings.conare.ai/api/v1/embeddings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input_type": "document",
"input": [
"User prefers smaller islands, wants to avoid crowds.",
"ASA 104 certified, comfortable with bareboat charters."
]
}
'import requests
url = "https://embeddings.conare.ai/api/v1/embeddings"
payload = {
"input_type": "document",
"input": ["User prefers smaller islands, wants to avoid crowds.", "ASA 104 certified, comfortable with bareboat charters."]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input_type: 'document',
input: [
'User prefers smaller islands, wants to avoid crowds.',
'ASA 104 certified, comfortable with bareboat charters.'
]
})
};
fetch('https://embeddings.conare.ai/api/v1/embeddings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://embeddings.conare.ai/api/v1/embeddings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'input_type' => 'document',
'input' => [
'User prefers smaller islands, wants to avoid crowds.',
'ASA 104 certified, comfortable with bareboat charters.'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://embeddings.conare.ai/api/v1/embeddings"
payload := strings.NewReader("{\n \"input_type\": \"document\",\n \"input\": [\n \"User prefers smaller islands, wants to avoid crowds.\",\n \"ASA 104 certified, comfortable with bareboat charters.\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://embeddings.conare.ai/api/v1/embeddings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input_type\": \"document\",\n \"input\": [\n \"User prefers smaller islands, wants to avoid crowds.\",\n \"ASA 104 certified, comfortable with bareboat charters.\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://embeddings.conare.ai/api/v1/embeddings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input_type\": \"document\",\n \"input\": [\n \"User prefers smaller islands, wants to avoid crowds.\",\n \"ASA 104 certified, comfortable with bareboat charters.\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"model": "<string>",
"dims": 1024,
"embeddings": [
[
123
]
],
"usage": {
"totalChars": 123,
"approxTokens": 123
}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"statusCode": 123,
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": {}
}Authorizations
The universal platform key, prefixed sk-conare-. The same bearer is
provisioned by digest into ConareDB and accepted by the stateless
embeddings endpoint, so database-backed search needs only one key.
Body
Texts to embed, each at most 8192 characters.
1 - 96 elements1 - 8192document creates passage-space vectors to store. query creates dated query-space vectors to search them. DR2E5 is asymmetric, so the two roles are not interchangeable.
query, document Optional pin on the expected embedding model. The endpoint serves exactly one model; naming any other is a 400 (model_not_served), never a silent substitution.
1Response
One vector per input, in input order.