Authentication
Sign in with Apple or Google using the corresponding /api/v1/auth/* endpoint. The API verifies the provider identity token and returns a short-lived bearer access token plus a rotating refresh token. Store both securely and refresh the session when needed.
curl https://api.vibecody.app/api/v1/auth/me \
-H 'Authorization: Bearer <MOBILE_ACCESS_TOKEN>'
A VibeCody MCP token is not a REST access token. Browser sign-in cookies are also separate. Use the MCP endpoint for an external agent that has a token created in project Settings. The credentials sign-in route in this API is for explicitly enabled, pre-provisioned reviewer accounts, not general user registration.
What you can build
Workspace
Create projects, configure destinations and settings, and manage members.
Research and planning
Run SEO or ASO research, select evidence, and create content plans or editorial calendars.
Content production
Generate destination-native campaigns, reels, carousels, avatars, and Starter Packs; read and revise outputs.
Media
Upload project assets through signed URLs, finalize them, and download approved renders or frames.
Publishing
Set up connections, preview delivery, publish approved content, and inspect attempts or operations.
Performance
Connect analytics, sync performance, and review recorded recommendations.
For agent-authored posts or articles that must bypass VibeCody's writer, use MCP submit_campaign_text or submit_campaign_output. The versioned REST catalog below does not expose that direct-submission operation.
Complete endpoint reference
The routes below are generated from the checked-in OpenAPI contract. Open the live OpenAPI JSON for exact request bodies, response schemas, operation IDs, and security requirements. Availability of a provider integration still depends on account setup and destination policy.
Auth (9)
| Method | Path | Purpose |
|---|
| POST | /api/v1/auth/apple | Sign in with Apple |
| POST | /api/v1/auth/google | Sign in with Google |
| POST | /api/v1/auth/credentials | Sign in with a pre-provisioned reviewer account |
| POST | /api/v1/auth/logout | Revoke the current session |
| DELETE | /api/v1/auth/me | Delete the current user |
| GET | /api/v1/auth/me | Get the current user |
| POST | /api/v1/auth/refresh | Rotate a refresh token |
| DELETE | /api/v1/auth/push-token | Unregister the current device from push notifications |
| POST | /api/v1/auth/push-token | Register an APNs device token |
System (3)
| Method | Path | Purpose |
|---|
| GET | /api/v1/health | Health check |
| GET | /api/v1/readiness | Database and queue readiness check |
| GET | /api/v1/app-config | Get versioned server-driven mobile capabilities |
Billing (2)
| Method | Path | Purpose |
|---|
| GET | /api/v1/billing/status | Get StoreKit products and server-authoritative paid access |
| POST | /api/v1/billing/app-store-transactions | Verify and grant one App Store subscription transaction |
Project Setup (7)
| Method | Path | Purpose |
|---|
| GET | /api/v1/project-setup | List resumable project setup sessions |
| POST | /api/v1/project-setup | Start or resume idempotent project setup |
| GET | /api/v1/project-setup/{sessionId} | Get setup, destination catalog, connection status, and creators |
| PATCH | /api/v1/project-setup/{sessionId} | Save setup step data with optimistic revision |
| POST | /api/v1/project-setup/{sessionId}/analyze | Analyze a public project source |
| POST | /api/v1/project-setup/{sessionId}/preview | Build and persist a content plan preview |
| POST | /api/v1/project-setup/{sessionId}/complete | Request idempotent setup provisioning |
Projects (13)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/page | Search and page accessible projects |
| GET | /api/v1/projects | List accessible projects |
| POST | /api/v1/projects | Create a project |
| DELETE | /api/v1/projects/{projectId} | Delete a project |
| GET | /api/v1/projects/{projectId} | Get a project |
| PATCH | /api/v1/projects/{projectId} | Rename a project |
| PATCH | /api/v1/projects/{projectId}/destinations | Update the agents and destinations enabled for a project |
| GET | /api/v1/projects/{projectId}/home | Get the mobile project home |
| GET | /api/v1/projects/{projectId}/settings | Get project settings |
| PATCH | /api/v1/projects/{projectId}/settings | Update project settings |
| POST | /api/v1/projects/{projectId}/members | Share project access |
| DELETE | /api/v1/projects/{projectId}/members/{membershipId} | Remove a project member |
| PATCH | /api/v1/projects/{projectId}/members/{membershipId} | Update a project member |
Research (13)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/seo-research/page | Search saved SEO research |
| GET | /api/v1/projects/{projectId}/advanced-research/page | Search saved research workflows |
| GET | /api/v1/projects/{projectId}/seo-research | List saved SEO research runs |
| POST | /api/v1/projects/{projectId}/seo-research | Run and save SEO keyword research |
| POST | /api/v1/projects/{projectId}/seo-research/estimate | Preview cache freshness and paid SEO refresh cost |
| GET | /api/v1/projects/{projectId}/seo-research/{runId} | Get one saved SEO research run |
| GET | /api/v1/projects/{projectId}/advanced-research | List SEO and ASO evidence workflows |
| POST | /api/v1/projects/{projectId}/advanced-research | Queue a high-value SEO or ASO workflow |
| POST | /api/v1/projects/{projectId}/advanced-research/estimate | Preview advanced research freshness and cost |
| GET | /api/v1/projects/{projectId}/advanced-research/catalog | Get cached App Store or Google Play categories and chart collections |
| GET | /api/v1/projects/{projectId}/advanced-research/{runId} | Get an advanced research run |
| PATCH | /api/v1/projects/{projectId}/advanced-research/{runId}/selection | Select campaign evidence |
| PATCH | /api/v1/projects/{projectId}/seo-research/{runId}/selection | Save the selected keywords for a research run |
Video Catalog (4)
| Method | Path | Purpose |
|---|
| GET | /api/v1/video-catalog/formats/{blueprintId}/preview | Get temporary URLs for a published video format example |
| GET | /api/v1/video-catalog/formats | Get canonical video format capabilities |
| GET | /api/v1/video-catalog/characters | Get ready catalog characters with immutable pose versions |
| GET | /api/v1/video-catalog | Page ready licensed catalog assets |
Starter Pack (4)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/starter-pack-catalog | Get reusable Starter Pack creators and pricing |
| POST | /api/v1/projects/{projectId}/starter-packs | Create a Reel, Carousel, and native destination posts for one Starter credit |
| GET | /api/v1/projects/{projectId}/starter-packs/{jobId} | Get aggregate Starter Pack progress and outputs |
| PATCH | /api/v1/projects/{projectId}/starter-packs/{jobId}/content/{platform} | Edit a generated native platform post or article |
Outputs (14)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/content | Browse all project content with server filters and stable cursor pagination |
| GET | /api/v1/projects/{projectId}/content/{contentId} | Read a content item directly, including older history |
| GET | /api/v1/projects/{projectId}/reels/{reelId} | Get a project video by ID |
| GET | /api/v1/projects/{projectId}/carousels/{carouselId} | Get a project carousel by ID |
| POST | /api/v1/projects/{projectId}/canonical-content | Queue destination-native campaign content for up to three canonical destinations |
| GET | /api/v1/projects/{projectId}/idea-drafts | Restore the saved idea for a creator and output type |
| PUT | /api/v1/projects/{projectId}/idea-drafts | Save the active creator and output idea |
| POST | /api/v1/projects/{projectId}/suggestions/output | Generate a project-aware output idea |
| GET | /api/v1/projects/{projectId}/reels | List project reels |
| POST | /api/v1/projects/{projectId}/reels | Queue reel generation |
| GET | /api/v1/projects/{projectId}/carousels | List project carousels |
| POST | /api/v1/projects/{projectId}/carousels | Queue carousel generation |
| GET | /api/v1/projects/{projectId}/render-outputs/{renderOutputId}/download | Create a signed reel download |
| GET | /api/v1/projects/{projectId}/carousels/{carouselId}/frames/{frameId}/download | Create a signed carousel frame download |
Campaigns (10)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/content-campaigns | List evidence-backed campaigns |
| POST | /api/v1/projects/{projectId}/content-campaigns | Create an evidence-backed campaign |
| POST | /api/v1/projects/{projectId}/content-campaigns/create-and-generate | Atomically reserve one credit and generate a native content set |
| GET | /api/v1/projects/{projectId}/content-campaigns/{campaignId} | Get campaign outputs |
| PATCH | /api/v1/projects/{projectId}/content-campaigns/{campaignId} | Update a campaign brief |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/generate | Generate native destination outputs |
| PATCH | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId} | Save a campaign output revision |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/approval | Approve or reject an output |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/regenerate | Regenerate one output scope |
| GET | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/revisions | List immutable output revisions |
Publishing (16)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/publish-attempts | List campaign delivery attempts |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/publish-attempts/{attemptId}/retry | Retry a failed delivery |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/publish-attempts/{attemptId}/cancel | Cancel queued delivery |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/publishing-preview | Preview a redacted provider request |
| POST | /api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/publish | Queue approved provider delivery |
| GET | /api/v1/projects/{projectId}/publishing-connections | List safe publishing connection metadata |
| POST | /api/v1/projects/{projectId}/publishing-connections | Create an encrypted publishing connection |
| POST | /api/v1/projects/{projectId}/publishing-connections/official | Create a server-owned official publishing connection (OAuth or Telegram bot token) |
| DELETE | /api/v1/projects/{projectId}/publishing-connections/{connectionId} | Revoke a publishing credential |
| GET | /api/v1/projects/{projectId}/publishing-connections/{connectionId} | Get publishing connection metadata |
| PATCH | /api/v1/projects/{projectId}/publishing-connections/{connectionId} | Update or rotate a publishing connection |
| PATCH | /api/v1/projects/{projectId}/publishing-connections/{connectionId}/certification | Record a publishing certification gate or explicitly enable production |
| POST | /api/v1/projects/{projectId}/publishing-connections/{connectionId}/oauth/start | Start the provider-specific official OAuth flow |
| GET | /api/v1/projects/{projectId}/operations | Get admin cost, cache, provider, and publishing health |
| GET | /api/v1/projects/{projectId}/operations/{operationId} | Get one long-running operation by its stable ID |
| GET | /api/v1/projects/{projectId}/distribution-revisions/{revisionId}/package | Get an exact immutable publishing package revision |
Analytics (7)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/analytics-connections | List performance analytics connections |
| POST | /api/v1/projects/{projectId}/analytics-connections | Store an encrypted analytics connection |
| DELETE | /api/v1/projects/{projectId}/analytics-connections/{connectionId} | Revoke an analytics connection |
| POST | /api/v1/projects/{projectId}/analytics-connections/{connectionId}/sync | Queue an idempotent analytics sync |
| POST | /api/v1/projects/{projectId}/analytics-connections/{connectionId}/import | Import bounded operator-supplied performance snapshots |
| GET | /api/v1/projects/{projectId}/performance | Get normalized cross-channel performance and reviewable recommendations |
| PATCH | /api/v1/projects/{projectId}/performance-recommendations/{recommendationId} | Approve, dismiss, or apply a recommendation as a recorded influence |
Avatars (9)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/avatar-agents | List avatar agents |
| POST | /api/v1/projects/{projectId}/avatar-voices/resolve | Resolve a provider catalog voice to a generation voice ID (project editor required) |
| GET | /api/v1/projects/{projectId}/avatar-voices | Browse the live ElevenLabs avatar voice catalog |
| PATCH | /api/v1/projects/{projectId}/avatar-agents/{avatarId} | Update an avatar agent |
| PUT | /api/v1/projects/{projectId}/avatar-agents/{avatarId}/references | Replace avatar references |
| POST | /api/v1/projects/{projectId}/avatar-agents/{avatarId}/plan | Plan the next avatar window |
| GET | /api/v1/projects/{projectId}/avatars | List project avatars |
| POST | /api/v1/projects/{projectId}/avatars/generate | Queue avatar generation |
| POST | /api/v1/projects/{projectId}/avatars/ready | Add a reusable ready creator with cached media |
Planner (11)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/editorial-calendars | List SEO editorial calendars |
| POST | /api/v1/projects/{projectId}/editorial-calendars | Research and create an SEO editorial calendar |
| GET | /api/v1/projects/{projectId}/editorial-calendars/{calendarId} | Get an SEO editorial calendar |
| PATCH | /api/v1/projects/{projectId}/editorial-calendars/{calendarId} | Activate or update an SEO editorial calendar |
| PATCH | /api/v1/projects/{projectId}/editorial-calendars/{calendarId}/items/{itemId} | Update an editorial calendar article |
| GET | /api/v1/projects/{projectId}/content-plan | Get content plan |
| POST | /api/v1/projects/{projectId}/content-plan | Create a content plan item |
| POST | /api/v1/projects/{projectId}/content-plan/generate | Generate a content plan |
| DELETE | /api/v1/projects/{projectId}/content-plan/{itemId} | Delete a content plan item |
| PATCH | /api/v1/projects/{projectId}/content-plan/{itemId} | Update a content plan item |
| POST | /api/v1/projects/{projectId}/content-plan/{itemId}/pregenerate | Pregenerate a planned item |
Assets (7)
| Method | Path | Purpose |
|---|
| GET | /api/v1/projects/{projectId}/assets | List project assets |
| POST | /api/v1/projects/{projectId}/assets/generate-image | Generate a reusable project image; poll the returned job ID |
| DELETE | /api/v1/projects/{projectId}/assets/{assetId} | Archive a project asset |
| PATCH | /api/v1/projects/{projectId}/assets/{assetId} | Update a project asset |
| GET | /api/v1/projects/{projectId}/assets/{assetId}/download | Create a signed asset download |
| POST | /api/v1/projects/{projectId}/uploads | Create a presigned upload |
| POST | /api/v1/projects/{projectId}/uploads/{assetId}/finalize | Finalize an upload |
Jobs (3)
| Method | Path | Purpose |
|---|
| GET | /api/v1/jobs | List generation jobs |
| GET | /api/v1/jobs/{jobId} | Get generation status |
| POST | /api/v1/jobs/{jobId}/resume | Resume a paused generation |
Integration notes
- Use a project ID returned by
GET /api/v1/projects; project access and available credits are checked on protected operations. - Generation, research, and publishing can return a job or operation ID. Poll the matching status route instead of blindly repeating a write.
- Uploads use a presigned URL and a separate finalize call. Signed download URLs expire; retain resource IDs rather than the URLs.
- Saving a draft does not approve or publish it. Quality, exact-revision approval, connection readiness, and provider rules still apply.
- Some sensitive setup steps require user interaction outside the API, especially provider OAuth. Never send provider passwords or refresh tokens in prompts.