> ## Documentation Index
> Fetch the complete documentation index at: https://docs.draftliftai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Calendar Data

This endpoint returns editorial planning dates only. It never infers that
content was published. Unplanned content is omitted instead of being placed on
the calendar by its creation date.

Each item includes:

* `planned_for`: the stable editorial day in `YYYY-MM-DD` format.
* `content_state`: `draft` for editable draft/generated content or `final` for
  finalized content.
* `date`: a compatibility alias for `planned_for`.

The calendar UI compares `planned_for` with the browser-local day to show
`Planned` or `Overdue`. A past date does not change `content_state` and never
creates a `Published` state.

## Publishing-tool handoff

The calendar's **Export plan** action downloads a neutral JSON handoff. It does
not publish, authorize a social account, or claim delivery.

```json theme={null}
{
  "schema_version": "draftlift.planning-handoff.v1",
  "purpose": "editorial_planning_only",
  "exported_at": "2030-08-01T09:00:00.000Z",
  "timezone": "America/Chicago",
  "items": [
    {
      "content_id": 7,
      "title": "A truthful plan",
      "platform": "linkedin",
      "content_state": "final",
      "planning_state": "planned",
      "planned_for": "2030-08-05",
      "content_path": "/edit/7",
      "handoff_status": "ready",
      "handoff_note": "Import into a dedicated publishing tool."
    }
  ]
}
```

`handoff_status` is `unsupported` when an item has no platform. The export
still contains the item and its `content_path`, so the user can repair the
missing platform and export again. Browser download failures remain visible in
the calendar and do not change saved planning dates.


## OpenAPI

````yaml get /api/v1/contents/calendar
openapi: 3.1.0
info:
  title: DraftLift Public API
  description: >-
    Public API for the DraftLift content generation platform. Authenticate with
    a `dl_live_` API key issued from the Settings → API Keys panel.
  version: 1.0.0
servers:
  - url: https://api.draftliftai.com
    description: Production
  - url: https://staging-api.draftliftai.com
    description: Staging
security: []
paths:
  /api/v1/contents/calendar:
    get:
      tags:
        - contents
      summary: GET /api/v1/contents/calendar
      responses:
        '200':
          description: Successful response.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            Insufficient scope or workspace mismatch. Detail body carries
            `error_code`.

````