7.4 KiB
Rerank API Reference
Cohere/Jina-compatible reranking API with multiple backend support.
Base URL
{BASE_URL}
- Local development:
http://localhost:54200 - Docker (internal):
http://didiAI-rerank-api:14200 - Production: Use your configured hostname
Authentication
Authentication is optional. If RERANK_API_TOKENS is set, requests require a Bearer token:
Authorization: Bearer <token>
Health endpoints (/health, /ready) are always public.
Endpoints
Rerank Documents
Rerank documents against a query based on relevance.
Endpoints:
POST /v1/rerankPOST /v2/rerank(alias)
Request Headers:
| Header | Required | Description |
|---|---|---|
Content-Type |
Yes | Must be application/json |
Authorization |
If auth enabled | Bearer <token> |
Request Body:
{
"model": "BAAI/bge-reranker-v2-m3",
"query": "What is machine learning?",
"documents": [
"Machine learning is a subset of AI",
"Cats are pets",
"Deep learning uses neural networks"
],
"top_n": 3,
"return_documents": false,
"backend": null
}
| Field | Type | Required | Description |
|---|---|---|---|
model |
string | Yes | Model identifier for reranking |
query |
string | Yes | The search query |
documents |
string[] | Yes | Documents to rerank (1-1000) |
top_n |
integer | No | Number of results to return (default: all) |
return_documents |
boolean | No | Include document text in response |
backend |
string | No | Override default backend: "vllm" or "llamacpp" |
Response:
{
"id": "rerank-abc123def456",
"model": "BAAI/bge-reranker-v2-m3",
"results": [
{
"index": 2,
"relevance_score": 0.9523,
"document": null
},
{
"index": 0,
"relevance_score": 0.8876,
"document": null
},
{
"index": 1,
"relevance_score": 0.0234,
"document": null
}
],
"usage": {
"total_tokens": 150
},
"backend": "vllm"
}
Example:
curl -X POST http://localhost:54200/v1/rerank \
-H "Content-Type: application/json" \
-d '{
"model": "BAAI/bge-reranker-v2-m3",
"query": "What is machine learning?",
"documents": [
"Machine learning is a subset of AI",
"Cats are pets",
"Deep learning uses neural networks"
]
}'
Get top 2 results:
curl -X POST http://localhost:54200/v1/rerank \
-H "Content-Type: application/json" \
-d '{
"model": "BAAI/bge-reranker-v2-m3",
"query": "programming languages",
"documents": ["Python", "Java", "Cooking", "C++", "Hiking"],
"top_n": 2
}'
Include documents in response:
curl -X POST http://localhost:54200/v1/rerank \
-H "Content-Type: application/json" \
-d '{
"model": "BAAI/bge-reranker-v2-m3",
"query": "AI",
"documents": ["Machine learning", "Deep learning", "Recipes"],
"return_documents": true
}'
List Models
List available reranking models.
Endpoint: GET /v1/models
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
backend |
string | No | Filter by backend: "vllm" or "llamacpp" |
Response:
{
"object": "list",
"data": [
{
"id": "BAAI/bge-reranker-v2-m3",
"backend": "vllm",
"loaded": true,
"max_input_tokens": null
}
]
}
Example:
# List all models
curl http://localhost:54200/v1/models
# List models from specific backend
curl "http://localhost:54200/v1/models?backend=vllm"
List Backends
List available backends.
Endpoint: GET /v1/backends
Response:
{
"backends": ["vllm", "llamacpp"]
}
Example:
curl http://localhost:54200/v1/backends
Health Check
Detailed health status including per-backend health.
Endpoint: GET /health
Response:
{
"status": "healthy",
"backends": [
{
"name": "vllm",
"healthy": true,
"message": null
}
]
}
Status values:
"healthy"- All backends are healthy"degraded"- Some backends are unhealthy"unhealthy"- All backends are unhealthy
Example:
curl http://localhost:54200/health
Readiness Probe
Simple readiness check for Kubernetes.
Endpoint: GET /ready
Response:
{
"ready": true
}
Example:
curl http://localhost:54200/ready
Error Responses
All errors follow this format:
{
"detail": "Error message describing what went wrong"
}
HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request (invalid parameters, backend not enabled) |
| 401 | Authentication required or failed |
| 429 | Rate limit exceeded |
| 503 | Service unavailable (backend connection failed) |
| 504 | Gateway timeout (backend request timed out) |
Rate Limit Response
{
"detail": "Too many requests",
"retry_after": 1.5
}
Headers include: Retry-After: 2
Request Headers
| Header | Required | Description |
|---|---|---|
Content-Type |
Yes (POST) | Must be application/json |
Authorization |
If auth enabled | Bearer <token> |
X-Request-ID |
No | Request tracking ID (generated if not provided) |
Response always includes X-Request-ID header for tracking.
SDK Examples
Python (httpx)
import httpx
async def rerank_documents(
query: str,
documents: list[str],
top_n: int | None = None,
) -> list[tuple[int, float]]:
async with httpx.AsyncClient() as client:
response = await client.post(
"http://localhost:54200/v1/rerank",
json={
"model": "BAAI/bge-reranker-v2-m3",
"query": query,
"documents": documents,
"top_n": top_n,
},
headers={"Authorization": "Bearer your-token"},
)
response.raise_for_status()
data = response.json()
return [(r["index"], r["relevance_score"]) for r in data["results"]]
Python (requests)
import requests
def rerank_documents(query: str, documents: list[str]) -> dict:
response = requests.post(
"http://localhost:54200/v1/rerank",
json={
"model": "BAAI/bge-reranker-v2-m3",
"query": query,
"documents": documents,
},
)
response.raise_for_status()
return response.json()
# Usage
result = rerank_documents(
"What is AI?",
["Machine learning", "Deep learning", "Cooking recipes"]
)
for r in result["results"]:
print(f"Doc {r['index']}: {r['relevance_score']:.4f}")
curl
# Basic reranking
curl -X POST http://localhost:54200/v1/rerank \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-token" \
-d '{
"model": "BAAI/bge-reranker-v2-m3",
"query": "programming",
"documents": ["Python", "Java", "Cooking"]
}'
# With specific backend
curl -X POST http://localhost:54200/v1/rerank \
-H "Content-Type: application/json" \
-d '{
"model": "BAAI/bge-reranker-v2-m3",
"query": "programming",
"documents": ["Python", "Java"],
"backend": "vllm"
}'
# v2 endpoint (identical)
curl -X POST http://localhost:54200/v2/rerank \
-H "Content-Type: application/json" \
-d '{
"model": "BAAI/bge-reranker-v2-m3",
"query": "test",
"documents": ["doc1", "doc2"]
}'