Skip to main content

Search API

Full reference for unified search, semantic search, autocomplete, trending, and recommendations.

Base URL: https://api.ainative.studio


Search All Content Types

GET /api/v1/search

Search across users, posts, groups, and events simultaneously. Returns up to limit results per category.

Auth required. User must belong to a tenant.

Query parameters

ParamTypeRequiredDefaultDescription
qstringYesSearch query (1–200 chars)
limitintegerNo10Results per category (1–50)
offsetintegerNo0Results offset
curl "https://api.ainative.studio/api/v1/search?q=machine+learning&limit=5" \
-H "Authorization: Bearer <your_api_key>"
import httpx

resp = httpx.get(
"https://api.ainative.studio/api/v1/search",
headers={"Authorization": "Bearer <your_api_key>"},
params={"q": "machine learning", "limit": 5},
)
results = resp.json()

Response

{
"users": [...],
"posts": [...],
"groups": [...],
"events": [...]
}

Search Users

GET /api/v1/search/users

Search for users by username, full name, or bio.

Auth required.

Query parameters

ParamTypeRequiredDefaultDescription
qstringYesSearch query (1–200 chars)
limitintegerNo20Results limit (1–100)
offsetintegerNo0Results offset
curl "https://api.ainative.studio/api/v1/search/users?q=john&limit=10" \
-H "Authorization: Bearer <your_api_key>"

Response

{
"users": [
{
"id": "user-uuid",
"username": "john_doe",
"full_name": "John Doe",
"bio": "AI researcher",
"relevance_score": 0.94
}
],
"total": 23,
"limit": 10,
"offset": 0,
"has_more": true
}

Search Posts

GET /api/v1/search/posts

Search for posts by title or content. Only returns approved, non-deleted posts.

Auth required.

Query parameters

ParamTypeRequiredDefaultDescription
qstringYesSearch query (1–200 chars)
limitintegerNo20Results limit (1–100)
offsetintegerNo0Results offset
curl "https://api.ainative.studio/api/v1/search/posts?q=tutorial&limit=20" \
-H "Authorization: Bearer <your_api_key>"

Response

{
"posts": [
{
"id": "post-uuid",
"title": "Getting started with RAG",
"content": "...",
"author_id": "user-uuid",
"relevance_score": 0.89
}
],
"total": 7,
"limit": 20,
"offset": 0,
"has_more": false
}

Search Groups

GET /api/v1/search/groups

Search for groups by name or description. Only returns public groups.

Auth required.

ParamTypeRequiredDefaultDescription
qstringYesSearch query (1–200 chars)
limitintegerNo20Results limit (1–100)
offsetintegerNo0Results offset
curl "https://api.ainative.studio/api/v1/search/groups?q=developers" \
-H "Authorization: Bearer <your_api_key>"

Search Events

GET /api/v1/search/events

Search for events by title or description. Only returns public, scheduled events.

Auth required.

ParamTypeRequiredDefaultDescription
qstringYesSearch query (1–200 chars)
limitintegerNo20Results limit (1–100)
offsetintegerNo0Results offset
curl "https://api.ainative.studio/api/v1/search/events?q=workshop" \
-H "Authorization: Bearer <your_api_key>"

AI-powered vector search across conversations and documents using embeddings.

POST /api/v1/semantic-search

Auth required. Rate limit: 100 requests per 5 minutes.

Request body

FieldTypeRequiredDefaultDescription
querystringYesSearch query text (1–1000 chars)
limitintegerNo20Max results (1–100)
namespacestringNo"default"Search scope / namespace
search_typestringNo"hybrid"hybrid, semantic, or keyword
filtersobjectNonullMetadata filters for search
boost_factorsobjectNonullScore boost factors (values 0–1)
embedding_providerstringNo"mock"openai, local, or mock
curl -X POST https://api.ainative.studio/api/v1/semantic-search \
-H "Authorization: Bearer <your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"query": "how to implement rate limiting in FastAPI",
"limit": 10,
"search_type": "hybrid",
"embedding_provider": "openai"
}'
import httpx

resp = httpx.post(
"https://api.ainative.studio/api/v1/semantic-search",
headers={"Authorization": "Bearer <your_api_key>"},
json={
"query": "how to implement rate limiting in FastAPI",
"limit": 10,
"search_type": "hybrid",
"embedding_provider": "openai",
},
)
data = resp.json()

Response

{
"query": "how to implement rate limiting in FastAPI",
"results": [
{
"document_id": "doc-uuid",
"content": "Rate limiting can be implemented using...",
"semantic_score": 0.92,
"keyword_score": 0.74,
"combined_score": 0.85,
"metadata": {"source": "docs", "updated_at": "2026-04-01"},
"source": "conversation",
"relevance_indicators": {...}
}
],
"total_results": 1,
"search_type": "hybrid",
"search_time_ms": 48.2,
"embedding_provider": "openai",
"project_id": "project-uuid",
"namespace": "default",
"timestamp": "2026-04-25T10:00:00Z"
}

Search types

ValueBehavior
hybridCombines vector similarity and keyword matching (recommended)
semanticPure vector similarity search
keywordTraditional keyword matching

Semantic Search Health

GET /api/v1/semantic-search/health

Check semantic search service availability. No auth required.


Semantic Search Capabilities

GET /api/v1/semantic-search/capabilities

Returns available embedding providers, search types, and configured limits. No auth required.

curl https://api.ainative.studio/api/v1/semantic-search/capabilities

Response excerpt

{
"embedding_providers": {
"openai": {
"available": true,
"models": ["text-embedding-3-small", "text-embedding-3-large"],
"requires_api_key": true
},
"mock": {
"available": true,
"note": "For testing purposes only"
}
},
"search_types": {
"hybrid": "Combines semantic and keyword search",
"semantic": "Pure vector similarity search",
"keyword": "Traditional keyword matching"
},
"limits": {
"max_query_length": 1000,
"max_results": 100,
"rate_limit": "100 requests per 5 minutes"
}
}

Autocomplete Suggestions

Get Search Suggestions

GET /api/v1/public/zerodb/search/suggestions

Get intelligent autocomplete suggestions for a partial query. Supports prefix matching, semantic similarity, and popularity ranking. Response time target: < 100 ms.

Auth is optional — pass a bearer token for personalized ranking.

Query parameters

ParamTypeRequiredDefaultDescription
qstringYesPartial query (2–500 chars minimum 2)
limitintegerNo5Max suggestions (1–20)
project_idstringNoOptional UUID to scope suggestions to a project
curl "https://api.ainative.studio/api/v1/public/zerodb/search/suggestions?q=quantum&limit=5"
import httpx

resp = httpx.get(
"https://api.ainative.studio/api/v1/public/zerodb/search/suggestions",
params={"q": "quantum", "limit": 5},
)
data = resp.json()
for suggestion in data["suggestions"]:
print(suggestion["text"], suggestion["relevance_score"])

Response

{
"suggestions": [
{
"text": "quantum neural networks",
"relevance_score": 0.95,
"category": "topic",
"result_count": 142
},
{
"text": "quantum computing",
"relevance_score": 0.87,
"category": "topic",
"result_count": 156
}
],
"query": "quantum",
"total_suggestions": 2,
"response_time_ms": 45
}

Suggestion categories

CategoryDescription
topicSubject or theme
keywordSpecific term
entityNamed entity (person, product, etc.)

GET /api/v1/trending/posts

Posts with highest engagement (loves, comments, shares) in a time window.

Auth required.

Query parameters

ParamTypeDefaultDescription
limitinteger10Max results (1–100)
hoursinteger24Time window in hours (1–168)
curl "https://api.ainative.studio/api/v1/trending/posts?limit=10&hours=24" \
-H "Authorization: Bearer <your_api_key>"

There is also a GET /api/v1/search/trending/posts endpoint that accepts time_window as 24h, 7d, or 30d instead of hours.


GET /api/v1/trending/groups

Groups with the most new member joins in a time window.

Auth required.

ParamTypeDefaultDescription
limitinteger10Max results (1–100)
daysinteger7Time window in days (1–30)

GET /api/v1/trending/searches

Most frequently searched queries.

Auth required.

ParamTypeDefaultDescription
limitinteger10Max results (1–100)
daysinteger7Time window in days (1–30)

GET /api/v1/trending/summary

Trending posts, groups, and searches in a single response. Useful for dashboard and discovery pages.

Auth required.

ParamTypeDefaultDescription
posts_limitinteger5Trending posts count (1–50)
groups_limitinteger5Trending groups count (1–50)
searches_limitinteger5Trending searches count (1–50)
curl "https://api.ainative.studio/api/v1/trending/summary" \
-H "Authorization: Bearer <your_api_key>"

Track a Search Query

POST /api/v1/trending/track-search

Record a search query for trending analytics. Call this after a user performs a search to contribute data to the trending algorithm.

Auth required.

Request body

FieldTypeDescription
query_textstringThe search query performed
search_typestringType of search (e.g. "unified", "semantic")
results_countintegerNumber of results returned
curl -X POST https://api.ainative.studio/api/v1/trending/track-search \
-H "Authorization: Bearer <your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"query_text": "machine learning",
"search_type": "unified",
"results_count": 14
}'

Recommendations

GET /api/v1/search/recommendations/posts

Also available at: GET /api/v1/recommendations/posts

Personalized post recommendations based on collaborative filtering, content similarity, and engagement signals. Excludes posts the user has already interacted with.

Auth required. Performance target: < 500 ms.

ParamTypeDefaultDescription
limitinteger10Max recommendations (1–50)
offsetinteger0Pagination offset
curl "https://api.ainative.studio/api/v1/recommendations/posts?limit=10" \
-H "Authorization: Bearer <your_api_key>"

Response

{
"recommendations": [
{
"post_id": "post-uuid",
"author_id": "user-uuid",
"author_username": "jsmith",
"title": "Building production RAG pipelines",
"content": "...",
"post_type": "article",
"tags": ["rag", "llm"],
"loves_count": 84,
"comments_count": 12,
"created_at": "2026-04-20T08:00:00Z",
"score": 0.91,
"reasons": ["similar to posts you liked", "trending in your groups"]
}
],
"total": 1,
"execution_time_ms": 213,
"strategy": "hybrid"
}

GET /api/v1/search/recommendations/users

Also available at: GET /api/v1/recommendations/users

Users recommended for following. Based on mutual connections, similar interests, and shared groups. Excludes users already followed.

Auth required.

ParamTypeDefaultDescription
limitinteger10Max recommendations (1–50)
offsetinteger0Pagination offset

GET /api/v1/search/recommendations/groups

Also available at: GET /api/v1/recommendations/groups

Groups recommended for joining. Based on user interests, groups joined by similar users, and activity level. Excludes groups the user already belongs to.

Auth required.

ParamTypeDefaultDescription
limitinteger10Max recommendations (1–50)
offsetinteger0Pagination offset

Submit Recommendation Feedback

POST /api/v1/recommendations/feedback

Signal whether a recommendation was helpful. Used to improve future recommendation quality.

Auth required.

Request body

FieldTypeDescription
recommendation_typestring"post", "user", or "group"
recommendation_idstringID of the recommended item
feedbackstring"clicked", "dismissed", or "reported"
curl -X POST https://api.ainative.studio/api/v1/recommendations/feedback \
-H "Authorization: Bearer <your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"recommendation_type": "post",
"recommendation_id": "post-uuid",
"feedback": "clicked"
}'

Response

{
"success": true,
"recommendation_type": "post",
"recommendation_id": "post-uuid",
"feedback": "clicked",
"timestamp": "2026-04-25T10:05:00Z"
}