Search collection documents
Runs search over the documents in a collection, ranked by relevance to query. Searches currently run vector retrieval (semantic similarity). The collection's retrieval_type setting is the forward-compatible selector: hybrid (vector similarity fused with keyword matching) can be set but cannot be searched yet, and keyword (lexical BM25 matching) is not accepted yet -- setting it returns 422 unsupported_retrieval_type. A per-request retrieval_type is accepted but ignored; meta.retrieval_type echoes the mode that actually ran. When query is omitted, returns a plain catalog listing of the collection's documents.
How it works:
- The query text is embedded into a 1024-dimensional vector using the multilingual-e5-large model.
- The embedding is compared against the collection's indexed document chunks using semantic similarity. When hybrid and keyword execution ship, those scores will be fused with, or replaced by, lexical BM25 matching.
- Results are ranked by score (descending) and paginated via page[number] / page[size].
Authentication: Requires a Telnyx API key via Authorization: Bearer <key>. Results are automatically scoped to your organization and cannot be overridden.
Filtering: Use filter[field][operator]=value query parameters to narrow results before search. Supported operators: eq (default), in, gte, gt, lte, lt, contains. Metadata fields resolve to metadata.<field>.
Examples:
- GET /v2/ai/knowledge/collections/my-collection/documents?query=billing+issue&top_k=10
- GET /v2/ai/knowledge/collections/my-collection/documents?query=refund&sources=voice,message
- GET /v2/ai/knowledge/collections/my-collection/documents?query=outage&filter[record_created_at][gte]=2026-01-01T00:00:00Z
Path parameters
The collection's slug (unique within your organization).
Query parameters
Natural-language search query. When provided, the text is matched against the collection's document chunks using the collection's retrieval_type (vector or hybrid). When omitted, documents are returned as a plain catalog listing.
Maximum number of ranked results to consider. When omitted, the collection's configured top_k setting is used.
Comma-separated list of source types to restrict the search to. When omitted, all of the collection's sources are searched.
Reserved; not yet functional. A value supplied here is accepted but ignored — it does not override the collection's configured strategy, and it is not echoed back. Searches run vector retrieval, and meta.retrieval_type reports the mode that actually ran. To change retrieval strategy, set it on the collection's settings subresource.
Field filters applied before ranking, using filter[field][operator]=value. Supported operators: eq (default), in, gte, gt, lte, lt, contains. Known fields: record_type, record_id, user_id, record_created_at, ingested_at; any other name resolves to a metadata.<field> filter. Example: filter[record_id][eq]=rec_123.
Page number to return (1-based). Defaults to 1.
Number of results per page. Defaults to 20.
Response
Ranked (or listed) collection documents.
Example response
{
"data": [
{
"record_type": "voice"
}
],
"meta": {
"collection_slug": "support-transcripts",
"searched_sources": [
"voice",
"message"
],
"retrieval_type": "vector",
"top_k": 5,
"total_results": 42,
"total_pages": 3,
"page_number": 1,
"page_size": 20
}
}