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:
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:
How Image Search Works
Send Image
Provide a public image_url, an uploaded image file, or image_base64.
CLIP Encoding
Image is processed through CLIP visual encoder to compute a high-dimensional embedding.
Qdrant Matching
Vector is matched in the vector database using Cosine similarity metric.
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.
// 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);
?>