v0 integrations API
The integrations API from v0 — 4 operation(s) for integrations.
The integrations API from v0 — 4 operation(s) for integrations.
openapi: 3.1.0
info:
title: v0 App agent integrations API
version: '0'
description: Full stack vibe coding API
termsOfService: https://vercel.com/legal/api-terms
servers:
- url: https://api.v0.dev/v1
tags:
- name: integrations
paths:
/integrations:
get:
summary: List Available Integrations
description: Retrieves all available integrations from the marketplace that can be created and connected.
operationId: integrations.find
tags:
- integrations
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationListSchema'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictError'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/PayloadTooLargeError'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
security:
- apiKey: []
post:
summary: Create Integration
description: Creates a new integration or returns installation URL for marketplace integrations. For storage integrations (blob), creates the store directly. For marketplace integrations, creates an integration link and returns a URL for the user to complete installation.
operationId: integrations.create
tags:
- integrations
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- type: object
properties:
type:
type: string
const: blob
description: Create a blob storage integration.
name:
type: string
minLength: 1
description: Name for the blob storage integration.
vercelProjectId:
type: string
minLength: 1
description: Vercel project ID to connect the blob storage to.
access:
default: private
description: Access level for the blob store. "private" means a token is required to read blobs (for sensitive data). "public" means blobs are publicly accessible via URL (for assets like images).
type: string
enum:
- public
- private
required:
- type
- name
- vercelProjectId
additionalProperties: false
- type: object
properties:
type:
type: string
const: marketplace
description: Create a marketplace integration.
productId:
type: string
minLength: 1
description: The product ID from the marketplace (e.g., "iap_xxxxx" for products, or slug for integrations).
vercelProjectId:
type: string
minLength: 1
description: Vercel project ID to connect the integration to (required for marketplace integrations).
required:
- type
- productId
- vercelProjectId
additionalProperties: false
responses:
'200':
description: Success
content:
application/json:
schema:
anyOf:
- type: object
properties:
id:
type: string
description: The ID of the integration.
object:
type: string
const: integration
description: The object type.
slug:
type: string
description: The slug of the integration.
name:
type: string
description: The name of the integration.
description:
type: string
description: A short description of the integration.
iconUrl:
type: string
description: URL to the integration icon.
storeId:
type: string
description: The ID of the created store/integration.
type:
type: string
const: storage
description: Indicates this is a storage integration that was created directly.
required:
- id
- object
- slug
- name
- description
- iconUrl
- storeId
- type
additionalProperties: false
- type: object
properties:
integrationId:
type: string
description: The ID of the integration.
installationUrl:
type: string
format: uri
description: URL where the user should go to complete the integration installation.
token:
type: string
description: Token for tracking the installation process.
expiresAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
description: When the installation link expires.
type:
type: string
const: marketplace
description: Indicates this requires user installation via Vercel marketplace.
required:
- integrationId
- installationUrl
- token
- expiresAt
- type
additionalProperties: false
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictError'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/PayloadTooLargeError'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
security:
- apiKey: []
/integrations/vercel/projects:
get:
summary: Find Vercel Projects
description: Retrieves a list of Vercel projects linked to your integration. Useful for associating chats, deployments, or hooks with specific Vercel projects.
operationId: integrations.vercel.projects.find
tags:
- integrations
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
object:
type: string
const: list
data:
type: array
items:
$ref: '#/components/schemas/VercelProjectSummary'
required:
- object
- data
additionalProperties: false
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictError'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/PayloadTooLargeError'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
security:
- apiKey: []
post:
summary: Create Vercel Project
description: Links a Vercel project to an existing v0 project. Enables Vercel-related features and deployment integration within the v0 workspace.
operationId: integrations.vercel.projects.create
tags:
- integrations
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
projectId:
type: string
description: The ID of the v0 project to link to the new Vercel project.
name:
type: string
description: The name to assign to the new Vercel project.
required:
- projectId
- name
additionalProperties: false
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VercelProjectDetail'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictError'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/PayloadTooLargeError'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
security:
- apiKey: []
/integrations/wizard:
post:
summary: Update Data From Wizard
description: Update the wizard data for a specific block.
operationId: integrations.wizard.create
tags:
- integrations
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
setEnvironmentVariables:
type: array
items:
type: object
properties:
key:
type: string
minLength: 1
value:
type: string
minLength: 1
maxLength: 65536
targets:
type: array
items:
type: string
enum:
- production
- preview
- development
required:
- key
- value
additionalProperties: false
runActions:
type: array
items:
type: object
properties:
action:
type: string
enum:
- supabase-chat-url
required:
- action
additionalProperties: false
connectIntegrations:
type: array
items:
type: object
properties:
integrationId:
type: string
name:
type: string
enum:
- Upstash for Redis
- Upstash Search
- Neon
- Supabase
- Amazon Aurora DSQL
- Amazon Aurora PostgreSQL
- Amazon DynamoDB
- firebase
- Groq
- Grok
- fal
- Deep Infra
- Stripe
- Clerk
- Convex
- Blob
- Edge Config
- Vercel AI Gateway
- Snowflake
existingInstanceId:
type: string
importExisting:
type: boolean
acceptedLinks:
type: object
properties:
eulaLink:
type: boolean
privacyLink:
type: boolean
required:
- eulaLink
- privacyLink
additionalProperties: false
useMarketplaceFlow:
type: boolean
targets:
type: array
items:
type: string
enum:
- production
- preview
- development
allowEnvOverride:
type: boolean
access:
type: string
enum:
- public
- private
region:
type: string
required:
- integrationId
- name
additionalProperties: false
disableAutoPrompt:
type: boolean
setBannerDismissed:
type: object
properties:
fingerprint:
type: string
dismissed:
type: boolean
required:
- fingerprint
- dismissed
additionalProperties: false
blockId:
type: string
autoCreateV0Project:
type: boolean
required:
- blockId
additionalProperties: false
responses:
'200':
description: Success
content:
application/json:
schema:
anyOf:
- type: object
properties:
status:
type: string
const: success
disabledAutoPrompt:
anyOf:
- type: object
properties:
status:
type: string
const: success
required:
- status
additionalProperties: false
- type: object
properties:
status:
type: string
const: error
message:
type: string
required:
- status
- message
additionalProperties: false
setBannerDismissedResult:
anyOf:
- type: object
properties:
status:
type: string
const: success
required:
- status
additionalProperties: false
- type: object
properties:
status:
type: string
const: error
message:
type: string
required:
- status
- message
additionalProperties: false
ranActions:
type: array
items:
allOf:
- anyOf:
- type: object
properties:
status:
type: string
const: success
required:
- status
additionalProperties: false
- type: object
properties:
status:
type: string
const: error
message:
type: string
required:
- status
- message
additionalProperties: false
- type: object
properties:
action:
type: string
enum:
- supabase-chat-url
required:
- action
additionalProperties: false
setEnvironmentVariables:
allOf:
- anyOf:
- type: object
properties:
status:
type: string
const: success
required:
- status
additionalProperties: false
- type: object
properties:
status:
type: string
const: error
message:
type: string
required:
- status
- message
additionalProperties: false
- type: object
properties:
keys:
type: array
items:
type: string
required:
- keys
additionalProperties: false
connectedIntegrations:
type: array
items:
allOf:
- anyOf:
- type: object
properties:
status:
type: string
const: success
redirectUrl:
type: string
format: uri
acceptPolicies:
type: object
properties:
title:
type: string
description:
type: string
addendumLink:
type: object
properties:
url:
type: string
text:
type: string
required:
- url
- text
additionalProperties: false
eulaLink:
anyOf:
- type: object
properties:
url:
type: string
text:
type: string
required:
- url
- text
additionalProperties: false
- type: 'null'
privacyLink:
anyOf:
- type: object
properties:
url:
type: string
text:
type: string
required:
- url
- text
additionalProperties: false
- type: 'null'
footerMD:
type: string
actionButtonText:
type: string
required:
- title
- description
- addendumLink
- eulaLink
- privacyLink
- footerMD
- actionButtonText
additionalProperties: false
isPending:
type: boolean
required:
- status
- isPending
additionalProperties: false
- type: object
properties:
status:
type: string
const: error
message:
type: string
required:
- status
- message
additionalProperties: false
- type: object
properties:
integrationId:
type: string
integrationName:
type: string
enum:
- Upstash for Redis
- Upstash Search
- Neon
- Supabase
- Amazon Aurora DSQL
- Amazon Aurora PostgreSQL
- Amazon DynamoDB
- firebase
- Groq
- Grok
- fal
- Deep Infra
- Stripe
- Clerk
- Convex
- Blob
- Edge Config
- Vercel AI Gateway
- Snowflake
required:
- integrationId
- integrationName
additionalProperties: false
createdV0Project:
anyOf:
- type: object
properties:
projectId:
type: string
name:
type: string
settings:
type: object
properties:
color:
type:
- string
- 'null'
icon:
type:
- string
- 'null'
required:
- color
- icon
additionalProperties: false
vercelProjectId:
type: string
isCreator:
type: boolean
required:
- projectId
- name
- settings
- vercelProjectId
- isCreator
additionalProperties: false
- type: 'null'
createdVercelProjectId:
type:
- string
- 'null'
required:
- status
- disabledAutoPrompt
- setBannerDismissedResult
- ranActions
- setEnvironmentVariables
- connectedIntegrations
- createdV0Project
- createdVercelProjectId
additionalProperties: false
- type: object
properties:
status:
type: string
const: error
message:
type: string
forbidden:
type: boolean
required:
- status
- message
additionalProperties: false
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictError'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/PayloadTooLargeError'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
security:
- apiKey: []
get:
summary: Compute Wizard
description: Compute and retrieve the latest wizard data for a specific block.
operationId: integrations.wizard.find
tags:
- integrations
responses:
'200':
descript
# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/v0/refs/heads/main/openapi/v0-integrations-api-openapi.yml