Topics API

Create and manage monitoring topics via REST. All endpoints require a Bearer API key.

Topic types (auto-detected from name)

  • web_page — if name is a valid HTTPS URL, AyeWatch monitors that specific page.
  • subject — if name is plain text, AyeWatch monitors that keyword/subject across the internet.
MethodPathDescription
POST/api/v1/topicsCreate a topic
GET/api/v1/topicsList topics (paginated)
GET/api/v1/topics/:idGet a topic
PUT/api/v1/topics/:idUpdate a topic
DELETE/api/v1/topics/:idDelete a topic
POST/api/v1/topics

Create a new monitoring topic.

Request Body (JSON)
NameTypeRequiredDescription
namestringYesA valid HTTPS URL (e.g. "https://openai.com/news") to monitor a page, or plain text (e.g. "OpenAI announcements") to monitor a subject. Topic type is auto-detected.
intervalstringYesCheck interval. One of: "1_hour", "3_hours", "6_hours", "12_hours", "18_hours", "1_day", "7_days", "15_days", "30_days".
descriptionstringNo(Optional) Notification Alert Criteria.Basically, on what update, should you be alerted. eg. Tell me when new AI model drops.
is_activebooleanNoWhether to start monitoring immediately. Default: true.
Example — monitor a URL
shell
curl -X POST https://ayewatch.app/api/v1/topics \
  -H "Authorization: Bearer aw_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "https://openai.com/news",
    "interval": "1_hour"
  }'
Example — monitor a subject / keyword
shell
curl -X POST https://ayewatch.app/api/v1/topics \
  -H "Authorization: Bearer aw_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OpenAI product announcements",
    "interval": "1_day"
  }'
Response — 201 Created
json
{
  "data": {
    "id": 1042
  }
}
GET/api/v1/topics

List all API-created topics for the authenticated user, paginated.

Query Parameters
NameTypeRequiredDescription
pagenumberNoPage number. Default: 1.
page_sizenumberNoResults per page. Max: 100. Default: 20.
is_activebooleanNoFilter by active status. Pass "true" or "false".
intervalstringNoFilter by interval. One of: "1_hour", "3_hours", etc.
created_afterstring (ISO 8601)NoOnly topics created after this datetime.
created_beforestring (ISO 8601)NoOnly topics created before this datetime.
Request
shell
curl "https://ayewatch.app/api/v1/topics?page=1&page_size=10&is_active=true" \
  -H "Authorization: Bearer aw_live_YOUR_API_KEY"
Response — 200 OK
json
{
  "data": [
    {
      "id": 1042,
      "name": "https://openai.com/news",
      "topic_type": "web_page",
      "description": null,
      "is_active": true,
      "interval": "1_hour",
      "created_at": "2026-03-08T12:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 10,
    "has_more": false
  }
}
GET/api/v1/topics/:id

Retrieve a single topic by ID.

Request
shell
curl https://ayewatch.app/api/v1/topics/1042 \
  -H "Authorization: Bearer aw_live_YOUR_API_KEY"
Response — 200 OK
json
{
  "data": {
    "id": 1042,
    "name": "https://openai.com/news",
    "topic_type": "web_page",
    "description": null,
    "is_active": true,
    "interval": "1_hour",
    "created_at": "2026-03-08T12:00:00Z"
  }
}
PUT/api/v1/topics/:id

Update a topic. Send only the fields you want to change.

Request Body (JSON) — all fields optional
NameTypeRequiredDescription
namestringNoNew name or URL. Topic type is re-detected automatically.
descriptionstringNoNew description.
intervalstringNoNew check interval. One of: "1_hour", "3_hours", etc.
is_activebooleanNoEnable or disable the topic.
Request
shell
curl -X PUT https://ayewatch.app/api/v1/topics/1042 \
  -H "Authorization: Bearer aw_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"interval": "6_hours", "is_active": false}'
Response — 200 OK
json
{
  "data": {
    "message": "Topic updated successfully"
  }
}
DELETE/api/v1/topics/:id

Permanently delete a topic and its schedule. This action cannot be undone.

Request
shell
curl -X DELETE https://ayewatch.app/api/v1/topics/1042 \
  -H "Authorization: Bearer aw_live_YOUR_API_KEY"
Response — 200 OK
json
{
  "data": {
    "message": "Topic deleted successfully"
  }
}
Login