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

# Brands

> Organize social media presence with brands — each with isolated accounts, scheduling defaults, and team permissions.

Brands are the top-level container for everything in Autoposting. Every post, clip, carousel, and AI agent belongs to a brand — isolating connected accounts, timezone defaults, and team access per client, product, or persona.

<Note>
  Choose your brand `slug` carefully — slugs are unique per organization and cannot be changed after creation.
</Note>

## Properties

| Field | Type | Description |
| - | - | - |
| `name` | string | Display name shown across the dashboard |
| `slug` | string | URL-safe identifier, unique per org (e.g. `acme-corp`) |
| `platforms` | string\[] | Enabled platforms: `x`, `linkedin`, `youtube`, `instagram`, `threads` |
| `timezone` | string | IANA timezone for scheduling defaults (e.g. `America/New_York`) |
| `position` | number | Sort order in the brand list |
| `clipTemplateDefaults` | object | Default caption preset, platform presets, and aspect ratios for clip renders |

## Create a Brand

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://app.autoposting.ai/api-proxy/brands \
    -H "Authorization: Bearer sk_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Acme Corp",
      "slug": "acme-corp",
      "timezone": "America/New_York",
      "platforms": ["x", "linkedin"]
    }'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch("https://app.autoposting.ai/api-proxy/brands", {
    method: "POST",
    headers: {
      Authorization: "Bearer sk_your_api_key",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name: "Acme Corp",
      slug: "acme-corp",
      timezone: "America/New_York",
      platforms: ["x", "linkedin"],
    }),
  });
  const { data } = await res.json();
  ```
</CodeGroup>

## Connect Platforms

Each brand connects to one or more social accounts via OAuth. A single brand can hold multiple accounts on the same platform.

<Steps>
  <Step title="Open Connected Accounts">
    Navigate to the brand from the sidebar, then click **Connected Accounts**.
  </Step>

  <Step title="Select a platform">
    Click the platform tile — X, LinkedIn, Instagram, Threads, or YouTube.
  </Step>

  <Step title="Complete OAuth">
    Grant the requested scopes on the platform's authorization page. Tokens are encrypted at rest and refreshed automatically before expiry.
  </Step>
</Steps>

<Warning>
  Instagram requires a **Business or Creator account** linked to a Facebook Page. Personal Instagram accounts cannot be connected.
</Warning>

| Platform | Auth Protocol | Notes |
| - | - | - |
| X (Twitter) | OAuth 2.0 PKCE + OAuth 1.0a | Dual-flow for media uploads |
| LinkedIn | OAuth 2.0 | Separate credentials for personal vs. org pages |
| Instagram | Business Login | Requires Facebook Page link |
| Threads | Graph API | Separate from Instagram auth |
| YouTube | Google OAuth 2.0 | Requires channel with upload permissions |

## Team Permissions

Members can hold different roles per brand — Editor on Brand A, Viewer on Brand B.

| Role | Create Posts | Schedule | Publish | Connect Accounts | Brand Settings |
| - | - | - | - | - | - |
| Owner | Yes | Yes | Yes | Yes | Yes |
| Admin | Yes | Yes | Yes | Yes | Yes |
| Editor | Yes | Yes | Yes | No | No |
| Contributor | Yes | No | No | No | No |
| Viewer | No | No | No | No | No |

<Tip>
  Use **permission groups** to define reusable access sets and assign members to a group instead of configuring per-brand access manually.
</Tip>

<CardGroup cols={2}>
  <Card title="Posts" icon="paper-plane" href="/concepts/posts">
    Publish to every connected platform on a schedule.
  </Card>

  <Card title="Platforms" icon="link" href="/concepts/platforms">
    OAuth flows, token lifecycle, and platform capabilities.
  </Card>

  <Card title="AI Agents" icon="robot" href="/concepts/agents">
    Agents inherit brand timezone and connected accounts.
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference/overview">
    Full endpoint reference for brand management.
  </Card>
</CardGroup>


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