---
title: "Scheduling posts"
description: "Schedule a post for the future and cancel it before it goes out."
section: "Guides"
url: https://dravo.dev/docs/guides/scheduling
---
# Scheduling posts

## Schedule a post

Add `scheduled_at` to a normal publish request. The job is accepted with status
`scheduled` and delivered when its time arrives.

```bash
curl -X POST https://api.dravo.dev/v1/publish \
  -H "Authorization: Bearer $DRAVO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_ids": ["acc_8f2c1d"],
    "text": "Scheduled with Dravo.",
    "scheduled_at": "2026-07-01T09:00:00Z"
  }'
```

## Rules

- `scheduled_at` must be ISO 8601 and include a timezone offset (use `Z` for
  UTC).
- It must be at least 60 seconds in the future, otherwise the request is
  rejected with a `400`.
- A scheduled job moves to `queued` automatically when the time arrives. Track
  it in the [publish history](/docs/api/publish).

## Cancel a scheduled post

While a job is still `scheduled` you can cancel it. Once it has queued for
delivery, cancellation returns a `409`.

```bash
curl -X POST https://api.dravo.dev/v1/publish/job_2a7f93/cancel \
  -H "Authorization: Bearer $DRAVO_API_KEY"
```
