Properties
| Name | Type | Description |
|---|---|---|
| query | object | One query, or up to 5 judged together. |
| index | string | Search your own custom index (idx_…, see /v1/indexes) instead of the news index: the same modes, prices, questions and tone. One query per request; no date filter unless you pass days or dates. |
| sources | array | Only these index sources, by domain, such as example.com. |
| include_domains | array | Only these domains or paths. A domain includes its subdomains. |
| exclude_domains | array | Never these domains or paths. |
| countries | array | Only sources from these countries: ISO 3166-1 alpha-2 codes, such as AR or US. |
| languages | array | Only sources that publish in these languages: ISO 639-1 codes, such as es or en (a BCP 47 tag such as pt-BR counts as pt). |
| sections | array | Only these sections: the section in the feed, or the start of the URL path. |
| days | object | The last N days; null for the whole index. Defaults to 7 unless dates are given. |
| published_after | object | Published on or after this date. A bare date is read in Argentina time (UTC−3). |
| published_before | object | Published on or before this date; a bare date includes that whole day. |
| mode | string | ultra: headlines only, the cheapest · fast: headlines and standfirsts · normal: reads the best matches · deep: more headlines, the topic also in other words (synonyms and acronyms), twice the reading, |
| max_results | integer | |
| highlights | boolean | Very short verbatim excerpts (up to 25 words, never from the first paragraph) from the articles that were read: one per article, two in deep mode. On by default only in deep mode. |
| dedupe | boolean | Groups the same story reported by several outlets. |
| tone | boolean | Tone toward the query: positive, neutral or negative. |
| essential | boolean | The essentials: very short verbatim excerpts across several articles. On by default only in deep mode. |
| questions | object | Structured output: typed questions (boolean, choice, score) that the model answers for each result. |
| max_tokens | object | Cap on model tokens. If it is reached, the response comes back with incomplete: true. |
| fresh | boolean | Skips the result cache (10 minutes). |
| temporal | string | auto: a date in the query («today», «yesterday», «tomorrow», «on September 22», «this week») is taken out of the topic, sets the publication window (unless published_after/before are given; days only |
| timezone | string | IANA time zone that decides what day «today» is. Defaults to Argentina (America/Argentina/Buenos_Aires). |
| stream | boolean | Server-sent events while it searches: step, partial, result. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/typesearch-ai/json-schema/typesearch-ai-search-request-schema.json",
"title": "SearchRequest",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/typesearch-ai-api-v1-openapi.json#/components/schemas/SearchRequest",
"type": "object",
"properties": {
"query": {
"anyOf": [
{
"type": "string",
"minLength": 2,
"maxLength": 200
},
{
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 200
}
}
],
"description": "One query, or up to 5 judged together."
},
"index": {
"description": "Search your own custom index (idx_…, see /v1/indexes) instead of the news index: the same modes, prices, questions and tone. One query per request; no date filter unless you pass days or dates.",
"type": "string",
"pattern": "^idx_[a-z0-9]{6,40}$"
},
"sources": {
"description": "Only these index sources, by domain, such as example.com.",
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"include_domains": {
"description": "Only these domains or paths. A domain includes its subdomains.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"pattern": "^(https?:\\/\\/)?(\\*\\.)?[\\w-]+(\\.[\\w-]+)+(\\/\\S*)?$"
}
},
"exclude_domains": {
"description": "Never these domains or paths.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"pattern": "^(https?:\\/\\/)?(\\*\\.)?[\\w-]+(\\.[\\w-]+)+(\\/\\S*)?$"
}
},
"countries": {
"description": "Only sources from these countries: ISO 3166-1 alpha-2 codes, such as AR or US.",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 20
}
},
"languages": {
"description": "Only sources that publish in these languages: ISO 639-1 codes, such as es or en (a BCP 47 tag such as pt-BR counts as pt).",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 35
}
},
"sections": {
"description": "Only these sections: the section in the feed, or the start of the URL path.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"days": {
"description": "The last N days; null for the whole index. Defaults to 7 unless dates are given.",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"published_after": {
"description": "Published on or after this date. A bare date is read in Argentina time (UTC−3).",
"anyOf": [
{
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
]
},
"published_before": {
"description": "Published on or before this date; a bare date includes that whole day.",
"anyOf": [
{
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
]
},
"mode": {
"default": "normal",
"description": "ultra: headlines only, the cheapest · fast: headlines and standfirsts · normal: reads the best matches · deep: more headlines, the topic also in other words (synonyms and acronyms), twice the reading, snippets and the essentials of each article, and the search of the sites that cover the topic when the index falls short.",
"type": "string",
"enum": [
"ultra",
"fast",
"normal",
"deep"
]
},
"max_results": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"highlights": {
"description": "Very short verbatim excerpts (up to 25 words, never from the first paragraph) from the articles that were read: one per article, two in deep mode. On by default only in deep mode.",
"type": "boolean"
},
"dedupe": {
"default": false,
"description": "Groups the same story reported by several outlets.",
"type": "boolean"
},
"tone": {
"default": false,
"description": "Tone toward the query: positive, neutral or negative.",
"type": "boolean"
},
"essential": {
"description": "The essentials: very short verbatim excerpts across several articles. On by default only in deep mode.",
"type": "boolean"
},
"questions": {
"default": {},
"description": "Structured output: typed questions (boolean, choice, score) that the model answers for each result.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[\\w-]{1,40}$"
},
"additionalProperties": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "boolean"
},
"instructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/SearchRequest___schema0"
}
},
{
"type": "array",
"items": {
"$ref": "#/$defs/SearchRequest___schema0"
}
}
]
},
"criteria": {
"type": "object",
"properties": {
"true": {
"type": "string"
},
"false": {
"type": "string"
}
}
}
},
"required": [
"type",
"instructions"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "choice"
},
"instructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/SearchRequest___schema0"
}
},
{
"type": "array",
"items": {
"$ref": "#/$defs/SearchRequest___schema0"
}
}
]
},
"criteria": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"null"
]
}
}
},
"required": [
"type",
"instructions",
"criteria"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "score"
},
"instructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/SearchRequest___schema0"
}
},
{
"type": "array",
"items": {
"$ref": "#/$defs/SearchRequest___schema0"
}
}
]
},
"criteria": {
"minItems": 2,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"type",
"instructions",
"criteria"
]
}
]
}
},
"max_tokens": {
"default": null,
"description": "Cap on model tokens. If it is reached, the response comes back with incomplete: true.",
"anyOf": [
{
"type": "integer",
"minimum": 2000,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"fresh": {
"default": false,
"description": "Skips the result cache (10 minutes).",
"type": "boolean"
},
"temporal": {
"default": "auto",
"description": "auto: a date in the query («today», «yesterday», «tomorrow», «on September 22», «this week») is taken out of the topic, sets the publication window (unless published_after/before are given; days only bounds it) and puts the results from that day first · off: the query is taken literally.",
"type": "string",
"enum": [
"auto",
"off"
]
},
"timezone": {
"description": "IANA time zone that decides what day «today» is. Defaults to Argentina (America/Argentina/Buenos_Aires).",
"type": "string"
},
"stream": {
"default": false,
"description": "Server-sent events while it searches: step, partial, result.",
"type": "boolean"
}
},
"required": [
"query"
],
"additionalProperties": false,
"$defs": {
"SearchRequest___schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/SearchRequest___schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/SearchRequest___schema0"
}
}
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/typesearch-ai-search-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.