Filtering & Search
Search Operators
Full-Text Search
bash
curl "https://api.solatis.team/v1/documents?q=invoice" \
-H "Authorization: Bearer YOUR_API_KEY"Phrase Search
bash
# Search exact phrase
curl "https://api.solatis.team/v1/documents?q=\"invoice number\"" \
-H "Authorization: Bearer YOUR_API_KEY"Boolean Operators
bash
# AND (default)
q=invoice AND customer
# OR
q=invoice OR receipt
# NOT
q=invoice NOT draft
# Combinations
q=(invoice OR bill) AND (2024 OR 2025) NOT draftFilter Parameters
By Status
bash
curl "https://api.solatis.team/v1/documents?filter=status:completed" \
-H "Authorization: Bearer YOUR_API_KEY"Status values: processing, completed, failed, draft
By Date
bash
# After date
filter=created_at:>2024-01-01
# Before date
filter=created_at:<2024-12-31
# Date range
filter=created_at:[2024-01-01 TO 2024-12-31]By Type
bash
filter=type:pdf
# Multiple types
filter=type:(pdf OR docx)By Metadata
bash
# Exact match
filter=metadata.source:email
# Contains
filter=metadata.project:"Project A"
# Multiple values
filter=metadata.priority:(high OR critical)Combining Filters
bash
curl "https://api.solatis.team/v1/documents?" \
-G \
-d "q=invoice" \
-d "filter=status:completed" \
-d "filter=created_at:[2024-01-01 TO 2024-12-31]" \
-H "Authorization: Bearer YOUR_API_KEY"Aggregations
Get summary statistics:
bash
curl "https://api.solatis.team/v1/documents?agg=status" \
-H "Authorization: Bearer YOUR_API_KEY"Response:
json
{
"aggregations": {
"status": {
"completed": 450,
"processing": 12,
"failed": 3,
"draft": 35
}
}
}Search Examples
Find Invoices from Q1 2024
python
import requests
response = requests.get(
"https://api.solatis.team/v1/documents",
headers={"Authorization": f"Bearer {api_key}"},
params={
"q": "invoice",
"filter": "created_at:[2024-01-01 TO 2024-03-31]"
}
).json()
for doc in response['data']:
print(f"{doc['name']}: {doc['created_at']}")Complex Search
bash
curl "https://api.solatis.team/v1/documents?" \
-G \
-d 'q=(invoice OR receipt) AND (urgent OR critical)' \
-d 'filter=type:pdf' \
-d 'filter=metadata.status:pending' \
-H "Authorization: Bearer YOUR_API_KEY"Search with Sorting
bash
# Most recent first
curl "https://api.solatis.team/v1/documents?" \
-G \
-d "q=contract" \
-d "sort=created_at" \
-d "sort_dir=desc" \
-H "Authorization: Bearer YOUR_API_KEY"Advanced Queries
Wildcard Search
bash
# Starts with
q=file*
# Contains
q=*report*
# Ends with
q=*summaryFuzzy Search
bash
# Typo tolerance (1 character difference)
q=invoce~
# More tolerance
q=invoce~2Range Queries
bash
# Numeric range
filter=page_count:[10 TO 50]
# Date range
filter=modified_at:[NOW-30d TO NOW]Nested Filters
python
# Complex nested filter
filter = """
(type:pdf OR type:docx) AND
(status:completed) AND
(created_at:[2024-01-01 TO 2024-12-31]) AND
(metadata.priority:(high OR critical))
"""
response = requests.get(
"https://api.solatis.team/v1/documents",
params={"filter": filter},
headers={"Authorization": f"Bearer {api_key}"}
).json()Pagination with Filters
python
# Combine pagination and filtering
cursor = None
all_results = []
while True:
params = {
"q": "invoice",
"filter": "status:completed",
"limit": 100
}
if cursor:
params["cursor"] = cursor
response = requests.get(
"https://api.solatis.team/v1/documents",
params=params,
headers={"Authorization": f"Bearer {api_key}"}
).json()
all_results.extend(response['data'])
if not response['pagination']['has_more']:
break
cursor = response['pagination']['next_cursor']Performance Tips
Use specific filters instead of broad searches
python# Good: Specific filter filter = "status:completed AND created_at:[2024-01-01 TO 2024-12-31]" # Bad: No filter (scans all documents) q = "invoice"Index frequently-searched fields
- Add to metadata for better performance
- Sort by indexed fields
Use aggregations for statistics
python# Efficient: Get counts agg = "status" # Inefficient: Get all then count docs = get_all_documents() counts = count(docs)
Troubleshooting
Query Syntax Error
json
{
"error": "query_syntax_error",
"message": "Invalid query syntax"
}- Check boolean operators (AND, OR, NOT)
- Verify quote syntax
- Use escape characters if needed
No Results
- Verify search terms
- Check filter values
- Try broader search
- Use wildcard search
Too Many Results
- Add more specific filters
- Use phrase search with quotes
- Narrow date range
- Filter by status
Reference
Available filter fields:
status: processing, completed, failed, drafttype: File format (pdf, docx, etc.)created_at,updated_at: Timestampsmetadata.*: Custom metadata fieldspage_count: Number of pagesfile_size: Document size in bytes