Overview
Filters allow you to narrow down results and context in the/api/v1/search, /api/v1/chat, and /api/v1/generate endpoints. You can filter by native memo fields or custom metadata fields using various operators.
Filters are applied using AND logic - all filters must match for a memo to be included.
Filter Structure
Each filter object has the following structure:field(string): The field name to filter onoperator(string): The comparison operator to usevalue(string | array): The value to compare against (arrays required forinandnot_in)filter_type(string): Eithernative_fieldorcustom_metadata
Filter Types
Native Fields
Filter on built-in memo properties usingfilter_type: "native_field":
title- Memo titlesource- Source system nameclient_reference_id- External reference IDtags- Memo tags (must useinornot_inoperator with array value)
Custom Metadata
Filter on any field from a memo’smetadata JSON object using filter_type: "custom_metadata":
Example:
metadata.category contains “tutorial”.
Operators
Equality Operators
eq- Equals (exact match)neq- Not equals
String Operators
contains- Contains substring (case-insensitive)startswith- Starts with (case-sensitive)endswith- Ends with (case-sensitive)
Array Operators
in- Value is in array (requires array value)not_in- Value is not in array (requires array value)
Combining Filters
Multiple filters use AND logic - all filters must match for a memo to be included in results. Example:- Title/content matches “python tutorial” AND
- Source equals “docs.python.org” AND
- Metadata field “level” equals “beginner” AND
- Has at least one tag in [“tutorial”]
Common Filter Patterns
Filter by Source
Limit results to specific source systems:Filter by Tags
Include memos with specific tags:Filter by Custom Metadata
Filter by any custom metadata field:Partial String Match
Find memos with titles containing specific text:Multiple Conditions
Combine filters for precise results:Error Responses
Invalid filter structure (400):- Missing required fields (
field,operator,value,filter_type) - Invalid operator (must be one of:
eq,neq,contains,startswith,endswith,in,not_in) - Invalid filter_type (must be
native_fieldorcustom_metadata) - Invalid native field (must be
title,source,client_reference_id, ortags) - Tags filter must use
inornot_inoperator with array value inandnot_inoperators require array value
Using Filters Across Endpoints
Search Endpoint
Filters narrow down search results:Chat Endpoint
Filters control which memos are used as context for chat responses:Generate Endpoint
Filters determine which memos provide context for document generation:Tips and Best Practices
- Use specific filters - Narrow your scope to improve relevance and reduce noise
- Combine native and custom fields - Mix source/tags filters with metadata filters for precision
- Test filters incrementally - Add filters one at a time to understand their impact
- Empty filters array - Equivalent to no filters, searches entire project
- Case sensitivity -
containsis case-insensitive, butstartswithandendswithare case-sensitive - Tags always use arrays - Even for single tag, use
["tag"]format withinornot_in