post/api/v2/reports/schedules
Create 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 keyParameters
| Name | In | Description |
|---|---|---|
| X-Project-Id | header | Required for organization-wide API keys on project-scoped endpoints. Project-scoped keys infer the project automatically.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
application/jsonCreated report schedule.
{
"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
application/jsonInvalid report schedule request.
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
}402
application/jsonReporting schedule quota exceeded.
{
"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.