### Install project dependencies
Source: https://docs.typebot.com/contribute/guides/local-installation
Navigate to the project directory and install required packages using Bun.
```sh
cd typebot.io
bun install
```
--------------------------------
### Start builder and viewer
Source: https://docs.typebot.com/contribute/guides/local-installation
Run the main application services for the builder and viewer.
```sh
bun dev
```
--------------------------------
### Start the Typebot server
Source: https://docs.typebot.com/self-hosting/deploy/docker
Start the Typebot services in detached mode using Docker Compose.
```sh
docker-compose up -d
```
--------------------------------
### Start development database
Source: https://docs.typebot.com/contribute/guides/local-installation
Launch the database and MinIO instance using Docker Compose.
```sh
docker compose -f docker-compose.dev.yml up -d
```
--------------------------------
### Configure environment variables
Source: https://docs.typebot.com/self-hosting/deploy/manual
Creates the .env file from the provided example template.
```sh
cp .env.example .env
```
--------------------------------
### Install Typebot React package
Source: https://docs.typebot.com/deploy/web/next-js
Install the required dependency via npm.
```bash
npm install @typebot.io/react
```
--------------------------------
### Run additional applications
Source: https://docs.typebot.com/contribute/guides/local-installation
Commands to start the landing page or documentation site locally.
```sh
bunx nx dev landing-page
```
```sh
bunx nx dev docs
```
--------------------------------
### Deploy the builder
Source: https://docs.typebot.com/self-hosting/deploy/manual
Starts the builder application process using PM2 on port 3000.
```sh
pm2 start bunx --name=typebot-builder -- nx start builder -- -p 3000
```
--------------------------------
### Deploy the viewer
Source: https://docs.typebot.com/self-hosting/deploy/manual
Starts the viewer application process using PM2 on port 3001.
```sh
pm2 start bunx --name=typebot-viewer -- nx start viewer -- -p 3001
```
--------------------------------
### Run documentation in development mode
Source: https://docs.typebot.com/contribute/guides/documentation
Navigate to the documentation directory and start the development server to preview changes in real time.
```sh
cd apps/docs
bun dev
```
--------------------------------
### GET /v1/billing/usage
Source: https://docs.typebot.com/api-reference/billing/get-usage
Retrieves the current plan usage statistics for a given workspace.
```APIDOC
## GET /v1/billing/usage
### Description
Get current plan usage for a specific workspace.
### Method
GET
### Endpoint
/v1/billing/usage
### Parameters
#### Query Parameters
- **workspaceId** (string) - Required - The ID of the workspace to retrieve usage for.
### Response
#### Success Response (200)
- **totalChatsUsed** (number) - The total number of chats used.
- **resetsAt** (string) - The date and time when the usage resets.
#### Response Example
{
"totalChatsUsed": 150,
"resetsAt": "2023-11-01T00:00:00Z"
}
```
--------------------------------
### Initialize Typebot with multiple button triggers
Source: https://docs.typebot.com/deploy/web/webflow
Full script example showing Typebot initialization and multiple event listeners for different button IDs.
```html
```
--------------------------------
### POST /api/v1/typebots//preview/startChat
Source: https://docs.typebot.com/deploy/api/overview
Starts a preview chat session for a specific typebot. Returns a sessionId required for subsequent interactions.
```APIDOC
## POST /api/v1/typebots//preview/startChat
### Description
Starts a preview chat session for a specific typebot. The response includes a sessionId used for continuing the chat.
### Method
POST
### Endpoint
https://typebot.io/api/v1/typebots//preview/startChat
### Parameters
#### Path Parameters
- **typebot ID** (string) - Required - The unique identifier of the typebot.
```
--------------------------------
### Redirect URL with UTM parameters
Source: https://docs.typebot.com/guides/utm-in-results
Example of a redirect URL structure using captured UTM variables.
```text
https://redirect-site.com?utm_source={{utm_source}}&utm_value={{utm_value}}
```
--------------------------------
### POST /api/v1/typebots//startChat
Source: https://docs.typebot.com/deploy/api/overview
Starts a live chat session for a specific typebot. Returns a sessionId required for subsequent interactions.
```APIDOC
## POST /api/v1/typebots//startChat
### Description
Starts a live chat session for a specific typebot. The response includes a sessionId used for continuing the chat.
### Method
POST
### Endpoint
https://typebot.io/api/v1/typebots//startChat
### Parameters
#### Path Parameters
- **public ID** (string) - Required - The public identifier of the typebot.
```
--------------------------------
### Start a chat session via HTTP API
Source: https://docs.typebot.com/guides/external-messaging-apps
Use this request to initialize a new conversation when no session ID exists for a user.
```sh
curl -X POST https://typebot.co/api/v1/typebots//startChat \
-H "Content-Type: application/json" \
-d '{}'
```
--------------------------------
### GET /v1/typebots/{typebotId}/analytics/stats
Source: https://docs.typebot.com/api-reference/analytics/get-stats
Retrieves the analytics statistics for a specific typebot, including total views, starts, and completions.
```APIDOC
## GET /v1/typebots/{typebotId}/analytics/stats
### Description
Retrieves the analytics statistics for a specific typebot, including total views, starts, and completions.
### Method
GET
### Endpoint
/v1/typebots/{typebotId}/analytics/stats
### Parameters
#### Path Parameters
- **typebotId** (string) - Required - The unique identifier of the typebot.
#### Query Parameters
- **timeFilter** (string) - Optional - Filter stats by time range (today, last7Days, last30Days, monthToDate, lastMonth, yearToDate, allTime). Default: last7Days.
- **timeZone** (string) - Optional - The timezone to use for the statistics.
### Response
#### Success Response (200)
- **stats** (object) - The analytics statistics object.
- **totalViews** (number) - Total number of views.
- **totalStarts** (number) - Total number of starts.
- **totalCompleted** (number) - Total number of completions.
```
--------------------------------
### OpenAPI definition for Get workspace
Source: https://docs.typebot.com/api-reference/workspace/get
Defines the GET endpoint for retrieving a workspace by its ID, including the full response object structure.
```yaml
openapi: 3.1.1
info:
title: Builder API
version: 1.0.0
servers:
- url: https://app.typebot.com/api
security: []
externalDocs:
url: https://docs.typebot.com/api-reference
paths:
/v1/workspaces/{workspaceId}:
get:
tags:
- Workspace
summary: Get workspace
operationId: workspace-getWorkspace
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
description: >-
[Where to find my workspace
ID?](../how-to#how-to-find-my-workspaceid)
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
workspace:
type: object
properties:
id:
type: string
createdAt:
type: string
format: date-time
x-native-type: date
updatedAt:
type: string
format: date-time
x-native-type: date
name:
type: string
icon:
anyOf:
- type: string
- type: 'null'
plan:
enum:
- FREE
- STARTER
- PRO
- LIFETIME
- OFFERED
- CUSTOM
- UNLIMITED
- ENTERPRISE
type: string
stripeId:
anyOf:
- type: string
- type: 'null'
settings:
anyOf:
- type: object
- type: 'null'
customChatsLimit:
anyOf:
- type: number
- type: 'null'
customSeatsLimit:
anyOf:
- type: number
- type: 'null'
isSuspended:
type: boolean
isPastDue:
type: boolean
isVerified:
anyOf:
- type: boolean
- type: 'null'
chatsHardLimit:
anyOf:
- type: number
- type: 'null'
lastActivityAt:
anyOf:
- type: string
format: date-time
x-native-type: date
- type: 'null'
inactiveFirstEmailSentAt:
anyOf:
- type: string
format: date-time
x-native-type: date
- type: 'null'
inactiveSecondEmailSentAt:
anyOf:
- type: string
format: date-time
x-native-type: date
- type: 'null'
required:
- id
- createdAt
- updatedAt
- name
- icon
- plan
- stripeId
- settings
- customChatsLimit
- customSeatsLimit
- isSuspended
- isPastDue
- isVerified
- chatsHardLimit
- lastActivityAt
- inactiveFirstEmailSentAt
- inactiveSecondEmailSentAt
currentUserMode:
enum:
- read
- write
- guest
type: string
required:
- workspace
- currentUserMode
'400':
description: '400'
content:
application/json:
schema:
oneOf:
- type: object
properties:
```
--------------------------------
### OpenAPI Specification for Get Current Usage
Source: https://docs.typebot.com/api-reference/billing/get-usage
Defines the GET /v1/billing/usage endpoint, including required parameters and potential response schemas.
```yaml
openapi: 3.1.1
info:
title: Builder API
version: 1.0.0
servers:
- url: https://app.typebot.com/api
security: []
externalDocs:
url: https://docs.typebot.com/api-reference
paths:
/v1/billing/usage:
get:
tags:
- Billing
summary: Get current plan usage
operationId: billing-getUsage
parameters:
- name: workspaceId
in: query
required: true
schema:
type: string
description: >-
[Where to find my workspace
ID?](../how-to#how-to-find-my-workspaceid)
allowEmptyValue: true
allowReserved: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
totalChatsUsed:
type: number
resetsAt:
type: string
format: date-time
x-native-type: date
required:
- totalChatsUsed
- resetsAt
'400':
description: '400'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: BAD_REQUEST
status:
const: 400
message:
type: string
default: Bad Request
data: {}
required:
- defined
- code
- status
- message
- type: object
properties:
defined:
const: false
code:
type: string
status:
type: number
message:
type: string
data: {}
required:
- defined
- code
- status
- message
'401':
description: '401'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: UNAUTHORIZED
status:
const: 401
message:
type: string
default: Unauthorized
data: {}
required:
- defined
- code
- status
- message
- type: object
properties:
defined:
const: false
code:
type: string
status:
type: number
message:
type: string
data: {}
required:
- defined
- code
- status
- message
'403':
description: '403'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: FORBIDDEN
status:
const: 403
message:
type: string
default: Forbidden
data: {}
required:
- defined
- code
- status
- message
- type: object
properties:
defined:
const: false
code:
type: string
status:
type: number
message:
type: string
data: {}
required:
- defined
- code
```
--------------------------------
### Get result by ID OpenAPI definition
Source: https://docs.typebot.com/api-reference/results/get
Defines the GET endpoint for retrieving a result, including path parameters and the expected JSON response schema.
```yaml
openapi: 3.1.1
info:
title: Builder API
version: 1.0.0
servers:
- url: https://app.typebot.com/api
security: []
externalDocs:
url: https://docs.typebot.com/api-reference
paths:
/v1/typebots/{typebotId}/results/{resultId}:
get:
tags:
- Results
summary: Get result by id
operationId: results-getResult
parameters:
- name: typebotId
in: path
required: true
schema:
type: string
description: '[Where to find my bot''s ID?](../how-to#how-to-find-my-typebotid)'
- name: resultId
in: path
required: true
schema:
type: string
description: >-
The `resultId` is returned by the /startChat endpoint or you can
find it by listing results with `/results` endpoint
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
result:
type: object
properties:
id:
type: string
createdAt:
type: string
format: date-time
x-native-type: date
typebotId:
type: string
variables:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
isSessionVariable:
type: boolean
value:
anyOf:
- type: string
- type: array
items:
anyOf:
- type: string
- type: 'null'
required:
- id
- name
- value
isCompleted:
type: boolean
hasStarted:
anyOf:
- type: boolean
- type: 'null'
isArchived:
anyOf:
- type: boolean
- type: 'null'
lastChatSessionId:
anyOf:
- type: string
- type: 'null'
answers:
type: array
items:
type: object
properties:
blockId:
type: string
content:
type: string
attachedFileUrls:
type: array
items:
type: string
required:
- blockId
- content
required:
- id
- createdAt
- typebotId
- variables
- isCompleted
- hasStarted
- isArchived
- lastChatSessionId
- answers
required:
- result
'400':
description: '400'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: BAD_REQUEST
status:
const: 400
message:
type: string
default: Bad Request
data: {}
required:
- defined
- code
- status
- message
- type: object
properties:
defined:
const: false
code:
```
--------------------------------
### Clone the repository
Source: https://docs.typebot.com/self-hosting/deploy/manual
Initializes the local environment by cloning the repository and checking out the latest stable version.
```sh
git clone git@github.com:/typebot.io.git
cd typebot.io
git checkout latest
```
--------------------------------
### Get results stats OpenAPI definition
Source: https://docs.typebot.com/api-reference/analytics/get-stats
Defines the GET /v1/typebots/{typebotId}/analytics/stats endpoint, including query parameters for time filtering and timezone, and the expected JSON response structure.
```yaml
openapi: 3.1.1
info:
title: Builder API
version: 1.0.0
servers:
- url: https://app.typebot.com/api
security: []
externalDocs:
url: https://docs.typebot.com/api-reference
paths:
/v1/typebots/{typebotId}/analytics/stats:
get:
tags:
- Analytics
summary: Get results stats
operationId: analytics-getStats
parameters:
- name: typebotId
in: path
required: true
schema:
type: string
- name: timeFilter
in: query
required: false
schema:
enum:
- today
- last7Days
- last30Days
- monthToDate
- lastMonth
- yearToDate
- allTime
type: string
default: last7Days
allowEmptyValue: true
allowReserved: true
- name: timeZone
in: query
required: false
schema:
type: string
allowEmptyValue: true
allowReserved: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
stats:
type: object
properties:
totalViews:
type: number
totalStarts:
type: number
totalCompleted:
type: number
required:
- totalViews
- totalStarts
- totalCompleted
required:
- stats
'400':
description: '400'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: BAD_REQUEST
status:
const: 400
message:
type: string
default: Bad Request
data: {}
required:
- defined
- code
- status
- message
- type: object
properties:
defined:
const: false
code:
type: string
status:
type: number
message:
type: string
data: {}
required:
- defined
- code
- status
- message
'401':
description: '401'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: UNAUTHORIZED
status:
const: 401
message:
type: string
default: Unauthorized
data: {}
required:
- defined
- code
- status
- message
- type: object
properties:
defined:
const: false
code:
type: string
status:
type: number
message:
type: string
data: {}
required:
- defined
- code
- status
- message
'403':
description: '403'
content:
application/json:
schema:
oneOf:
- type: object
properties:
defined:
const: true
code:
const: FORBIDDEN
status:
const: 403
message:
type: string
default: Forbidden
```
--------------------------------
### GET /v1/workspaces
Source: https://docs.typebot.com/api-reference/workspace/list
Retrieves a list of all workspaces available to the user.
```APIDOC
## GET /v1/workspaces
### Description
Retrieves a list of all workspaces associated with the authenticated user.
### Method
GET
### Endpoint
/v1/workspaces
### Response
#### Success Response (200)
- **workspaces** (array) - A list of workspace objects.
- **id** (string) - The unique identifier of the workspace.
- **name** (string) - The name of the workspace.
- **icon** (string|null) - The icon associated with the workspace.
- **plan** (string) - The subscription plan of the workspace (FREE, STARTER, PRO, LIFETIME, OFFERED, CUSTOM, UNLIMITED, ENTERPRISE).
```
--------------------------------
### Download Docker Compose files
Source: https://docs.typebot.com/self-hosting/deploy/docker
Download the latest docker-compose.yml and the starter .env file to your server.
```sh
wget https://raw.githubusercontent.com/baptisteArno/typebot.io/latest/docker-compose.yml
wget https://raw.githubusercontent.com/baptisteArno/typebot.io/latest/.env.example -O .env
```
--------------------------------
### Build builder and viewer
Source: https://docs.typebot.com/self-hosting/deploy/manual
Compiles the builder and viewer applications using Nx.
```sh
bunx nx run-many -t build -p builder,viewer
```
--------------------------------
### GET /v1/workspaces/{workspaceId}/members
Source: https://docs.typebot.com/api-reference/workspace/list-members
Retrieves a list of members in a specified workspace.
```APIDOC
## GET /v1/workspaces/{workspaceId}/members
### Description
List all members currently associated with the specified workspace.
### Method
GET
### Endpoint
/v1/workspaces/{workspaceId}/members
### Parameters
#### Path Parameters
- **workspaceId** (string) - Required - The unique identifier of the workspace.
### Response
#### Success Response (200)
- **members** (array) - A list of workspace members.
- **workspaceId** (string) - The ID of the workspace.
- **userId** (string) - The ID of the user.
- **user** (object) - User details including name, email, and image.
- **role** (string) - The role of the user (ADMIN, MEMBER, GUEST).
```
--------------------------------
### Run database migrations
Source: https://docs.typebot.com/self-hosting/deploy/manual
Executes Prisma database migrations using the Nx CLI.
```sh
bunx nx db:migrate prisma
```
--------------------------------
### GET /v1/billing/invoices
Source: https://docs.typebot.com/api-reference/billing/list-invoices
Retrieves a list of invoices associated with a specific workspace ID.
```APIDOC
## GET /v1/billing/invoices
### Description
Retrieves a list of invoices for the specified workspace.
### Method
GET
### Endpoint
/v1/billing/invoices
### Parameters
#### Query Parameters
- **workspaceId** (string) - Required - The ID of the workspace to fetch invoices for.
### Response
#### Success Response (200)
- **invoices** (array) - A list of invoice objects.
- **id** (string) - The invoice ID.
- **url** (string) - The URL to the invoice.
- **amount** (number) - The invoice amount.
- **currency** (string) - The currency code.
- **date** (number|null) - The date of the invoice.
```
--------------------------------
### Configure MinIO for S3 Storage
Source: https://docs.typebot.com/self-hosting/deploy/docker
Deploy a local MinIO instance and an initialization container to create the required storage bucket. Update the .env file with your specific access credentials and endpoint.
```yaml
services:
minio:
image: minio/minio
command: server /data
ports:
- "9000:9000"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
volumes:
- s3-data:/data
# This service just makes sure a bucket with the right policies is created
createbuckets:
image: minio/mc
depends_on:
- minio
entrypoint: >
/bin/sh -c "
sleep 10;
/usr/bin/mc alias set minio http://minio:9000 minio minio123;
/usr/bin/mc mb --ignore-existing minio/typebot;
/usr/bin/mc anonymous set public minio/typebot/public;
exit 0;
"
volumes:
s3-data:
```
```text
S3_ACCESS_KEY=minio
S3_SECRET_KEY=minio123
S3_BUCKET=typebot
S3_ENDPOINT=storage.domain.com
```
```text
storage IN A
```
--------------------------------
### LoomVideo Usage
Source: https://docs.typebot.com/contribute/the-forge/cli
Example of how to invoke the LoomVideo component with a specific video ID.
```jsx
```
--------------------------------
### option.string.meta
Source: https://docs.typebot.com/contribute/the-forge/options
Configures metadata and layout for a string input option.
```APIDOC
## option.string.meta
### Description
Configures the layout and metadata for a string input field, including labels, placeholders, and variable button visibility.
### Usage
```ts
option.string.meta({ layout: { label: 'Name', placeholder: 'Type a name...', withVariableButton: false } })
```
```
--------------------------------
### Typebot.initPopup
Source: https://docs.typebot.com/deploy/web/html-javascript
Initializes a popup chat window on the page using the provided configuration object.
```APIDOC
## Typebot.initPopup(props: PopupProps)
### Description
Initializes and displays a Typebot popup window on the current page. The popup can be configured with various settings including auto-show delays, theme customization, and event callbacks.
### Parameters
- **props** (PopupProps) - Required - Configuration object for the popup.
### PopupProps Configuration
- **typebot** (string | any) - Required - The identifier of the typebot to load.
- **autoShowDelay** (number) - Optional - Delay in milliseconds before automatically showing the popup.
- **theme** (object) - Optional - Customization for the chat window, button, and placement.
- **onInit** (function) - Optional - Callback triggered when the popup is initialized.
- **onOpen** (function) - Optional - Callback triggered when the popup is opened.
- **onClose** (function) - Optional - Callback triggered when the popup is closed.
- **onAnswer** (function) - Optional - Callback triggered when a user provides an answer.
### Example
```javascript
import Typebot from "https://cdn.jsdelivr.net/npm/@typebot.io/js@0/dist/web.js";
Typebot.initPopup({
typebot: "my-typebot",
autoShowDelay: 3000,
});
```
```
--------------------------------
### Build custom Docker images
Source: https://docs.typebot.com/self-hosting/deploy/docker
Commands to build the builder and viewer images using specific build arguments.
```sh
docker build -t typebot-builder --build-arg SCOPE=builder .
```
```sh
docker build -t typebot-viewer --build-arg SCOPE=viewer .
```
--------------------------------
### GET /v1/workspaces/{workspaceId}
Source: https://docs.typebot.com/api-reference/workspace/get
Retrieves the details of a specific workspace using its unique ID.
```APIDOC
## GET /v1/workspaces/{workspaceId}
### Description
Retrieves the details of a specific workspace using its unique ID.
### Method
GET
### Endpoint
/v1/workspaces/{workspaceId}
### Parameters
#### Path Parameters
- **workspaceId** (string) - Required - The unique identifier of the workspace.
### Response
#### Success Response (200)
- **workspace** (object) - The workspace object containing details like id, createdAt, updatedAt, name, icon, plan, stripeId, settings, customChatsLimit, customSeatsLimit, isSuspended, isPastDue, isVerified, chatsHardLimit, lastActivityAt, inactiveFirstEmailSentAt, and inactiveSecondEmailSentAt.
- **currentUserMode** (string) - The access mode of the current user (read, write, or guest).
```
--------------------------------
### Build command for Typebot viewer
Source: https://docs.typebot.com/self-hosting/deploy/vercel
Use this command when configuring the build settings for the viewer project on Vercel.
```sh
bunx nx build viewer && bunx nx db:migrate prisma
```
--------------------------------
### GET /v1/folders/{folderId}
Source: https://docs.typebot.com/api-reference/folder/get
Retrieves the details of a specific folder identified by the provided folderId.
```APIDOC
## GET /v1/folders/{folderId}
### Description
Retrieves the details of a specific folder identified by the provided folderId.
### Method
GET
### Endpoint
/v1/folders/{folderId}
### Parameters
#### Path Parameters
- **folderId** (string) - Required - The unique identifier of the folder.
#### Query Parameters
- **workspaceId** (string) - Required - The unique identifier of the workspace.
### Response
#### Success Response (200)
- **folder** (object) - The folder object containing id, createdAt, updatedAt, name, parentFolderId, and workspaceId.
```
--------------------------------
### Typebot.initStandard
Source: https://docs.typebot.com/deploy/web/html-javascript
Initializes the Typebot with specific configuration and event callbacks.
```APIDOC
## Typebot.initStandard
### Description
Initializes the Typebot instance and registers callback functions to handle events on the parent website.
### Parameters
- **typebot** (string) - Required - The identifier of the typebot.
- **onNewInputBlock** (function) - Optional - Callback triggered when a new input block is displayed.
- **onAnswer** (function) - Optional - Callback triggered when an answer is received.
- **onInit** (function) - Optional - Callback triggered when the bot is initialized.
- **onEnd** (function) - Optional - Callback triggered when the bot interaction ends.
```
--------------------------------
### Embed Call-to-Action Components
Source: https://docs.typebot.com/contribute/guides/blog
Usage examples for the Cta component to redirect users to Typebot.
```tsx
// Displays a CTA with default text content
// Displays a minimalist CTA with just a logo and the CTA button
```
--------------------------------
### Initialize Typebot with Callbacks
Source: https://docs.typebot.com/deploy/web/html-javascript
Configures a Typebot instance with event listeners for input blocks, answers, initialization, and completion.
```js
Typebot.initStandard({
typebot: "my-typebot",
onNewInputBlock: (inputBlock) => {
console.log("New input block displayed", inputBlock.id);
},
onAnswer: (answer) => {
console.log("Answer received", answer.message, answer.blockId);
},
onInit: () => {
console.log("Bot initialized");
},
onEnd: () => {
console.log("Bot ended");
},
});
```
--------------------------------
### Define MDX Frontmatter
Source: https://docs.typebot.com/contribute/guides/blog
Required frontmatter block at the start of every blog post file.
```md
---
title: 'My awesome blog post'
description: 'A short summary of the blog post.'
postedAt: '2023-11-19'
author: ''
---
```
--------------------------------
### GET /v1/folders
Source: https://docs.typebot.com/api-reference/folder/list
Retrieves a list of folders associated with a workspace. Supports filtering by parent folder.
```APIDOC
## GET /v1/folders
### Description
List all folders within a specified workspace. You can optionally filter the results by providing a parent folder ID.
### Method
GET
### Endpoint
/v1/folders
### Parameters
#### Query Parameters
- **workspaceId** (string) - Required - The ID of the workspace to list folders from.
- **parentFolderId** (string) - Optional - The ID of the parent folder to filter by.
### Response
#### Success Response (200)
- **folders** (array) - A list of folder objects.
- **id** (string) - The folder ID.
- **name** (string) - The folder name.
- **createdAt** (string) - The timestamp when the folder was created.
```
--------------------------------
### Initialize a new block with Forge CLI
Source: https://docs.typebot.com/contribute/guides/create-block
Generates the necessary file structure for a new block in the packages/forge/blocks directory.
```sh
bun create-new-block
```
--------------------------------
### GET /v1/typebots/{typebotId}/results/{resultId}
Source: https://docs.typebot.com/api-reference/results/get
Retrieves the details of a specific result associated with a given Typebot.
```APIDOC
## GET /v1/typebots/{typebotId}/results/{resultId}
### Description
Retrieves the details of a specific result by its ID for a given Typebot.
### Method
GET
### Endpoint
/v1/typebots/{typebotId}/results/{resultId}
### Parameters
#### Path Parameters
- **typebotId** (string) - Required - The ID of the typebot.
- **resultId** (string) - Required - The ID of the result to retrieve.
### Response
#### Success Response (200)
- **result** (object) - The result object containing details such as id, createdAt, typebotId, variables, isCompleted, hasStarted, isArchived, lastChatSessionId, and answers.
```
--------------------------------
### POST /v1/folders
Source: https://docs.typebot.com/api-reference/folder/create
Creates a new folder in the specified workspace.
```APIDOC
## POST /v1/folders
### Description
Create a new folder within a workspace.
### Method
POST
### Endpoint
/v1/folders
### Parameters
#### Request Body
- **workspaceId** (string) - Required - The ID of the workspace where the folder will be created.
- **id** (string) - Optional - The unique identifier for the folder (pattern: ^[0-9a-z]+$).
- **folderName** (string) - Optional - The name of the folder.
- **parentFolderId** (string) - Optional - The ID of the parent folder if nesting is required.
### Response
#### Success Response (200)
- **folder** (object) - The created folder object containing id, createdAt, updatedAt, name, parentFolderId, and workspaceId.
```
--------------------------------
### GET /v1/typebots
Source: https://docs.typebot.com/api-reference/typebot/list
Retrieves a list of typebots associated with a specific workspace, optionally filtered by a folder ID.
```APIDOC
## GET /v1/typebots
### Description
List all typebots available in a specific workspace. You can optionally filter the results by providing a folder ID.
### Method
GET
### Endpoint
/v1/typebots
### Parameters
#### Query Parameters
- **workspaceId** (string) - Required - The ID of the workspace to list typebots from.
- **folderId** (string) - Optional - The ID of the folder to filter the typebots by.
### Response
#### Success Response (200)
- **typebots** (array) - A list of typebot objects.
- **name** (string) - The name of the typebot.
- **icon** (string|null) - The icon of the typebot.
- **id** (string) - The unique identifier of the typebot.
- **spaceId** (string|null) - The ID of the space the typebot belongs to.
- **createdAt** (string) - The creation timestamp.
- **publishedTypebotId** (string) - The ID of the published version.
- **accessRight** (string) - The user's access level (read, write, or guest).
```