List Schedules

List scheduled reports for a user. Schedules execute on a cron-like cadence and produce a new run each time.

GET /api/v1/schedules

Query Parameters

limitOptional — page size. Default: 50. Max: 100.
offsetOptional — pagination offset. Default: 0.

Request Example

curl -X GET "https://agent.rolli.ai/api/v1/schedules?limit=50" \
  -H "X-ROLLI-TOKEN: your_token" \
  -H "X-ROLLI-USER-ID: your_user_id" \
  -H "Content-Type: application/json"
    
fetch("https://agent.rolli.ai/api/v1/schedules?limit=50", {
  method: "GET",
  headers: {
    "X-ROLLI-TOKEN": "your_token",
    "X-ROLLI-USER-ID": "your_user_id",
    "Content-Type": "application/json"
  },
})
  .then(res => res.json())
  .then(console.log);
    
require "net/http"
require "uri"
require "json"

uri = URI("https://agent.rolli.ai/api/v1/schedules?limit=50")
req = Net::HTTP::Get.new(uri)
req["X-ROLLI-TOKEN"] = "your_token"
req["X-ROLLI-USER-ID"] = "your_user_id"
req["Content-Type"] = "application/json"

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(req)
end

puts res.body
    
import requests
import json

url = "https://agent.rolli.ai/api/v1/schedules?limit=50"
headers = {
    "X-ROLLI-TOKEN": "your_token",
    "X-ROLLI-USER-ID": "your_user_id",
    "Content-Type": "application/json"
}response = requests.get(url, headers=headers)

print(response.json())
    

Response Example

{
  "schedules": [
    {
      "id": "660e8400-e29b-41d4-a716-446655440111",
      "name": "Daily Crypto Trends",
      "question": "What is trending in crypto?",
      "mode": "trend_briefing",
      "time_window": "7d",
      "platforms": ["twitter", "reddit"],
      "max_post": 100,
      "available_credits": 500,
      "source": "api",
      "recurrence_type": "daily",
      "recurrence_time": "09:00",
      "recurrence_timezone": "America/New_York",
      "recurrence_day_of_week": null,
      "recurrence_day_of_month": null,
      "starts_at": "2026-05-20T09:00:00Z",
      "ends_at": null,
      "next_run_at": "2026-05-20T13:00:00Z",
      "enabled": true,
      "paused": false,
      "paused_at": null,
      "notify_email": "[email protected]",
      "notify_slack_webhook": "[configured]",
      "notify_slack_channel_id": "C123ABC",
      "consecutive_failures": 0,
      "run_count": 12,
      "last_run_status": "completed",
      "last_run_at": "2026-05-19T13:00:00Z",
      "created_at": "2026-04-01T10:30:00Z",
      "updated_at": "2026-05-19T10:30:00Z"
    }
  ],
  "total": 5,
  "limit": 50,
  "offset": 0
}

notify_slack_webhook is always masked as "[configured]" in responses for security.