DINOv3dinov3
Image embeddings for similarity and retrieval. Built with DINOv3
0.05 per image
SigLIP 2 embeds images and texts in one vector space, so images can be matched to text queries and labels without training.
| Billed item | Unit | Credits |
|---|---|---|
| Image embedding One image per request. | per image | 0.05 ≈ US$0.00005 top-up |
| Text embedding Each string in texts[]. | per text input | 0.01 ≈ US$0.00001 top-up |
Included in the public pool: 100 calls per day after sign-up. Prices are in credits. Failed calls cost nothing.
Recorded responses of the API on sample images.



POST https://api.stack.foldbun.com/v1/embeddings with a Bearer API key. Each call carries either one image or a list of texts.
# macOS: replace "base64 -w0 beach-dog.webp" with "base64 -i beach-dog.webp" curl https://api.stack.foldbun.com/v1/embeddings \ -H "Authorization: Bearer $FOLDBUN_API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF {"model": "siglip2", "image": {"base64": "$(base64 -w0 beach-dog.webp)"}} EOF
import base64, os, requests with open("beach-dog.webp", "rb") as f: image = base64.b64encode(f.read()).decode() r = requests.post( "https://api.stack.foldbun.com/v1/embeddings", headers={"Authorization": f"Bearer {os.environ['FOLDBUN_API_KEY']}"}, json={"model": "siglip2", "image": {"base64": image}}, timeout=60, ) r.raise_for_status() print(r.json()) # vectors are L2-normalised: similarity = dot product
{
"id": "call_01a1913e-bed1-7605-b1be-55da62598752",
"model": "siglip2",
"image": {"height": 1008, "id": "img_d94c2292…17f8", "width": 1512},
"dimensions": 768,
"embeddings": [
{"index": 0, "vector": [0.0067, -0.0157, -0.0138, 0.0029, …]}
],
"cost": 0.05,
"balance": 1234.51
}| Field | Description |
|---|---|
| model | siglip2. |
| image | {"base64": "…"} or {"id": "img_…"} from an earlier response. Exactly one of image and texts. |
| texts | 1–64 strings of 1–1000 characters each. |
| Call | Credits |
|---|---|
| 1 image 0.05 | 0.05 ≈ US$0.00005 top-up |
| 10 texts 10 × 0.01 | 0.1 ≈ US$0.0001 top-up |
| 1,000 images 1,000 × 0.05 | 50 ≈ US$0.05 top-up |
| 1,000 texts 1,000 × 0.01 | 10 ≈ US$0.01 top-up |
GET /v1/modelsImages cost 0.05 credits each and texts 0.01 credits each. The model is in the public pool: 100 calls per day at no charge after sign-up. Failed calls cost nothing.
Image and text vectors share one space and are L2-normalised, so their dot product is the cosine similarity. Ranking candidate texts by that value gives zero-shot labels for an image.
No. Each call carries exactly one of image and texts. Two calls, one for the image and one for the texts, produce vectors that can be compared.
Call SigLIP 2 through the REST API; the docs list request and response formats.