v0-sdk
Version:
TypeScript SDK for the v0 Platform API
283 lines (204 loc) • 5.93 kB
Markdown
# v0-sdk
> **⚠️ Developer Preview**: This SDK is currently in beta and is subject to change. Use in production at your own risk.
A TypeScript SDK for interacting with the v0 Platform API to create and manage AI-powered chat conversations, projects, integrations, and more.
## Installation
```bash
npm install v0-sdk
# or
yarn add v0-sdk
# or
pnpm add v0-sdk
```
## Quick Start
Get your API key from [v0.dev/chat/settings/keys](https://v0.dev/chat/settings/keys).
Set `V0_API_KEY` environment variable.
### Create Chat and Generate Code
```typescript
import { v0 } from 'v0-sdk'
// Create a new chat
const chat = await v0.chats.create({
message: 'Create a responsive navbar with Tailwind CSS',
system: 'You are an expert React developer',
})
console.log(`Chat created: ${chat.webUrl}`)
// Preview generated code
console.log(`Preview URL: ${chat.latestVersion?.demoUrl}`)
// Use in your application
const previewHtml = `<iframe src="${chat.latestVersion?.demoUrl}" width="100%" height="600px"></iframe>`
```
## Features
- Full TypeScript support with complete type definitions
- Chat management - Create, manage, and interact with AI chats
- Project operations - Create and manage v0 projects
- Vercel integrations - Seamless Vercel project integration
- User management - Access user information and billing
- Deployment logs - Monitor and retrieve deployment information
- Comprehensive testing - Extensive test coverage for all functions
- Error handling - Robust error handling with detailed error types
## Configuration
The SDK supports two ways to create a client:
### Default Client
Use the default client with environment variables:
```typescript
import { v0 } from 'v0-sdk'
// Uses V0_API_KEY environment variable
const chat = await v0.chats.create({
message: 'Create a responsive navbar with Tailwind CSS',
})
```
### Custom Client
Create a custom client with specific configuration:
```typescript
import { createClient } from 'v0-sdk'
// Create client with custom API key
const v0 = createClient({
apiKey: process.env.V0_API_KEY_FOR_MY_ORG,
})
// Use the custom client
const chat = await v0.chats.create({
message: 'Create a login form',
})
```
## API Reference
### Chat Operations
#### Create a Chat
Create a new chat conversation with the AI.
```typescript
const result = await v0.chats.create({
message: 'Create a login form with validation',
system: 'You are an expert in React and form validation',
chatPrivacy: 'private',
attachments: [{ url: 'https://example.com/design.png' }],
modelConfiguration: {
modelId: 'v0-1.5-md',
imageGenerations: false,
},
})
```
#### Streaming Chat Creation
Create a chat with streaming response for real-time output:
```typescript
import { parseStreamingResponse } from 'v0-sdk'
const stream = await v0.chats.create({
message: 'Create a React button component',
responseMode: 'experimental_stream',
})
// Parse the streaming response
for await (const event of parseStreamingResponse(stream)) {
if (event.event === 'message') {
console.log('Received chunk:', event.data)
}
}
```
#### Get Chat by ID
```typescript
const chat = await v0.chats.getById({ chatId: 'chat_id' })
```
#### Add Messages to Chat
```typescript
const response = await v0.chats.sendMessage({
chatId: 'chat_id',
message: 'Add password strength indicator',
})
```
#### Other Chat Operations
- `v0.chats.find()` - Get chat history
- `v0.chats.delete({ chatId })` - Delete a chat
- `v0.chats.favorite({ chatId })` - Favorite a chat
- `v0.chats.unfavorite({ chatId })` - Unfavorite a chat
- `v0.projects.getByChatId({ chatId })` - Get chat's associated project
### Project Operations
```typescript
// Create a project
const project = await v0.projects.create({
name: 'My New Project',
description: 'A sample project',
})
// Find projects
const projects = await v0.projects.find()
```
### Vercel Integration
```typescript
// Create Vercel integration project
const integration = await v0.integrations.vercel.projects.create({
projectId: 'vercel_project_id',
name: 'project_name',
})
// Find Vercel projects
const projects = await v0.integrations.vercel.projects.find()
```
### User Management
```typescript
// Get user information
const userResponse = await v0.user.get()
// Get user plan and billing
const planResponse = await v0.user.getPlan()
// Get user scopes
const scopesResponse = await v0.user.getScopes()
```
### Other Operations
```typescript
// Find deployment logs
const logs = await v0.deployments.findLogs({ deploymentId: 'deployment_id' })
// Check rate limits
const rateLimits = await v0.rateLimits.find()
```
## TypeScript Support
The SDK includes complete type definitions for all API operations:
```typescript
import type {
ChatsCreateRequest,
ChatsCreateResponse,
UserDetail,
ProjectDetail,
V0ClientConfig,
} from 'v0-sdk'
// Type-safe client configuration
const config: V0ClientConfig = {
apiKey: 'your_api_key',
baseUrl: 'https://api.v0.dev/v1', // optional
}
const v0 = createClient(config)
```
## Error Handling
The SDK provides detailed error information:
```typescript
try {
const chat = await v0.chats.create({
message: 'Create a component',
})
} catch (error) {
if (error.status === 403) {
console.error('Authentication error:', error.message)
} else if (error.status === 429) {
console.error('Rate limit exceeded:', error.message)
}
}
```
## Testing
The SDK includes comprehensive test coverage. Run tests with:
```bash
pnpm test
```
## Development
### Building
```bash
pnpm build
```
### Generating SDK
The SDK is generated from the OpenAPI specification:
```bash
pnpm sdk:generate
```
### Running Tests
```bash
# Run tests once (CI mode)
pnpm test
# Run tests in watch mode
pnpm test:watch
```
## Resources
- [v0 Documentation](https://v0.dev/docs)
- [API Terms](https://vercel.com/legal/api-terms)
## License
Apache 2.0