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

# Genviral Partner API

> REST API for posting, scheduling, slideshows, Studio AI, analytics, and automation across your connected social accounts.

Post and schedule content to your connected accounts from one REST API. Use it from scripts, cron jobs, or AI agents.

<Tip>
  Building an AI agent? Give it [`llms.txt`](https://docs.genviral.io/llms.txt) for the full doc
  index, or install our [agent skill](https://github.com/fdarkaou/genviral-skill). It works with
  OpenClaw, Claude Code, Codex, Hermes, and other agent runtimes.
</Tip>

Full page content in one file: [`llms-full.txt`](https://docs.genviral.io/llms-full.txt).

## Base URL

```text theme={null}
https://www.genviral.io/api/partner/v1
```

## Authentication

1. Sign in at [genviral.io](https://www.genviral.io) and open **API Keys**.
2. Create a **Personal** or **Workspace** key and store the token (shown once).
3. Send it on every request:

```bash theme={null}
Authorization: Bearer <public_id>.<secret>
```

<Warning>
  Keys are single-scope. Workspace keys only see that workspace; personal keys only see personal
  accounts. Requests never fall through to unscoped data.
</Warning>

Partner API access requires an active Creator, Professional, or Business plan.

## Quick start

```bash theme={null}
# 1. List accounts in your key scope
curl -s https://www.genviral.io/api/partner/v1/accounts \
  -H "Authorization: Bearer $GENVIRAL_TOKEN"

# 2. Create a post
curl -X POST https://www.genviral.io/api/partner/v1/posts \
  -H "Authorization: Bearer $GENVIRAL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "caption": "Hello from the Partner API",
    "media": {
      "type": "video",
      "url": "https://cdn.example.com/clip.mp4"
    },
    "accounts": [{ "id": "YOUR_ACCOUNT_ID" }]
  }'
```

Before posting, call [`GET /accounts`](/api-reference/get-accounts) and read each account's
`capabilities` — they tell you whether the account supports text-only posts, video, slideshows,
and provider-specific settings.

## Typical workflow

1. **Discover accounts** — `GET /accounts`
2. **Create posts** — `POST /posts` with caption, optional media, and `settings.<provider>`
3. **Track status** — `GET /posts` or `GET /posts/{id}`
4. **Update or retry** — `PATCH /posts/{id}` or `POST /posts/retry`

Details live on the endpoint pages below. Start with [Create Post](/api-reference/create-post) and
[Response Pattern](/api-reference/response).

## Supported platforms

| Platform  | Posting | Analytics |
| --------- | ------- | --------- |
| TikTok    | Yes     | Yes       |
| Instagram | Yes     | Yes       |
| YouTube   | Yes     | Yes       |
| Facebook  | Yes     | -         |
| Pinterest | Yes     | -         |
| LinkedIn  | Yes     | -         |
| X/Twitter | Yes     | -         |
| Bluesky   | Yes     | -         |

Not every account supports every content type. Always check `capabilities` from `/accounts`.

## Postman

Import the collection and set `base_url` plus `partner_api_token`:

* [Download collection](https://www.genviral.io/postman-collection.json)

## Next steps

* [Response Pattern](/api-reference/response) — `ok` / `code` / `message` envelope
* [Data Structures](/api-reference/data-structures) — shared object shapes
* [Get Accounts](/api-reference/get-accounts) — account IDs and capabilities
* [Create Post](/api-reference/create-post) — captions, media, provider settings
* [Slideshows](/api-reference/slideshows) — generate and render carousels
* [Studio AI](/api-reference/studio-ai) — generate images and videos
