---
title: "Create managed accounts"
method: POST
path: "/api/managed-accounts"
tags: ["Managed Accounts"]
---

# Create managed accounts

`POST /api/managed-accounts`

## Request

- Base URL: `https://www.vidguy.ai`
- URL: `https://www.vidguy.ai/api/managed-accounts`
- Auth: HTTP bearer

Scale plan. Charges the card on file the full monthly price per account today. Accounts bought in one request renew together, monthly from the purchase date; accounts bought later have their own renewal date. There is no proration. `sandbox: true` creates free simulated accounts instead (up to 10). New accounts start in `awaiting_setup`.

`reactivateAccountId` brings back one of your accounts instead of creating one. A `reserved` account returns as the same account (username, followers, posts) on a new monthly subscription charged from today. An account whose `cancelAt` hasn't passed yet simply carries on, with no charge. An account past its reserve can't be reactivated (410).

## Headers

- `Idempotency-Key` string: Same key and body returns the original response. A different body returns 409. Failed requests are not stored, so the key can be retried.

## Request body

- CreateManagedAccountsRequest
  - `quantity` integer: Default 1.
  - `sandbox` boolean
  - `reactivateAccountId` string, uuid: Reactivate this account instead of creating new ones.

## Response `200`

Cancellation withdrawn (reactivation before `cancelAt`).

- object
  - `accounts` ManagedAccount[], required
    - `id` string, uuid, required
    - `status` 'awaiting_setup' | 'awaiting_provisioning' | 'provisioning' | 'warming_up' | 'active' | 'action_needed' | 'paused' | 'cancelled' | 'reserved', required: `reserved`: ended, but can be reactivated until `reservedUntil`.
    - `statusLabel` string, required
    - `sandbox` boolean, required: Simulated: no charges, goes live and publishes within minutes.
    - `needsSetup` boolean, required
    - `queueable` boolean, required: Can take a queued post now.
    - `postable` boolean, required
    - `platform` 'tiktok' | 'instagram' | 'null', nullable, required
    - `username` string, nullable, required
    - `name` string, nullable, required
    - `bio` string, nullable, required
    - `pfpUrl` string, nullable, required
    - `warming` object, nullable, required
    - `analytics` object, nullable, required
    - `posting` object, required
      - `earliestQueueDate` string, nullable, required
      - `dailyCap` integer, required
      - `creditsPerPost` integer, required
    - `cancelAt` string, nullable, required: Set once cancelled; the account stays live until then.
    - `reservedUntil` string, nullable, required: Cancelled with reserve: after `cancelAt` the account is kept (no posting, no billing) and can be reactivated until then. After it, the account is gone.
    - `createdAt` string, nullable, required

## Other responses

- `201`: Created, or reactivated from reserve.
- `400`: Invalid request.
- `401`: Missing or invalid API key.
- `402`: No card on file, or the payment failed.
- `403`: Requires the Scale plan.
- `409`: Account limit reached, Idempotency-Key reused with a different body, still in progress, account not cancelled, or account can no longer be reactivated.
- `410`: The account is past its reserve and can't be reactivated.
- `429`: Another purchase is in progress.

---

[API](https://skmtc.dev/vidguy/apis/vidguy-snacks-api.md) · [All operations](https://skmtc.dev/vidguy/apis/vidguy-snacks-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vidguy/apis/vidguy-snacks-api/revisions/ad6855539a1a?raw)
