Create schedule
curl -X POST 'https://dashboard.justcrawl.io/api/v1/schedules' \ -H 'Authorization: Bearer $JUSTCRAWL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"name":"Hourly product sweep","workflowId":"wf_01ABC","frequency":"hourly","timezone":"UTC","tagFilters":["products"]}'import os, requestsr = requests.post( 'https://dashboard.justcrawl.io/api/v1/schedules', headers={'Authorization': f'Bearer {os.environ["JUSTCRAWL_API_KEY"]}'}, json={ 'name': 'Hourly product sweep', 'workflowId': 'wf_01ABC', 'frequency': 'hourly', 'timezone': 'UTC', 'tagFilters': ['products'], },)r.raise_for_status()schedule = r.json()const res = await fetch('https://dashboard.justcrawl.io/api/v1/schedules', { method: 'POST', headers: { Authorization: `Bearer ${process.env.JUSTCRAWL_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ name: 'Hourly product sweep', workflowId: 'wf_01ABC', frequency: 'hourly', timezone: 'UTC', tagFilters: ['products'], }),});if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);const schedule = await res.json();Creates a recurring schedule that fires the named workflow on the given
cadence. The frequency enum picks a canonical cron expression — only
custom requires you to supply cronExpr yourself. workflowId is
optional: when null, the scheduler resolves a workflow per URL at
trigger time via resolveWorkflowForUrl (domain-routed or default *),
which is what the dashboard surfaces as “Automatic.” tagFilters
narrows the URL set to URLs carrying ALL listed tags. The timezone
string is IANA (e.g. America/Los_Angeles); invalid zones return 400.
Requires verified email — unverified accounts get 403.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
Display name shown in dashboard + emitted on schedule runs.
Workflow to run. Must be status='published'. Pass null for Automatic routing.
Required only when frequency='custom'. Standard 5-field cron syntax.
IANA timezone (e.g. UTC, America/Los_Angeles). Defaults to UTC.
URLs must carry ALL listed tags to be included. Max 50.
When false, the schedule is created but won’t fire until enabled. Defaults to true.
Responses
Section titled “ Responses ”Schedule created.
object
Example
{ "frequency": "hourly"}Validation failed — request body or query is missing/invalid
object
Example
{ "error": "Missing or invalid \"url\" field"}Missing or invalid authentication token
object
Example
{ "error": "Missing or invalid authentication token"}Insufficient permissions for this operation
object
Example
{ "error": "No organization. Complete onboarding first."}Referenced workflowId not found.
Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}