API Reference
Base URL https://polyembed.com/api/v1
Authentication
Header
Authorization: Bearer pe_<team>_<key>
Endpoints
POST
/api/v1/embed/
Generate an embedding vector for the given text.
| Field | Type | Required | Values |
|---|---|---|---|
| text | string | Yes | any length |
| input_type | string | Yes | "document" | "query" |
| model | string | No | "base" | "enhanced" |
| shielded | boolean | No | true | false — threat model |
| max_tokens | integer | No |
512–4096
Max tokens to embed per request. Lower values = faster responses. Capped by your team's token budget (set in the dashboard), which is itself capped by your plan (free: 512, paid: 4,096). |
Response — 200
{
"embedding": [0.0229, 0.0319, -0.0165, ...],
"model": "base",
"shielded": false,
"dimensions": 1024,
"max_tokens": 4096
}
Code
Cause
200
Success
400
Missing or invalid fields
401
Invalid, revoked, or expired key
429
Rate limit exceeded
503
Enhanced model unavailable
Python SDK (recommended)
Install
pip install polyembed
Single
Batch
Shielded
Error handling
from polyembed import PolyEmbed client = PolyEmbed(api_key="pe_<team>_<key>") # Built-in retry (3x on 429/5xx) and 30s timeout embedding = client.embed( "Quarterly revenue exceeded projections by 12%", input_type="document", ) # embedding = [0.0229, 0.0319, ...] (1024 floats) # Optional: limit tokens for faster responses (512–plan max) embedding = client.embed( "Short lookup query", input_type="query", max_tokens=512, )
# 1-100 texts per batch — one ONNX call, one cache round-trip embeddings = client.embed_batch( ["text one", "text two", "text three"], input_type="document", max_tokens=1024, # optional — cap tokens per text ) # embeddings = [[0.02, ...], [0.03, ...], [0.01, ...]]
# Per-team encrypted — preserves similarity, cannot be reversed embedding = client.embed( "Classified procurement report", input_type="document", shielded=True, ) # Full response metadata response = client.embed( "search query", input_type="query", raw=True, ) # response.embedding, response.model, response.shielded, response.dimensions, response.max_tokens
from polyembed import ( AuthenticationError, # 401 — bad key ValidationError, # 400 — bad params RateLimitError, # 429 — retried automatically ServerError, # 5xx — retried automatically ) try: embedding = client.embed("hello", input_type="document") except RateLimitError: # Only raised after max_retries (default 3) exhausted ... except AuthenticationError: # Never retried — check your API key ...
Raw HTTP
cURL
Batch
Shielded
curl -X POST https://polyembed.com/api/v1/embed/ \ -H "Authorization: Bearer pe_your_team_key" \ -H "Content-Type: application/json" \ -d '{ "text": "Quarterly revenue exceeded projections by 12%", "input_type": "document", "max_tokens": 1024 }' # max_tokens is optional — omit to use your plan's default
curl -X POST https://polyembed.com/api/v1/embed/batch/ \ -H "Authorization: Bearer pe_your_team_key" \ -H "Content-Type: application/json" \ -d '{ "texts": ["text one", "text two"], "input_type": "document", "max_tokens": 2048 }'
curl -X POST https://polyembed.com/api/v1/embed/ \ -H "Authorization: Bearer pe_your_team_key" \ -H "Content-Type: application/json" \ -d '{ "text": "Classified document excerpt", "input_type": "document", "shielded": true }' # Implement retry logic for 429/5xx responses in production.