curl --request POST \
--url https://api.cala.ai/v1/knowledge/query \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"input": "companies.industry=fintech.founded_year>=2020"
}
'import requests
url = "https://api.cala.ai/v1/knowledge/query"
payload = { "input": "companies.industry=fintech.founded_year>=2020" }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({input: 'companies.industry=fintech.founded_year>=2020'})
};
fetch('https://api.cala.ai/v1/knowledge/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"entities": [
{
"entity_type": "Company",
"id": "e2932ee7-7b57-42b7-8c58-cdfcdf56ceb5",
"mentions": [
"Amenitiz"
],
"name": "Amenitiz"
},
{
"entity_type": "Company",
"id": "e843fc48-8339-4c99-a6e2-e7fb1cc738b1",
"mentions": [
"H2SITE"
],
"name": "H2SITE"
},
{
"entity_type": "Company",
"id": "af3ff4b5-27a9-45d5-8c67-b656cb38e6b8",
"mentions": [
"Fracttal"
],
"name": "Fracttal"
}
],
"results": [
{
"company": "Amenitiz",
"funding_amount": "€38.9M",
"round_type": "Series B",
"sector": "Hospitality SaaS",
"year": 2025
},
{
"company": "H2SITE",
"funding_amount": "€36M ($37.2M)",
"round_type": "Series B",
"sector": "Hydrogen Energy",
"year": 2025
},
{
"company": "Fracttal",
"funding_amount": "€29.8M ($35M)",
"round_type": "Series B",
"sector": "AI Maintenance",
"year": 2026
}
]
}{
"error": {
"error_type": "internal_server_error",
"message": "<string>"
},
"response_type": "ERROR"
}{
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Too many requests."
}Query
Get structured, typed JSON rows plus matching entities from Cala’s knowledge base.
Accepts either a Cala QL expression or a natural-language question as input — both produce the same structured response shape.
Examples:
{"input": "startups.location=Spain.funding>10M.funding<=50M"}
{"input": "companies.industry=fintech.founded_year>=2020"}
{"input": "people.role=CEO.company.industry=AI"}
{"input": "What are the biggest AI startups in Europe by funding?"}
Use this when you want structured, tabular data for programmatic use. Use knowledge_search when you want a natural-language answer instead. To look up a known entity by name use entity_search.
curl --request POST \
--url https://api.cala.ai/v1/knowledge/query \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"input": "companies.industry=fintech.founded_year>=2020"
}
'import requests
url = "https://api.cala.ai/v1/knowledge/query"
payload = { "input": "companies.industry=fintech.founded_year>=2020" }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({input: 'companies.industry=fintech.founded_year>=2020'})
};
fetch('https://api.cala.ai/v1/knowledge/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"entities": [
{
"entity_type": "Company",
"id": "e2932ee7-7b57-42b7-8c58-cdfcdf56ceb5",
"mentions": [
"Amenitiz"
],
"name": "Amenitiz"
},
{
"entity_type": "Company",
"id": "e843fc48-8339-4c99-a6e2-e7fb1cc738b1",
"mentions": [
"H2SITE"
],
"name": "H2SITE"
},
{
"entity_type": "Company",
"id": "af3ff4b5-27a9-45d5-8c67-b656cb38e6b8",
"mentions": [
"Fracttal"
],
"name": "Fracttal"
}
],
"results": [
{
"company": "Amenitiz",
"funding_amount": "€38.9M",
"round_type": "Series B",
"sector": "Hospitality SaaS",
"year": 2025
},
{
"company": "H2SITE",
"funding_amount": "€36M ($37.2M)",
"round_type": "Series B",
"sector": "Hydrogen Energy",
"year": 2025
},
{
"company": "Fracttal",
"funding_amount": "€29.8M ($35M)",
"round_type": "Series B",
"sector": "AI Maintenance",
"year": 2026
}
]
}{
"error": {
"error_type": "internal_server_error",
"message": "<string>"
},
"response_type": "ERROR"
}{
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Too many requests."
}Authorizations
Body
Natural language question or Dot-Notation Syntax (e.g. "companies.industry=fintech.founded_year>=2020"). Dot-Notation Syntax is not a strict grammar — there is no syntax to get wrong. An empty or fallback result means no match, not a syntax error.
"companies.industry=fintech.founded_year>=2020"
Whether to return the entities identified in the query response.
true
Response
Successful Response
Response in case of a successful structured query.
A list of structured results for the query. Shape and schema will be determined by the query.
[ { "company": "Amenitiz", "funding_amount": "€38.9M", "round_type": "Series B", "sector": "Hospitality SaaS", "year": 2025 }, { "company": "H2SITE", "funding_amount": "€36M ($37.2M)", "round_type": "Series B", "sector": "Hydrogen Energy", "year": 2025 }, { "company": "Fracttal", "funding_amount": "€29.8M ($35M)", "round_type": "Series B", "sector": "AI Maintenance", "year": 2026 } ]
Entities identified in the query response.
Show child attributes
Show child attributes