API
List active bots scoped to an app (discovery feed)
GET
/bots
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_id
required
string
App UUID
search
string
Case-insensitive ILIKE on name/tagline/description
category
string
Filter by category
featured_only
boolean
Restrict to is_featured=true
country
string
ISO-3166 alpha-2 country filter (#166)
city
string
City filter, exact match against agents.city (#166)
kind
string
Bot kind filter: nobot|bot (#166)
presence
string
Presence filter: online|away|rsvp|offline (#166)
cursor
string
Pagination cursor
per_page
integer
Items per page (max 100)
Responses
Section titled “Responses”OK
Media typeapplication/json
object
data
error
object
code
string
message
string
meta
object
next_cursor
string
page
integer
per_page
integer
total
integer
success
boolean
data
Array<object>
object
accent_color
string
app_id
string
brand_color
string
category
string
city
string
contact_email
Contact / social — for the bot profile page.
string
contact_phone
string
contact_website
string
country
Region — surfaced on Discover for region-aware filtering.
string
cover_url
string
created_at
string
description
string
icon_url
string
id
string
is_active
boolean
is_featured
boolean
kind
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’.
string
name
string
presence
string
rating
number
region
string
slug
string
social_links
Array<integer>
status
string
tagline
string
updated_at
string
meta
object
next_cursor
string
per_page
integer
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
Media typeapplication/json
object
data
error
object
code
string
message
string
meta
object
next_cursor
string
page
integer
per_page
integer
total
integer
success
boolean
error
object
code
string
message
string
Examplegenerated
{ "data": "example", "error": { "code": "example", "message": "example" }, "meta": { "next_cursor": "example", "page": 1, "per_page": 1, "total": 1 }, "success": true}Unauthorized
Media typeapplication/json
object
data
error
object
code
string
message
string
meta
object
next_cursor
string
page
integer
per_page
integer
total
integer
success
boolean
error
object
code
string
message
string
Examplegenerated
{ "data": "example", "error": { "code": "example", "message": "example" }, "meta": { "next_cursor": "example", "page": 1, "per_page": 1, "total": 1 }, "success": true}