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

# Quickstart

> Connect your accounts, create an API key, and submit your first clip.

## 1. Connect your accounts

Sign in to the ClipStake web app and open **Settings**, then **Social**.

* To connect an account on this device, select **Connect social** (or
  **Connect another account**) and choose Instagram or X.
* To connect accounts on other devices, create a **shared connect link** for
  Instagram or X. Open the link on each device and sign in to the account
  there. The device does not need to sign in to ClipStake.

Anyone with a shared connect link can connect an account to you. Send it only
to devices that you control.

## 2. Create an API key

On the same page, find **Creator API** and select **Create API key**. Copy
the key. ClipStake shows it only once. Store it on your server.

```bash theme={null}
export CLIPSTAKE_API_KEY="cc_live_..."
```

## 3. List your campaigns

```bash theme={null}
curl "https://app.clipstake.com/api/v1/creator/campaigns" \
  --header "Authorization: Bearer $CLIPSTAKE_API_KEY"
```

Copy the `id` of a campaign. It starts with `cmp_`. Check `platforms` to see
which platforms the campaign accepts.

## 4. List your accounts

```bash theme={null}
curl "https://app.clipstake.com/api/v1/creator/accounts" \
  --header "Authorization: Bearer $CLIPSTAKE_API_KEY"
```

Copy the `id` of the account that posted your video. It starts with `acct_`.
Its `status` must be `connected`.

## 5. Find the post

For an **Instagram** account, list its recent Reels and feed videos:

```bash theme={null}
curl "https://app.clipstake.com/api/v1/creator/accounts/$ACCOUNT_ID/media" \
  --header "Authorization: Bearer $CLIPSTAKE_API_KEY"
```

Copy the `media_id` of the post. A post with `submitted: true` is already a
clip.

For an **X** account, you need only the link to the post.

## 6. Submit the clip

```bash Instagram theme={null}
curl "https://app.clipstake.com/api/v1/creator/clips" \
  --request POST \
  --header "Authorization: Bearer $CLIPSTAKE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "campaign_id": "cmp_...",
    "account_id": "acct_...",
    "media_id": "17912345678901234"
  }'
```

```bash X theme={null}
curl "https://app.clipstake.com/api/v1/creator/clips" \
  --request POST \
  --header "Authorization: Bearer $CLIPSTAKE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "campaign_id": "cmp_...",
    "account_id": "acct_...",
    "post_url": "https://x.com/you/status/1845123456789012345"
  }'
```

The response is the new clip. Its `status` is `pending` until the brand
reviews it.

> [!NOTE]
>
> Submit a clip soon after you post it. A clip that has no views when we first
> count them, and that you submitted more than 2 hours after you posted it, is
> rejected.

## 7. Follow your clips

```bash theme={null}
curl "https://app.clipstake.com/api/v1/creator/campaigns/$CAMPAIGN_ID/clips" \
  --header "Authorization: Bearer $CLIPSTAKE_API_KEY"
```

Each clip shows its `status`, its views and `paid_cents`. A rejected clip has
a `review_note` that tells you why.

## Next steps

* Read [Errors](https://docs.clipstake.com/creator-api/errors.md) to handle each error code, including
  `429` on Instagram accounts.
* Read [Pagination](https://docs.clipstake.com/creator-api/pagination.md) to page through a list.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.