VibeCody
Open dashboard

Developer documentation

VibeCody REST API

Build native or server integrations against the versioned JSON API. Projects, campaigns, research, media, calendars, publishing, analytics, and jobs all use the same workspace records as the web app.

MCP agent guideREST API guide

Production API base URL

https://api.vibecody.app/api/v1

Complete OpenAPI 3.1 specification: https://api.vibecody.app/api-docs.json

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)

MethodPathPurpose
POST/api/v1/auth/appleSign in with Apple
POST/api/v1/auth/googleSign in with Google
POST/api/v1/auth/credentialsSign in with a pre-provisioned reviewer account
POST/api/v1/auth/logoutRevoke the current session
DELETE/api/v1/auth/meDelete the current user
GET/api/v1/auth/meGet the current user
POST/api/v1/auth/refreshRotate a refresh token
DELETE/api/v1/auth/push-tokenUnregister the current device from push notifications
POST/api/v1/auth/push-tokenRegister an APNs device token

System (3)

MethodPathPurpose
GET/api/v1/healthHealth check
GET/api/v1/readinessDatabase and queue readiness check
GET/api/v1/app-configGet versioned server-driven mobile capabilities

Billing (2)

MethodPathPurpose
GET/api/v1/billing/statusGet StoreKit products and server-authoritative paid access
POST/api/v1/billing/app-store-transactionsVerify and grant one App Store subscription transaction

Platforms (1)

MethodPathPurpose
GET/api/v1/platformsGet the canonical Platform First catalog

Project Setup (7)

MethodPathPurpose
GET/api/v1/project-setupList resumable project setup sessions
POST/api/v1/project-setupStart 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}/analyzeAnalyze a public project source
POST/api/v1/project-setup/{sessionId}/previewBuild and persist a content plan preview
POST/api/v1/project-setup/{sessionId}/completeRequest idempotent setup provisioning

Projects (13)

MethodPathPurpose
GET/api/v1/projects/pageSearch and page accessible projects
GET/api/v1/projectsList accessible projects
POST/api/v1/projectsCreate 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}/destinationsUpdate the agents and destinations enabled for a project
GET/api/v1/projects/{projectId}/homeGet the mobile project home
GET/api/v1/projects/{projectId}/settingsGet project settings
PATCH/api/v1/projects/{projectId}/settingsUpdate project settings
POST/api/v1/projects/{projectId}/membersShare 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)

MethodPathPurpose
GET/api/v1/projects/{projectId}/seo-research/pageSearch saved SEO research
GET/api/v1/projects/{projectId}/advanced-research/pageSearch saved research workflows
GET/api/v1/projects/{projectId}/seo-researchList saved SEO research runs
POST/api/v1/projects/{projectId}/seo-researchRun and save SEO keyword research
POST/api/v1/projects/{projectId}/seo-research/estimatePreview 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-researchList SEO and ASO evidence workflows
POST/api/v1/projects/{projectId}/advanced-researchQueue a high-value SEO or ASO workflow
POST/api/v1/projects/{projectId}/advanced-research/estimatePreview advanced research freshness and cost
GET/api/v1/projects/{projectId}/advanced-research/catalogGet 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}/selectionSelect campaign evidence
PATCH/api/v1/projects/{projectId}/seo-research/{runId}/selectionSave the selected keywords for a research run

Video Catalog (4)

MethodPathPurpose
GET/api/v1/video-catalog/formats/{blueprintId}/previewGet temporary URLs for a published video format example
GET/api/v1/video-catalog/formatsGet canonical video format capabilities
GET/api/v1/video-catalog/charactersGet ready catalog characters with immutable pose versions
GET/api/v1/video-catalogPage ready licensed catalog assets

Starter Pack (4)

MethodPathPurpose
GET/api/v1/projects/starter-pack-catalogGet reusable Starter Pack creators and pricing
POST/api/v1/projects/{projectId}/starter-packsCreate 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)

MethodPathPurpose
GET/api/v1/projects/{projectId}/contentBrowse 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-contentQueue destination-native campaign content for up to three canonical destinations
GET/api/v1/projects/{projectId}/idea-draftsRestore the saved idea for a creator and output type
PUT/api/v1/projects/{projectId}/idea-draftsSave the active creator and output idea
POST/api/v1/projects/{projectId}/suggestions/outputGenerate a project-aware output idea
GET/api/v1/projects/{projectId}/reelsList project reels
POST/api/v1/projects/{projectId}/reelsQueue reel generation
GET/api/v1/projects/{projectId}/carouselsList project carousels
POST/api/v1/projects/{projectId}/carouselsQueue carousel generation
GET/api/v1/projects/{projectId}/render-outputs/{renderOutputId}/downloadCreate a signed reel download
GET/api/v1/projects/{projectId}/carousels/{carouselId}/frames/{frameId}/downloadCreate a signed carousel frame download

Campaigns (10)

MethodPathPurpose
GET/api/v1/projects/{projectId}/content-campaignsList evidence-backed campaigns
POST/api/v1/projects/{projectId}/content-campaignsCreate an evidence-backed campaign
POST/api/v1/projects/{projectId}/content-campaigns/create-and-generateAtomically 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}/generateGenerate 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}/approvalApprove or reject an output
POST/api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/regenerateRegenerate one output scope
GET/api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/revisionsList immutable output revisions

Publishing (16)

MethodPathPurpose
GET/api/v1/projects/{projectId}/content-campaigns/{campaignId}/publish-attemptsList campaign delivery attempts
POST/api/v1/projects/{projectId}/content-campaigns/{campaignId}/publish-attempts/{attemptId}/retryRetry a failed delivery
POST/api/v1/projects/{projectId}/content-campaigns/{campaignId}/publish-attempts/{attemptId}/cancelCancel queued delivery
POST/api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/publishing-previewPreview a redacted provider request
POST/api/v1/projects/{projectId}/content-campaigns/{campaignId}/outputs/{outputId}/publishQueue approved provider delivery
GET/api/v1/projects/{projectId}/publishing-connectionsList safe publishing connection metadata
POST/api/v1/projects/{projectId}/publishing-connectionsCreate an encrypted publishing connection
POST/api/v1/projects/{projectId}/publishing-connections/officialCreate 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}/certificationRecord a publishing certification gate or explicitly enable production
POST/api/v1/projects/{projectId}/publishing-connections/{connectionId}/oauth/startStart the provider-specific official OAuth flow
GET/api/v1/projects/{projectId}/operationsGet 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}/packageGet an exact immutable publishing package revision

Analytics (7)

MethodPathPurpose
GET/api/v1/projects/{projectId}/analytics-connectionsList performance analytics connections
POST/api/v1/projects/{projectId}/analytics-connectionsStore an encrypted analytics connection
DELETE/api/v1/projects/{projectId}/analytics-connections/{connectionId}Revoke an analytics connection
POST/api/v1/projects/{projectId}/analytics-connections/{connectionId}/syncQueue an idempotent analytics sync
POST/api/v1/projects/{projectId}/analytics-connections/{connectionId}/importImport bounded operator-supplied performance snapshots
GET/api/v1/projects/{projectId}/performanceGet 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)

MethodPathPurpose
GET/api/v1/projects/{projectId}/avatar-agentsList avatar agents
POST/api/v1/projects/{projectId}/avatar-voices/resolveResolve a provider catalog voice to a generation voice ID (project editor required)
GET/api/v1/projects/{projectId}/avatar-voicesBrowse 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}/referencesReplace avatar references
POST/api/v1/projects/{projectId}/avatar-agents/{avatarId}/planPlan the next avatar window
GET/api/v1/projects/{projectId}/avatarsList project avatars
POST/api/v1/projects/{projectId}/avatars/generateQueue avatar generation
POST/api/v1/projects/{projectId}/avatars/readyAdd a reusable ready creator with cached media

Planner (11)

MethodPathPurpose
GET/api/v1/projects/{projectId}/editorial-calendarsList SEO editorial calendars
POST/api/v1/projects/{projectId}/editorial-calendarsResearch 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-planGet content plan
POST/api/v1/projects/{projectId}/content-planCreate a content plan item
POST/api/v1/projects/{projectId}/content-plan/generateGenerate 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}/pregeneratePregenerate a planned item

Assets (7)

MethodPathPurpose
GET/api/v1/projects/{projectId}/assetsList project assets
POST/api/v1/projects/{projectId}/assets/generate-imageGenerate 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}/downloadCreate a signed asset download
POST/api/v1/projects/{projectId}/uploadsCreate a presigned upload
POST/api/v1/projects/{projectId}/uploads/{assetId}/finalizeFinalize an upload

Jobs (3)

MethodPathPurpose
GET/api/v1/jobsList generation jobs
GET/api/v1/jobs/{jobId}Get generation status
POST/api/v1/jobs/{jobId}/resumeResume 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.