List active bots scoped to an app (discovery feed)
const url = 'https://mw.omazy.ai/api/v1/bots?app_id=example&per_page=25';const options = {method: 'GET', headers: {Authorization: '<Authorization>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://mw.omazy.ai/api/v1/bots?app_id=example&per_page=25' \ --header 'Authorization: <Authorization>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”App UUID
Case-insensitive ILIKE on name/tagline/description
Filter by category
Restrict to is_featured=true
ISO-3166 alpha-2 country filter (#166)
City filter, exact match against agents.city (#166)
Bot kind filter: nobot|bot (#166)
Presence filter: online|away|rsvp|offline (#166)
Pagination cursor
Items per page (max 100)
Responses
Section titled “Responses”OK
object
object
object
object
Contact / social — for the bot profile page.
Region — surfaced on Discover for region-aware filtering.
Lifecycle (#165). Defaults from the migration keep existing rows safe: kind=‘nobot’, status=‘draft’ (back-filled to ‘published’ for rows where is_active=true at migration time), presence=‘offline’.
object
Examplegenerated
{ "data": [ { "accent_color": "example", "app_id": "example", "brand_color": "example", "category": "example", "city": "example", "contact_email": "example", "contact_phone": "example", "contact_website": "example", "country": "example", "cover_url": "example", "created_at": "example", "description": "example", "icon_url": "example", "id": "example", "is_active": true, "is_featured": true, "kind": "example", "name": "example", "presence": "example", "rating": 1, "region": "example", "slug": "example", "social_links": [ 1 ], "status": "example", "tagline": "example", "updated_at": "example" } ], "error": { "code": "example", "message": "example" }, "meta": { "next_cursor": "example", "per_page": 1 }, "success": true}Bad Request
object
object
object
object
Examplegenerated
{ "data": "example", "error": { "code": "example", "message": "example" }, "meta": { "next_cursor": "example", "page": 1, "per_page": 1, "total": 1 }, "success": true}Unauthorized
object
object
object
object
Examplegenerated
{ "data": "example", "error": { "code": "example", "message": "example" }, "meta": { "next_cursor": "example", "page": 1, "per_page": 1, "total": 1 }, "success": true}Omazy CX documentation. One voice. Every channel. Always on.
Founded by Mosthofa Imran · imran@omazy.ai
© 2026 Omazy CX