v0 projects API
The projects API from v0 — 9 operation(s) for projects.
The projects API from v0 — 9 operation(s) for projects.
openapi: 3.1.0
info:
title: v0 App agent projects 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: projects
paths:
/chats/{chatId}/project:
get:
summary: Get Project by Chat ID
description: Retrieves the v0 project associated with a given chat. Useful for determining the context or scope of a chat session.
operationId: projects.getByChatId
tags:
- projects
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: A unique identifier for the project.
object:
type: string
const: project
description: Fixed value identifying this object as a project.
name:
type: string
description: The name of the project as defined by the user.
privacy:
type: string
enum:
- private
- team
description: The privacy setting for the project - either private or team.
vercelProjectId:
description: Optional ID of the linked Vercel project, if connected.
type: string
createdAt:
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: The ISO timestamp representing when the project was created.
updatedAt:
description: The ISO timestamp of the most recent update, if available.
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))$
apiUrl:
type: string
format: uri
description: The API endpoint URL for accessing this project programmatically.
webUrl:
type: string
format: uri
description: The web URL where the project can be viewed or managed.
description:
description: The description of the project.
type: string
instructions:
description: The instructions for the project.
type: string
chats:
type: array
items:
type: object
properties:
id:
type: string
description: A unique identifier for the chat.
object:
type: string
const: chat
description: Fixed value identifying this object as a chat.
shareable:
type: boolean
description: Indicates whether the chat can be shared via public link.
privacy:
type: string
enum:
- public
- private
- team
- team-edit
- unlisted
description: Defines the visibility of the chat—private, team-only, or public.
name:
description: An optional name assigned to the chat by the user.
type: string
title:
type: string
description: Deprecated title field preserved for backward compatibility.
deprecated: true
createdAt:
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: The ISO timestamp representing when the chat was created.
updatedAt:
description: The ISO timestamp of the last update to the chat.
type: string
favorite:
type: boolean
description: Indicates whether the chat is marked as a favorite.
authorId:
type: string
description: The ID of the user who created the chat.
projectId:
description: Optional ID of the v0 project associated with this chat.
type: string
vercelProjectId:
description: Optional ID of the linked Vercel project, if connected.
type: string
webUrl:
type: string
description: Web URL to view this chat in the browser.
apiUrl:
type: string
description: API URL to access this chat via the API.
latestVersion:
description: The most recent generated version of the chat, if available.
type: object
properties:
id:
type: string
description: A unique identifier for the version.
object:
type: string
const: version
description: Fixed value identifying this object as a version.
status:
type: string
enum:
- pending
- completed
- failed
description: The current status of the version generation process.
demoUrl:
description: Optional URL for previewing the generated output.
type: string
screenshotUrl:
type: string
description: URL to retrieve a screenshot of this version.
createdAt:
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: The date and time when the version was created, in ISO 8601 format.
updatedAt:
description: The date and time when the version was last updated, in ISO 8601 format.
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))$
required:
- id
- object
- status
- createdAt
additionalProperties: false
required:
- id
- object
- shareable
- privacy
- createdAt
- favorite
- authorId
- webUrl
- apiUrl
additionalProperties: false
description: Summary of a chat, including metadata like privacy, author, latest version, and URLs.
description: List of all chats that are associated with this project.
required:
- id
- object
- name
- privacy
- createdAt
- apiUrl
- webUrl
- chats
additionalProperties: false
description: Full representation of a project, including its associated chats.
'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'
parameters:
- name: chatId
in: path
required: true
schema:
type: string
description: The ID of the chat to retrieve the associated project for.
security:
- apiKey: []
/projects:
get:
summary: Find Projects
description: Returns a list of all v0 projects in your workspace. Useful for browsing or managing projects across different chats or use cases.
operationId: projects.find
tags:
- projects
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
object:
type: string
const: list
data:
type: array
items:
$ref: '#/components/schemas/ProjectSummary'
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 Project
description: Creates a new v0 project with an optional description, icon, environment variables, and instructions. Projects help organize chats and manage context.
operationId: projects.create
tags:
- projects
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 255
description: The name of the project.
description:
description: A brief summary of the project’s purpose.
type: string
maxLength: 1000
icon:
default: icon-wand-sparkles
description: An icon identifier to visually represent the project.
type: string
environmentVariables:
description: A list of key-value pairs used to define runtime variables for the project.
type: array
items:
type: object
properties:
key:
type: string
maxLength: 255
value:
type: string
maxLength: 1000
required:
- key
- value
additionalProperties: false
instructions:
description: Guidance or goals that provide context for the model when working within the project.
type: string
maxLength: 2000
vercelProjectId:
description: The ID of an existing Vercel project to link to. If not provided, a new Vercel project will be created.
type: string
privacy:
description: The privacy setting for the project. For user accounts, this is always "private". For team/enterprise accounts, this can be either "private" or "team".
type: string
enum:
- private
- team
required:
- name
additionalProperties: false
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: A unique identifier for the project.
object:
type: string
const: project
description: Fixed value identifying this object as a project.
name:
type: string
description: The name of the project as defined by the user.
privacy:
type: string
enum:
- private
- team
description: The privacy setting for the project - either private or team.
vercelProjectId:
description: Optional ID of the linked Vercel project, if connected.
type: string
createdAt:
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: The ISO timestamp representing when the project was created.
updatedAt:
description: The ISO timestamp of the most recent update, if available.
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))$
apiUrl:
type: string
format: uri
description: The API endpoint URL for accessing this project programmatically.
webUrl:
type: string
format: uri
description: The web URL where the project can be viewed or managed.
description:
description: The description of the project.
type: string
instructions:
description: The instructions for the project.
type: string
chats:
type: array
items:
type: object
properties:
id:
type: string
description: A unique identifier for the chat.
object:
type: string
const: chat
description: Fixed value identifying this object as a chat.
shareable:
type: boolean
description: Indicates whether the chat can be shared via public link.
privacy:
type: string
enum:
- public
- private
- team
- team-edit
- unlisted
description: Defines the visibility of the chat—private, team-only, or public.
name:
description: An optional name assigned to the chat by the user.
type: string
title:
type: string
description: Deprecated title field preserved for backward compatibility.
deprecated: true
createdAt:
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: The ISO timestamp representing when the chat was created.
updatedAt:
description: The ISO timestamp of the last update to the chat.
type: string
favorite:
type: boolean
description: Indicates whether the chat is marked as a favorite.
authorId:
type: string
description: The ID of the user who created the chat.
projectId:
description: Optional ID of the v0 project associated with this chat.
type: string
vercelProjectId:
description: Optional ID of the linked Vercel project, if connected.
type: string
webUrl:
type: string
description: Web URL to view this chat in the browser.
apiUrl:
type: string
description: API URL to access this chat via the API.
latestVersion:
description: The most recent generated version of the chat, if available.
type: object
properties:
id:
type: string
description: A unique identifier for the version.
object:
type: string
const: version
description: Fixed value identifying this object as a version.
status:
type: string
enum:
- pending
- completed
- failed
description: The current status of the version generation process.
demoUrl:
description: Optional URL for previewing the generated output.
type: string
screenshotUrl:
type: string
description: URL to retrieve a screenshot of this version.
createdAt:
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: The date and time when the version was created, in ISO 8601 format.
updatedAt:
description: The date and time when the version was last updated, in ISO 8601 format.
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))$
required:
- id
- object
- status
- createdAt
additionalProperties: false
required:
- id
- object
- shareable
- privacy
- createdAt
- favorite
- authorId
- webUrl
- apiUrl
additionalProperties: false
description: Summary of a chat, including metadata like privacy, author, latest version, and URLs.
description: List of all chats that are associated with this project.
required:
- id
- object
- name
- privacy
- createdAt
- apiUrl
- webUrl
- chats
additionalProperties: false
description: Full representation of a project, including its associated chats.
'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: []
/projects/{projectId}:
get:
summary: Get Project by ID
description: Retrieves the details of a specific v0 project by its ID.
operationId: projects.getById
tags:
- projects
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: A unique identifier for the project.
object:
type: string
const: project
description: Fixed value identifying this object as a project.
name:
type: string
description: The name of the project as defined by the user.
privacy:
type: string
enum:
- private
- team
description: The privacy setting for the project - either private or team.
vercelProjectId:
description: Optional ID of the linked Vercel project, if connected.
type: string
createdAt:
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: The ISO timestamp representing when the project was created.
updatedAt:
description: The ISO timestamp of the most recent update, if available.
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))$
apiUrl:
type: string
format: uri
description: The API endpoint URL for accessing this project programmatically.
webUrl:
type: string
format: uri
description: The web URL where the project can be viewed or managed.
description:
description: The description of the project.
type: string
instructions:
description: The instructions for the project.
type: string
chats:
type: array
items:
type: object
properties:
id:
type: string
description: A unique identifier for the chat.
object:
type: string
const: chat
description: Fixed value identifying this object as a chat.
shareable:
type: boolean
description: Indicates whether the chat can be shared via public link.
privacy:
type: string
enum:
- public
- private
- team
- team-edit
- unlisted
description: Defines the visibility of the chat—private, team-only, or public.
name:
description: An optional name assigned to the chat by the user.
type: string
title:
type: string
description: Deprecated title field preserved for backward compatibility.
deprecated: true
createdAt:
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: The ISO timestamp representing when the chat was created.
updatedAt:
description: The ISO timestamp of the last update to the chat.
type: string
favorite:
type: boolean
description: Indicates whether the chat is marked as a favorite.
authorId:
type: string
description: The ID of the user who created the chat.
projectId:
description: Optional ID of the v0 project associated with this chat.
type: string
vercelProjectId:
description: Optional ID of the linked Vercel project, if connected.
type: string
webUrl:
type: string
description: Web URL to view this chat in the browser.
apiUrl:
type: string
description:
# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/v0/refs/heads/main/openapi/v0-projects-api-openapi.yml