Execute hybrid legal search across legislation, court precedents, decrees, and regulations.
POST https://api.dike.it.com/v1/search
Authorization: Bearer dike_live_xxxxxxxx
Content-Type: application/jsonRendering diagram...
Request Parameters
{
"query": "مسؤولية الناقل الجوي عن تأخير الرحلات وتلف الأمتعة",
"top_k": 10,
"filters": {
"doc_type": ["legislation", "case_law"],
"jurisdiction": "EG",
"year_from": 1990,
"year_to": 2026,
"status": ["in_force"]
},
"rerank": true,
"include_text": true
}Body Schema
| Parameter | Type | Default | Constraints | Description |
|---|---|---|---|---|
query | string | Required | 1–1000 chars | The natural language search query in Arabic or English. |
top_k | integer | 10 | 1–50 | Number of top results to return. |
filters.jurisdiction | string | null | "EG", "SA", "AE" | Restrict search to an ISO country code. |
filters.doc_type | string[] | null | legislation, case_law, fatwa, regulation, decree | Array of document types to include. |
filters.year_from | integer | null | 1800–2100 | Earliest Gregorian enactment year (inclusive). |
filters.year_to | integer | null | 1800–2100 | Latest Gregorian enactment year (inclusive). |
filters.status | string[] | null | in_force, amended, repealed, unknown | Filter by statutory validity status. |
rerank | boolean | true | true or false | Run cross-encoder reranking over 4 × top_k candidates. |
include_text | boolean | true | true or false | When false, omits snippet to minimize response bandwidth. |
Code Examples
curl -X POST https://api.dike.it.com/v1/search \
-H "Authorization: Bearer $DIKE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "مسؤولية الناقل الجوي عن تأخير الرحلات",
"top_k": 5,
"filters": {
"jurisdiction": "EG",
"status": ["in_force"]
},
"rerank": true,
"include_text": true
}'import os
import httpx
client = httpx.Client(
base_url="https://api.dike.it.com",
headers={"Authorization": f"Bearer {os.getenv('DIKE_API_KEY')}"},
timeout=10.0,
)
response = client.post(
"/v1/search",
json={
"query": "مسؤولية الناقل الجوي عن تأخير الرحلات",
"top_k": 5,
"filters": {
"jurisdiction": "EG",
"status": ["in_force"],
},
"rerank": True,
"include_text": True,
},
)
response.raise_for_status()
data = response.json()
print(f"Retrieved {len(data['results'])} results in {data['took_ms']}ms (Fusion: {data['fusion']})")const apiKey = process.env.DIKE_API_KEY;
async function searchLegalCorpus() {
const res = await fetch('https://api.dike.it.com/v1/search', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: 'مسؤولية الناقل الجوي عن تأخير الرحلات',
top_k: 5,
filters: {
jurisdiction: 'EG',
status: ['in_force'],
},
rerank: true,
include_text: true,
}),
});
if (!res.ok) {
throw new Error(`Search failed: ${res.statusText}`);
}
const data = await res.json();
return data;
}Response Schema
{
"results": [
{
"canonical_id": "eg-leg-1999-17",
"score": 0.942,
"doc_type": "legislation",
"title": "قانون التجارة رقم 17 لسنة 1999",
"article_no": "217",
"snippet": "يسأل الناقل الجوي عن الضرر الذي ينشأ عن هلاك الأمتعة أو تلفها أو تأخر وصولها أثناء النقل الجوي...",
"year": 1999,
"status": "in_force",
"citation_string": "المادة 217 من قانون التجارة رقم 17 لسنة 1999",
"meta": {
"legal_domain": "commercial",
"topics": ["air carriage", "carrier liability"]
}
}
],
"took_ms": 138,
"fusion": "rrf",
"reranked": true
}Response Fields
results[].canonical_id: Universal identifier for the document ({jurisdiction}-{doc_type}-{year}-{number}).results[].score: Normalized relevance score (0.0to1.0).results[].doc_type: Category (legislation,case_law,fatwa,decree,regulation).results[].article_no: Specific article or clause number, if matched at the article level.results[].snippet: Extracted text chunk (capped at 800 characters).results[].citation_string: Formatted Arabic citation suitable for legal briefs and footnotes.results[].meta: Optional document-specific metadata (e.g.court,session_date,fatwa_number).took_ms: Total server processing time in milliseconds.fusion: Retrieval method utilized ("rrf"for dense+sparse,"dense"for dense fallback).reranked: Boolean indicating whether cross-encoder reranking was applied.
Error Codes
| Status | Code | Cause |
|---|---|---|
401 | unauthorized | Missing, malformed, or revoked API key |
422 | validation_error | Missing query or top_k outside valid range (1 to 50) |
429 | rate_limited | Exceeded per-minute rate limit for your tier |
503 | upstream_unavailable | Vector search or embedding service temporary outage |
See Error Catalog for problem details handling.