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

# Get Started with Volta: Publish Your First Post in 5 Minutes

> Connect your first social channel and publish a post using the Volta dashboard, REST API, and @postsider/node SDK — in under five minutes.

By the end of this guide you'll have a social channel connected to Volta, a post scheduled from the dashboard calendar, and the same post published programmatically via both the REST API and the `@postsider/node` SDK. Each step builds on the last, so work through them in order the first time.

<Note>
  Your API key is used to authenticate every programmatic request. Find it in the dashboard under **Settings → API Keys**. You can create multiple named keys — one per integration or agent is a good practice.
</Note>

<Steps>
  <Step title="Access your Volta instance">
    Open your Volta instance in a browser. If you're running the Docker Compose stack locally, the address is:

    ```text theme={null}
    http://localhost:4007
    ```

    If you're connecting to a deployed instance, use the public URL your administrator provided (for example, `https://volta.yourcompany.com`). Sign in with the credentials you created during the bootstrap flow. If this is your very first login, see [Self-Hosting](/self-hosting) for the one-time password steps.
  </Step>

  <Step title="Connect a channel">
    Before you can publish anything, Volta needs OAuth access (or credentials) for at least one social platform.

    1. In the left sidebar, click **Channels**.
    2. Click **Add Channel** in the top-right corner.
    3. Choose a platform from the list — for example, **LinkedIn** or **Bluesky**.
    4. If OAuth credentials are already configured (either in your `.env` or via the OAuth setup UI), click **Sign in with \[Platform]** and complete the OAuth flow in the pop-up window. Otherwise, click **Enter credentials manually** and paste your access token or app password.
    5. Once connected, the channel appears in your channel list with a green status indicator.

    <Tip>
      You don't need to edit `.env` to add OAuth credentials. In the **Add Channel** popup, click **Setup OAuth** to enter your platform's Client ID and Secret directly from the UI — Volta stores them encrypted in the database.
    </Tip>
  </Step>

  <Step title="Schedule a post from the calendar">
    With a channel connected, head to the **Calendar** view to schedule your first post.

    1. In the left sidebar, click **Calendar**.
    2. Click any future time slot on the calendar grid.
    3. In the composer that appears, type your post content.
    4. Select the channel you just connected from the channel picker.
    5. Confirm the date and time, then click **Schedule**.

    Your post appears on the calendar as a card. Volta's durable scheduling engine will publish it at exactly the scheduled time — even if the server restarts in the meantime.
  </Step>

  <Step title="Publish via the REST API">
    You can create and schedule posts without ever opening the dashboard. Authenticate every request with your API key in the `Authorization` header.

    ```bash theme={null}
    curl -X POST https://your-instance.com/public/v1/posts \
      -H 'Authorization: YOUR_API_KEY' \
      -H 'Content-Type: application/json' \
      -d '{
        "type": "schedule",
        "date": "2025-01-15T10:00:00",
        "posts": [
          {
            "integration": { "id": "your-channel-id" },
            "value": [{ "content": "Hello from the Volta API!" }]
          }
        ]
      }'
    ```

    Replace `YOUR_API_KEY` with a key from **Settings → API Keys** and `your-channel-id` with the ID of the channel you connected in Step 2. You can retrieve all channel IDs by calling `GET /public/v1/integrations`.

    A successful response returns `201 Created` with the new post object, including its `id` and scheduled `date`.
  </Step>

  <Step title="Publish via the SDK">
    For TypeScript and Node.js projects, the `@postsider/node` SDK wraps every public API endpoint with full type safety and auto-completion.

    **Install the SDK:**

    ```bash theme={null}
    npm install @postsider/node
    ```

    **Schedule a post:**

    ```typescript theme={null}
    import Postsider from '@postsider/node';

    const client = new Postsider(
      'your-api-key',
      'https://your-instance.com'
    );

    // Schedule a post
    await client.post({
      type: 'schedule',
      date: '2025-01-15T10:00:00',
      posts: [
        {
          integration: { id: 'channel-id' },
          value: [{ content: 'Hello from Volta!' }],
        },
      ],
    });

    // List all scheduled posts
    const posts = await client.postList({ page: 0, limit: 20 });

    // List connected channels
    const channels = await client.integrations();
    ```

    The `Postsider` constructor accepts your API key as the first argument and your instance's base URL as the second. Both the API key and base URL are required — there is no default instance.
  </Step>
</Steps>

***

<Tip>
  **Using an AI agent?** Point Claude Code, Codex, or any MCP-compatible runtime directly at your instance's MCP endpoint — no extra code needed:

  ```text theme={null}
  https://your-instance.com/mcp/YOUR_API_KEY
  ```

  Your agent immediately gains access to 16 tools covering post scheduling, analytics, channel management, and media uploads. Visit `https://your-instance.com/mcp/info` for ready-to-paste quickstart configs for popular runtimes.
</Tip>
