# Post Queue

The post queue lets you line up content and have Octopost publish it automatically throughout the day. Instead of scheduling each post for a specific time, you add posts to the queue and Octopost spaces them out during your active hours.

## How It Works

1. **Add posts to the queue** by setting `queueStatus: "queued"` when creating a post
2. **Octopost publishes them automatically** during your configured active hours, spaced at your chosen interval
3. Posts publish in the order they were added (oldest first)

The queue respects your timezone and active hours. If you set 9 AM - 8 PM Eastern with a 4-hour interval, posts will go out around 9 AM, 1 PM, 5 PM, and so on.

## Queue vs Scheduling

| Feature | Queue | Schedule |
|---------|-------|----------|
| You choose the time? | No, Octopost picks | Yes, exact time |
| Spacing | Automatic intervals | Manual |
| Best for | Steady content flow | Time-sensitive posts |

Use the queue for evergreen content you want published regularly. Use scheduling for announcements, launches, or anything time-sensitive.

## Adding Posts to the Queue

```bash
# Add directly to queue (publishes automatically)
curl -X POST https://api.octopost.ink/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "This will be published during active hours",
    "platforms": ["twitter", "bluesky"],
    "queueStatus": "queued"
  }'
```

## Approval Workflow

For posts that need review before publishing, use `"queueStatus": "pending"`:

```bash
# Add to queue, needs approval first
curl -X POST https://api.octopost.ink/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Review this before it goes live",
    "platforms": ["twitter", "linkedin"],
    "queueStatus": "pending"
  }'

# Approve a pending post (moves it to "queued")
curl -X POST https://api.octopost.ink/v1/posts/:id/approve \
  -H "Authorization: Bearer YOUR_API_KEY"
```

Pending posts won't publish until approved. Once approved, they join the queue in their original position.

## Removing from Queue

```bash
# Remove a post from the queue (becomes a draft)
curl -X DELETE https://api.octopost.ink/v1/posts/:id/queue \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Queue Settings

Configure how the queue behaves:

```bash
# Get current settings
curl https://api.octopost.ink/v1/queue-settings \
  -H "Authorization: Bearer YOUR_API_KEY"

# Update settings
curl -X PUT https://api.octopost.ink/v1/queue-settings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "intervalHours": 4,
    "startHour": 9,
    "endHour": 20,
    "timezone": "America/New_York"
  }'
```

### Settings Reference

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| enabled | boolean | true | Whether the queue is active |
| intervalHours | number | 4 | Hours between posts (1-24) |
| startHour | number | 9 | Start of active window (0-23) |
| endHour | number | 20 | End of active window (0-23) |
| timezone | string | America/New_York | Your timezone (IANA format) |

## Tips

- **Start with a 4-hour interval** and adjust based on engagement
- **Mix platforms** in your queue. Some posts work better on certain platforms
- **Use pending status** for posts with links or mentions that need a final check
- **The queue pauses overnight** based on your active hours. No 3 AM posts unless you want them
- You can still schedule individual posts for specific times alongside the queue
