post
/api/v2/reports/schedulesCreate a report schedule.
Creates a project-scoped local report schedule and records a schedule-created delivery event. Live email delivery remains gated until a scheduled run is processed with provider credentials. WatchLLM extension.
Requires bearer API key
Parameters
X-Project-Id
header
Required for organization-wide API keys on project-scoped endpoints. Project-scoped keys infer the project automatically.
Schema: string
Request Body
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"cadence": {
"type": "string",
"enum": [
"weekly",
"monthly"
]
},
"recipients": {
"type": "array",
"items": {
"type": "string"
}
},
"kind": {
"type": "string",
"enum": [
"pdf",
"executive_summary",
"competitor_snapshot"
]
},
"dateRange": {
"type": "string",
"enum": [
"last_7_days",
"last_14_days",
"last_30_days",
"last_90_days"
]
}
},
"required": [
"name",
"cadence",
"recipients",
"kind",
"dateRange"
]
}Responses
201
Created report schedule.
application/json{
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"cadence": {
"type": "string"
},
"recipients": {
"type": "array",
"items": {
"type": "string"
}
},
"reportConfig": {
"type": "object",
"additionalProperties": true
},
"enabled": {
"type": "boolean"
},
"createdById": {
"type": "string",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"nextRunAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastRunAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastRunStatus": {
"type": "string",
"nullable": true
}
}
}400
Invalid report schedule request.
application/json{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
}402
Reporting schedule quota exceeded.
application/json{
"type": "object",
"additionalProperties": false,
"properties": {
"error": {
"type": "string",
"enum": [
"BILLING_QUOTA_EXCEEDED"
]
},
"kind": {
"type": "string",
"enum": [
"paywall"
]
},
"reason": {
"type": "string",
"enum": [
"quota_exceeded"
]
},
"metric": {
"type": "string",
"enum": [
"reportingSchedules"
]
},
"label": {
"type": "string"
},
"current": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"increment": {
"type": "integer"
},
"planName": {
"type": "string"
}
},
"required": [
"error",
"kind",
"reason",
"metric",
"label",
"current",
"limit",
"increment",
"planName"
]
}Try it
Send this request to the local WatchLLM REST handler. Use a key from `/workspace/api`; organization keys can include `X-Project-Id` only when the endpoint documents that header.