Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: LiteLLM Search API
description: "Enterprise Edition \n\nProxy Server to call 100+ LLMs in the OpenAI format. [**Customize Swagger Docs**](https://docs.litellm.ai/docs/proxy/enterprise#swagger-docs---custom-routes--branding)\n\n\U0001F449 [```LiteLLM Admin Panel on /ui```](/ui). Create, Edit Keys with SSO. Having issues? Try [```Fallback Login```](/fallback/login)\n\n\U0001F4B8 [```LiteLLM Model Cost Map```](https://models.litellm.ai/).\n\n\U0001F50E [```LiteLLM Model Hub```](/ui/model_hub_table). See available models on the proxy. [**Docs**](https://docs.litellm.ai/docs/proxy/ai_hub)"
version: 1.95.0
x-operator: institution
x-provenance:
method: probed
source: https://llmproxy.uva.nl/openapi.json
retrieved: '2026-08-19'
note: Document is generated by the LiteLLM proxy software the University of Amsterdam self-hosts; the deployment, the key issuance and the host (llmproxy.uva.nl, UvA Azure) are the institution's. servers[] added by API Evangelist because the served document omits it; nothing else altered.
servers:
- url: https://llmproxy.uva.nl
description: University of Amsterdam / Amsterdam University of Applied Sciences shared AI gateway
tags:
- name: search
paths:
/search:
post:
tags:
- search
summary: Search
description: "Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"search_tool_name\": \"litellm-search\",\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n \"object\": \"search\",\n \"results\": [\n {\n \"title\": \"Result title\",\n \"url\": \"https://example.com\",\n \"snippet\": \"Result snippet...\",\n \"date\": \"2024-01-01\",\n \"last_updated\": \"2024-01-01\"\n }\n ]\n}\n```"
operationId: search_search_post
security:
- APIKeyHeader: []
parameters:
- name: search_tool_name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Search Tool Name
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/search:
post:
tags:
- search
summary: Search
description: "Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"search_tool_name\": \"litellm-search\",\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n \"object\": \"search\",\n \"results\": [\n {\n \"title\": \"Result title\",\n \"url\": \"https://example.com\",\n \"snippet\": \"Result snippet...\",\n \"date\": \"2024-01-01\",\n \"last_updated\": \"2024-01-01\"\n }\n ]\n}\n```"
operationId: search_v1_search_post
security:
- APIKeyHeader: []
parameters:
- name: search_tool_name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Search Tool Name
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/search/{search_tool_name}:
post:
tags:
- search
summary: Search
description: "Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"search_tool_name\": \"litellm-search\",\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n \"object\": \"search\",\n \"results\": [\n {\n \"title\": \"Result title\",\n \"url\": \"https://example.com\",\n \"snippet\": \"Result snippet...\",\n \"date\": \"2024-01-01\",\n \"last_updated\": \"2024-01-01\"\n }\n ]\n}\n```"
operationId: search_search__search_tool_name__post
security:
- APIKeyHeader: []
parameters:
- name: search_tool_name
in: path
required: true
schema:
anyOf:
- type: string
- type: 'null'
title: Search Tool Name
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/search/{search_tool_name}:
post:
tags:
- search
summary: Search
description: "Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\" -H \"Authorization: Bearer sk-1234\" -H \"Content-Type: application/json\" -d '{\n \"search_tool_name\": \"litellm-search\",\n \"query\": \"latest AI developments 2024\",\n \"max_results\": 5,\n \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n \"country\": \"US\"\n }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n \"object\": \"search\",\n \"results\": [\n {\n \"title\": \"Result title\",\n \"url\": \"https://example.com\",\n \"snippet\": \"Result snippet...\",\n \"date\": \"2024-01-01\",\n \"last_updated\": \"2024-01-01\"\n }\n ]\n}\n```"
operationId: search_v1_search__search_tool_name__post
security:
- APIKeyHeader: []
parameters:
- name: search_tool_name
in: path
required: true
schema:
anyOf:
- type: string
- type: 'null'
title: Search Tool Name
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/search/tools:
get:
tags:
- search
summary: List Search Tools
description: "List all available search tools configured in the router.\n\nThis endpoint returns the search tools that are currently loaded and available\nfor use with the /v1/search endpoint.\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/search/tools\" -H \"Authorization: Bearer sk-1234\"\n```\n\nResponse:\n```json\n{\n \"object\": \"list\",\n \"data\": [\n {\n \"search_tool_name\": \"litellm-search\",\n \"search_provider\": \"perplexity\",\n \"description\": \"Perplexity search tool\"\n }\n ]\n}\n```"
operationId: list_search_tools_search_tools_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- APIKeyHeader: []
/v1/search/tools:
get:
tags:
- search
summary: List Search Tools
description: "List all available search tools configured in the router.\n\nThis endpoint returns the search tools that are currently loaded and available\nfor use with the /v1/search endpoint.\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/search/tools\" -H \"Authorization: Bearer sk-1234\"\n```\n\nResponse:\n```json\n{\n \"object\": \"list\",\n \"data\": [\n {\n \"search_tool_name\": \"litellm-search\",\n \"search_provider\": \"perplexity\",\n \"description\": \"Perplexity search tool\"\n }\n ]\n}\n```"
operationId: list_search_tools_v1_search_tools_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- APIKeyHeader: []
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
APIKeyHeader:
type: apiKey
description: Bearer token
in: header
name: x-litellm-api-key