Vector Search Developer API

Semantic Search Bridge

Connect modern AI models, custom GPTs, and autonomous agents directly with the zeelproject.com catalog via high-speed semantic search.

API Specification (Text Search)

To run a text-based semantic search query, send an HTTP GET request to the search endpoint:

GET https://api.zeelproject.com/v1/?q={query}&page={page}&limit={limit}&lang={lang}&type={type}

Request Parameters

Parameter Type Status Description
q string Required* The search text query (e.g. modern sofa). *Optional only when performing image search via POST.
page integer Optional Page number for pagination. Default: 1.
limit integer Optional Quantity of results per page. Clamped from 5 to 40 (default: 5).
lang string Optional Output language translations. Supported: en, ru, hy, fr, de, it, es, zh (default: en).
score float Optional Similarity score threshold filtering (from 0.0 to 1.0, default: 0.0 / disabled).
type string Optional Content type filter: product (3D Models + Textures), model, scene, texture, set. Omit to search all types.

Visual Search (Image, URL, or Base64)

Search the catalog visually using reference images. Built for AI models, agents, and modern apps with multiple flexible input methods:

GET https://api.zeelproject.com/v1/?image_url={url}&page={page}&limit={limit}&lang={lang}&type={type}

How Image Search Works

1

Send Image

Provide a public image_url, an uploaded image file, or image_base64.

2

CLIP Encoding

Image is processed through CLIP visual encoder to compute a high-dimensional embedding.

3

Qdrant Matching

Vector is matched in the vector database using Cosine similarity metric.

4

Data Enrichment

Results are enriched from SQL database with titles, prices, image URLs, and URLs.

Visual Search Parameters

Parameter Type / Method Status Description
image_url string (URL) • GET / POST Supported Public URL of reference image (Recommended for ChatGPT & Gemini Actions).
image (or file) file (binary) • POST multipart Supported Direct binary file upload (supports JPEG, PNG, WebP).
image_base64 string (Base64) • POST JSON Supported Base64-encoded image string in JSON payload.

Interactive Sandbox

Run test queries live and inspect the structured JSON response payload below.

output.json
Idle
// Responses will be displayed here in pretty-printed JSON...

Integration Examples

Select your language to view ready-to-use code snippets for query integration:

1. Text Search Integration

Query the semantic text search endpoint via HTTP GET:

curl -G "https://api.zeelproject.com/v1/" \
  --data-urlencode "q=modern sofa" \
  -d "page=1" \
  -d "limit=5" \
  -d "lang=en" \
  -d "score=0.295" \
  -d "type=product"
const url = new URL("https://api.zeelproject.com/v1/");
url.searchParams.append("q", "modern sofa");
url.searchParams.append("page", "1");
url.searchParams.append("limit", "5");
url.searchParams.append("lang", "en");
url.searchParams.append("score", "0.295");
url.searchParams.append("type", "product");
 
fetch(url)
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
import requests
 
url = "https://api.zeelproject.com/v1/"
params = {
    "q": "modern sofa",
    "page": 1,
    "limit": 5,
    "lang": "en",
    "score": 0.295,
    "type": "product"
}
 
response = requests.get(url, params=params)
print(response.json())
<?php
$url = "https://api.zeelproject.com/v1/?" . http_build_query([
    "q" => "modern sofa",
    "page" => 1,
    "limit" => 5,
    "lang" => "en",
    "score" => 0.295,
    "type" => "product"
]);
 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
 
print_r($data);
?>

2. Visual Search Integration (URL, File Upload & Base64)

Ready-to-use code examples for all 3 visual search methods (Image URL, Multipart File Upload, and Base64 JSON):

# Option 1: Image URL (GET - Recommended for AI Models & GPTs)
curl -G "https://api.zeelproject.com/v1/" \
  --data-urlencode "image_url=https://example.com/photo.jpg" \
  -d "limit=5" \
  -d "type=product"

# Option 2: Direct File Upload (POST multipart/form-data)
curl -X POST "https://api.zeelproject.com/v1/?limit=5&type=product" \
  -F "image=@/path/to/photo.jpg"

# Option 3: Base64 JSON Payload (POST application/json)
curl -X POST "https://api.zeelproject.com/v1/" \
  -H "Content-Type: application/json" \
  -d '{"image_base64": "data:image/jpeg;base64,...", "limit": 5, "type": "product"}'
// Option 1: Search by Image URL (GET)
const url = new URL("https://api.zeelproject.com/v1/");
url.searchParams.append("image_url", "https://example.com/photo.jpg");
url.searchParams.append("limit", "5");
url.searchParams.append("type", "product");
const resUrl = await fetch(url).then(r => r.json());

// Option 2: Direct File Upload (POST FormData)
const formData = new FormData();
formData.append("image", fileInput.files[0]);
const resFile = await fetch("https://api.zeelproject.com/v1/?limit=5&type=product", {
  method: "POST",
  body: formData
}).then(r => r.json());

// Option 3: Base64 JSON Payload (POST JSON)
const resB64 = await fetch("https://api.zeelproject.com/v1/", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    image_base64: "data:image/jpeg;base64,...",
    limit: 5,
    type: "product"
  })
}).then(r => r.json());
import requests

# Option 1: Search by Image URL (Ideal for Custom GPTs & Gemini)
res_url = requests.get("https://api.zeelproject.com/v1/", params={
    "image_url": "https://example.com/photo.jpg",
    "limit": 5,
    "type": "product"
})
print(res_url.json())

# Option 2: Direct File Upload (POST multipart)
with open("photo.jpg", "rb") as f:
    res_file = requests.post(
        "https://api.zeelproject.com/v1/",
        params={"limit": 5, "type": "product"},
        files={"image": f}
    )
print(res_file.json())

# Option 3: Base64 JSON (POST application/json)
res_b64 = requests.post("https://api.zeelproject.com/v1/", json={
    "image_base64": "data:image/jpeg;base64,...",
    "limit": 5,
    "type": "product"
})
print(res_b64.json())
<?php
// Option 1: Search by Image URL (GET)
$url = "https://api.zeelproject.com/v1/?" . http_build_query([
    "image_url" => "https://example.com/photo.jpg",
    "limit"     => 5,
    "type"      => "product"
]);
$data_url = json_decode(file_get_contents($url), true);

// Option 2: Direct File Upload (POST with CURLFile)
$ch = curl_init("https://api.zeelproject.com/v1/?limit=5&type=product");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    "image" => new CURLFile("/path/to/photo.jpg", "image/jpeg", "photo.jpg")
]);
$data_file = json_decode(curl_exec($ch), true);
curl_close($ch);

// Option 3: Base64 JSON Payload (POST JSON)
$ch = curl_init("https://api.zeelproject.com/v1/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    "image_base64" => "data:image/jpeg;base64,...",
    "limit"        => 5,
    "type"         => "product"
]));
$data_b64 = json_decode(curl_exec($ch), true);
curl_close($ch);
?>