# Playground & Drafts

Compose, validate and publish posts in the dashboard while the matching API request builds live.


The **Playground** at [https://social-publish-kappa.vercel.app/dashboard/playground](https://social-publish-kappa.vercel.app/dashboard/playground) is a post composer that doubles as an API request builder. Everything you do in it maps one-to-one to a `POST /v1/posts` body, so it's the fastest way to learn the API, try platform options, or post by hand.

## Compose a post

1. **Select accounts.** Pick one or more connected accounts. You need at least one connected account, see [Social Accounts](/docs/social-accounts).
2. **Write the caption.** This is the shared `content`. Some platforms use it differently, for example as the video description on YouTube or the Pin description on Pinterest, and the composer tells you when that applies.
3. **Add media.** Use the media panel's **Upload**, **URL** or **Library** tab. See [Media & Uploads](/docs/media).
4. **Set account options.** Each selected account has an **Account options** section with that platform's settings, plus **Customize content for this account** to override the caption for that account only. These become `targets[].options` and `targets[].content`.
5. **Choose when.** **Post now** or **Schedule**, with a date, time and time zone. Scheduled times must be at least a minute ahead.
6. Click **Post now** or **Schedule**.

After **Post now**, the Playground follows the post until every platform has a result and links to it in **Posts**.

## Live validation

As you type, the Playground checks your draft with exactly the same rules as the API: character limits, media rules and required options for every selected platform. Problems appear next to the account they affect. Checking is free: nothing is created and no credits are used until you post.

## Live request

The **Live request** panel shows the request your draft would send, as a cURL command or as JSON, and updates as you type. Copy it into your code, a script or a [no-code tool](/docs/ai/no-code). Library uploads appear as `media://<id>` references you can reuse.

Posts made from the Playground go through the same pipeline as API posts. They cost the same credits, appear in **Posts**, and trigger the same [notifications](/docs/notifications).

## Import JSON

**Import JSON** does the reverse: paste a `POST /v1/posts` request body, or a whole cURL command, and the Playground loads it into the composer, replacing the current draft. Use it to debug a request that fails in your code. Accounts in the JSON that aren't connected to the current project are skipped, and a schedule in the past falls back to **Post now**.

## Preview

**Preview** shows an approximation of how the post will look on each selected platform. Platforms may crop media or shorten text differently, so treat it as a guide rather than an exact render.

## Drafts

Click **Save draft** to keep an unfinished post. Drafts are listed under **Drafts** at [https://social-publish-kappa.vercel.app/dashboard/drafts](https://social-publish-kappa.vercel.app/dashboard/drafts), shared with everyone in the project.

- **Open in playground** loads a draft back into the composer. Saving again updates the same draft.
- Posting a draft removes it from Drafts.
- Drafts whose accounts have since been disconnected are flagged.
- Drafts don't use credits and aren't validated until you open them.

The Playground also offers to save your work as a draft if you leave the page with unsaved changes.

> [!NOTE]
> Drafts are a dashboard feature. The public API doesn't have draft endpoints. To hold a post for later from code, schedule it with `scheduledFor`.

## Reuse a post

On the **Posts** page, open any post and choose **Open in playground** to load its original request. This is handy for reposting, or for fixing and resending a post that failed on one platform.

## Posts page

**Posts** at [https://social-publish-kappa.vercel.app/dashboard/posts](https://social-publish-kappa.vercel.app/dashboard/posts) lists every post, from the API and the Playground alike, with its result on each platform. You can:

- search and filter by status, platform, account and date,
- switch between a list and a calendar view,
- open a post to see each target's status, live link or error message, and its post analytics (see [Analytics](/docs/analytics)),
- delete a post. Targets that haven't published yet are cancelled and their credits refunded. Targets that already published stay live on the platform.
