### POST /v1/workspace/website/{website_id}/domain
Source: https://api.lindo.ai/openapi.json
Initiates custom domain setup for a website. Returns agent-ready DNS records with instructions.
```markdown
### Parameters
- **website_id** (string, path, required) (example: "website_abc123")
### Request Body
**Content-Type:** application/json
- **domain** (string) (required): Custom domain to add to the website (example: "www.mybusiness.com")
### Responses
#### 200 - Custom domain setup initiated with DNS records
**WebsiteDomainAddResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **message** (string) (required): Success message (example: "Custom domain setup initiated")
- **domain** (string) (required): The domain being configured (example: "www.mybusiness.com")
- **dns_records** (array (DNSRecord)) (required): DNS records that need to be configured
Array items:
- **record_type** (string (CNAME|TXT|A)) (required): Type of DNS record (example: "CNAME") ("CNAME"|"TXT"|"A")
- **host** (string) (required): Host/name for the DNS record (example: "www")
- **value** (string) (required): Value for the DNS record (example: "proxy.example.com")
- **purpose** (string) (required): Purpose of this DNS record (example: "Points your domain to our servers")
- **ttl** (number) (required): Time to live in seconds (example: 3600)
- **instructions** (string) (required): Human-readable instructions for DNS setup (example: "Add the following DNS records to your domain registrar to complete the setup.")
#### 400 - Bad request - domain already in use or validation error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 404 - Website not found
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X POST "https://api.lindo.ai/v1/workspace/website/{website_id}/domain" \
-H "Content-Type: application/json" \
-d '{
"domain": "www.mybusiness.com"
}'
```
```
--------------------------------
### GET /v1/workspace/website/list
Source: https://api.lindo.ai/openapi.json
Retrieves a paginated list of all websites associated with the current workspace
```markdown
### Parameters
- **page** (string, query, optional) (example: "1")
- **search** (string, query, optional) (example: "example.com")
### Responses
#### 200 - Website list retrieved successfully
**WebsiteListResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **list** (array (WebsiteListItem)) (required): Array of website items
Array items:
- **website_id** (string) (required): Unique identifier of the website (example: "website_abc123")
- **website_name** (string) (required): Name of the website (example: "My Business Website")
- **domain** (string) (required): Domain URL of the website (example: "https://example.com")
- **activated** (boolean) (required): Whether the website is activated (example: true)
- **created_date** (string) (required): Date when the website was created (example: "2024-01-15T10:30:00Z")
- **language** (string) (required): Language code of the website (e.g., 'en', 'es') (example: "en")
- **total** (number) (required): Total number of websites (example: 10)
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace/website/list?page=1&search=example.com"
```
```
--------------------------------
### GET /v1/workspace/website/{website_id}/blogs/{blog_id}
Source: https://api.lindo.ai/openapi.json
Retrieves detailed information about a specific blog including SEO metadata, blog_settings, and data fields.
```markdown
### Parameters
- **website_id** (string, path, required) (example: "ws_abc123")
- **blog_id** (string, path, required) (example: "blog_abc123")
### Responses
#### 200 - Blog details retrieved successfully
**BlogDetailsResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **blog_id** (string) (required): Unique identifier of the blog (example: "blog_abc123")
- **name** (string) (required): Name of the blog post (example: "Getting Started Guide")
- **path** (string) (required): URL path of the blog post (example: "/blog/getting-started")
- **status** (string) (required): Current status of the blog (example: "Active")
- **language** (string) (required): Language code of the blog (e.g., 'en', 'es') (example: "en")
- **seo** (object) (required): SEO metadata for the blog post (example: {"title":"Getting Started","description":"Learn how to get started"})
- **blog_settings** (object) (required): Blog-specific settings configuration (example: {"featured":true,"category":"tutorials"})
- **data** (object) (required): Blog data and content (example: {"content":[],"author":"John Doe"})
- **publish_date** (number) (required): Unix timestamp when the blog was published, null if unpublished (example: 1705312200)
- **created_date** (string) (required): Date when the blog was created (example: "2024-01-15T10:30:00Z")
#### 400 - Bad request - validation error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 404 - Blog not found
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace/website/{website_id}/blogs/{blog_id}"
```
```
--------------------------------
### GET /v1/workspace/website/{website_id}
Source: https://api.lindo.ai/openapi.json
Retrieves detailed information about a specific website including settings, integrations, and configuration.
```markdown
### Parameters
- **website_id** (string, path, required) (example: "website_abc123")
### Responses
#### 200 - Website details retrieved successfully
**WebsiteDetailsResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **website_id** (string) (required): Unique identifier of the website (example: "website_abc123")
- **business_name** (string) (required): Business name for the website (example: "My Business")
- **business_description** (string) (required): Business description (example: "A great business providing excellent services")
- **preview_url** (string) (required): Preview URL of the website (example: "https://preview.example.com")
- **custom_domain** (string) (required): Custom domain configured for the website (example: "www.mybusiness.com")
- **verified_domain** (string) (required): Verified domain for the website (example: "www.mybusiness.com")
- **language** (string) (required): Language of the website (example: "en")
- **activated** (boolean) (required): Whether the website is activated (example: true)
- **theme** (object) (required): Theme configuration for the website including font and title_font (example: {"primaryColor":"#007bff","font":"Inter","title_font":"Poppins"})
- **integrations** (array (IntegrationSummary)) (required): Integrations configured for the website in format [{name, ready, value}] (example: [{"name":"matomo","ready":true,"value":"123"}])
Array items:
- **name** (string) (required): Name of the integration (example: "stripe")
- **ready** (boolean) (required): Whether the integration is ready/configured (example: false)
- **value** (string) (required): Integration value (e.g., account ID) (example: "acct_1SwQ4AIJUp1O1efL")
- **socials** (object) (required): Social media links for the website (example: {"twitter":"https://twitter.com/mybusiness"})
- **fonts** (object) (required): Font configuration for the website (example: {"heading":"Roboto","body":"Open Sans"})
- **created_date** (string) (required): Date when the website was created (example: "2024-01-15T10:30:00Z")
- **global_header** (string) (required): Global header HTML shared across all pages (example: "")
- **global_footer** (string) (required): Global footer HTML shared across all pages (example: "")
- **custom_codes** (object) (required): Custom code snippets for header and footer injection
- **header** (string) (required): Custom code to inject in the header (example: "")
- **footer** (string) (required): Custom code to inject in the footer (example: "")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 404 - Website not found
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace/website/{website_id}"
```
```
--------------------------------
### GET /v1/workspace/client/list
Source: https://api.lindo.ai/openapi.json
Retrieves a paginated list of all clients associated with the current workspace
```markdown
### Parameters
- **page** (string, query, optional) (example: "1")
- **search** (string, query, optional) (example: "john")
### Responses
#### 200 - Client list retrieved successfully
**ClientListResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **list** (array (ClientListItem)) (required): Array of client items
Array items:
- **client_id** (string) (required): Unique identifier of the client (example: "client_abc123")
- **email** (string) (required): Client email address (example: "client@example.com")
- **full_name** (string): Client full name (example: "John Doe")
- **created_date** (string) (required): Date when the client was created (example: "2024-01-15T10:30:00Z")
- **website_limit** (number): Maximum websites allowed for this client (example: 5)
- **suspended** (boolean): Whether the client is suspended (example: false)
- **total** (number) (required): Total number of clients (example: 25)
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace/client/list?page=1&search=john"
```
```
--------------------------------
### GET /v1/workspace/website/{website_id}/blogs/{blog_id}/html
Source: https://api.lindo.ai/openapi.json
Returns the editable content of a blog including blog_content, SEO, and blog_settings. Used by CLI for live editing.
```markdown
### Parameters
- **website_id** (string, path, required) (example: "ws_abc123")
- **blog_id** (string, path, required) (example: "blog_abc123")
### Responses
#### 200 - Blog content retrieved successfully
- **success** (boolean) (required) ("true")
- **result** (object) (required)
- **blog_id** (string) (required)
- **blog_content** (string) (required)
- **path** (string) (required)
- **name** (string) (required)
- **seo** (object)
- **blog_settings** (object)
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 404 - Blog not found
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace/website/{website_id}/blogs/{blog_id}/html"
```
```
--------------------------------
### GET /v1/workspace
Source: https://api.lindo.ai/openapi.json
Retrieves detailed information about the current workspace including settings and integrations.
```markdown
### Responses
#### 200 - Workspace details retrieved successfully
**WorkspaceDetailsResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **workspace_id** (string) (required): Unique identifier of the workspace (example: "workspace_abc123")
- **workspace_name** (string) (required): Name of the workspace (example: "My Workspace")
- **workspace_language** (string) (required): Default language for the workspace (lang_code format) (example: "en")
- **email** (string) (required): Email associated with the workspace (example: "admin@example.com")
- **plan** (string) (required): Current subscription plan (example: "pro")
- **integrations** (array (IntegrationSummary)) (required): Integrations configured for the workspace (example: [{"name":"stripe","ready":false,"value":"acct_1SwQ4AIJUp1O1efL"}])
Array items:
- **name** (string) (required): Name of the integration (example: "stripe")
- **ready** (boolean) (required): Whether the integration is ready/configured (example: false)
- **value** (string) (required): Integration value (e.g., account ID) (example: "acct_1SwQ4AIJUp1O1efL")
- **webhook_url** (string) (required): Webhook URL for workspace events (example: "https://api.mybusiness.com/webhooks")
- **created_date** (string) (required): Date when the workspace was created (example: "2024-01-15T10:30:00Z")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace"
```
```
--------------------------------
### GET /v1/workspace/website/{website_id}/blogs/list
Source: https://api.lindo.ai/openapi.json
Retrieves a paginated list of all blogs (template_type = 'Blog Post') for a website. Supports search filtering by name or path.
```markdown
### Parameters
- **website_id** (string, path, required) (example: "ws_abc123")
- **page** (number, query, optional) (example: 1)
- **search** (string, query, optional) (example: "announcement")
### Responses
#### 200 - Blog list retrieved successfully
**BlogListResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **list** (array (BlogListItem)) (required): Array of blog items
Array items:
- **blog_id** (string) (required): Unique identifier of the blog (example: "blog_abc123")
- **name** (string) (required): Name of the blog post (example: "Getting Started Guide")
- **path** (string) (required): URL path of the blog post (example: "/blog/getting-started")
- **status** (string (Active|Archive|Building)) (required): Current status of the blog (example: "Active") ("Active"|"Archive"|"Building")
- **language** (string) (required): Language code of the blog (e.g., 'en', 'es') (example: "en")
- **publish_date** (number) (required): Unix timestamp when the blog was published, null if unpublished (example: 1705312200)
- **blog_settings** (object) (required): Blog-specific settings configuration (example: {"featured":true,"category":"tutorials"})
- **created_date** (string) (required): Date when the blog was created (example: "2024-01-15T10:30:00Z")
- **total** (number) (required): Total number of blogs (example: 15)
#### 400 - Bad request - validation error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 404 - Website not found
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/workspace/website/{website_id}/blogs/list?page=1&search=announcement"
```
```
--------------------------------
### GET /v1/ai/credits
Source: https://api.lindo.ai/openapi.json
Get credit balance for the workspace associated with the API key
```markdown
### Responses
#### 200 - Credits retrieved
**CreditsResponse**
- **success** (boolean) (required) ("true")
- **data** (object) (required)
- **type** (string (workspace|client)) (required) ("workspace"|"client")
- **workspace_id** (string) (required)
- **client_id** (string)
- **balance** (object) (required)
- **workspace_id** (string) (required)
- **current_balance** (object) (required)
- **monthly** (object) (required)
- **available** (number) (required)
- **used** (number) (required)
- **limit** (number) (required)
- **utilization_percentage** (number) (required)
- **purchased** (object) (required)
- **available** (number) (required)
- **used** (number) (required)
- **total_allocated** (number) (required)
- **daily** (object) (required)
- **available** (number) (required)
- **used** (number) (required)
- **limit** (number) (required)
- **resets_at** (string) (required)
- **total_available** (number) (required)
- **plan_details** (object) (required)
- **current_plan** (string) (required)
- **monthly_limit** (number) (required)
- **daily_limit** (number) (required)
- **reset_dates** (object) (required)
- **next_monthly_reset** (string) (required)
- **next_daily_reset** (string) (required)
- **last_updated** (string) (required)
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/ai/credits"
```
```
--------------------------------
### POST /v1/workspace/website/{website_id}/blogs/create
Source: https://api.lindo.ai/openapi.json
Creates a new blog and publishes it with markdown content. Blog content is converted to HTML via generateBlogHtml.
```markdown
### Parameters
- **website_id** (string, path, required) (example: "ws_abc123")
### Request Body
**Content-Type:** application/json
- **path** (string) (required): URL path for the blog post (example: "/blog/my-first-post")
- **blog_content** (string) (required): Blog markdown content (example: "# My Blog Post\n\nContent here...")
- **seo** (object) (required): SEO metadata for the blog post
- **page_title** (string) (required): Page title for the blog (example: "My First Blog Post")
- **meta_description** (string): Meta description for SEO (example: "A brief description of the blog post")
- **social_title** (string): Social media title (example: "My First Blog Post")
- **social_description** (string): Social media description (example: "A brief description for social sharing")
- **social_image** (string): Social media image URL (example: "https://example.com/image.jpg")
- **blog_settings** (object) (required): Blog-specific settings
- **author** (string) (required): Author name (example: "John Doe")
- **excerpt** (string): Blog excerpt/summary (example: "A brief summary of the blog post")
- **category** (string): Blog category (example: "Technology")
- **publish_date** (string): Publish date string (example: "January 15, 2025")
- **read_time** (string): Estimated read time (example: "5 min read")
- **author_image** (string): Author avatar image URL (example: "https://example.com/author.jpg")
- **settings** (object): Additional settings (example: {"theme":{"mode":"dark"}})
### Responses
#### 200 - Blog created and published successfully
**BlogCreateResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **message** (string) (required): Success message (example: "Blog created and published successfully")
- **blog_id** (string) (required): Unique identifier of the created blog (example: "blog_abc123")
- **publish_date** (number) (required): Unix timestamp when the blog was published (example: 1705312200)
- **published_url** (string) (required): Full URL where the blog is published (example: "https://example.com/blog/my-first-post")
#### 400 - Bad request - validation error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 404 - Website not found
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 500 - Internal server error
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X POST "https://api.lindo.ai/v1/workspace/website/{website_id}/blogs/create" \
-H "Content-Type: application/json" \
-d '{
"path": "/blog/my-first-post",
"blog_content": "# My Blog Post\n\nContent here...",
"seo": {
"page_title": "My First Blog Post",
"meta_description": "A brief description of the blog post",
"social_title": "My First Blog Post",
"social_description": "A brief description for social sharing",
"social_image": "https://example.com/image.jpg"
},
"blog_settings": {
"author": "John Doe",
"excerpt": "A brief summary of the blog post",
"category": "Technology",
"publish_date": "January 15, 2025",
"read_time": "5 min read",
"author_image": "https://example.com/author.jpg"
},
"settings": {
"theme": {
"mode": "dark"
}
}
}'
```
```
--------------------------------
### GET /v1/ai/credits/client
Source: https://api.lindo.ai/openapi.json
Get credit balance for a specific client. Requires client_id query parameter.
```markdown
### Parameters
- **client_id** (string, query, required)
### Responses
#### 200 - Client credits retrieved
**CreditsResponse**
- **success** (boolean) (required) ("true")
- **data** (object) (required)
- **type** (string (workspace|client)) (required) ("workspace"|"client")
- **workspace_id** (string) (required)
- **client_id** (string)
- **balance** (object) (required)
- **workspace_id** (string) (required)
- **current_balance** (object) (required)
- **monthly** (object) (required)
- **available** (number) (required)
- **used** (number) (required)
- **limit** (number) (required)
- **utilization_percentage** (number) (required)
- **purchased** (object) (required)
- **available** (number) (required)
- **used** (number) (required)
- **total_allocated** (number) (required)
- **daily** (object) (required)
- **available** (number) (required)
- **used** (number) (required)
- **limit** (number) (required)
- **resets_at** (string) (required)
- **total_available** (number) (required)
- **plan_details** (object) (required)
- **current_plan** (string) (required)
- **monthly_limit** (number) (required)
- **daily_limit** (number) (required)
- **reset_dates** (object) (required)
- **next_monthly_reset** (string) (required)
- **next_daily_reset** (string) (required)
- **last_updated** (string) (required)
#### 403 - Forbidden - client does not belong to workspace
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
### Example Usage
```bash
curl -X GET "https://api.lindo.ai/v1/ai/credits/client?client_id=string"
```
```
--------------------------------
### POST /v1/workspace/client/create
Source: https://api.lindo.ai/openapi.json
Creates a new client for a workspace with specified email and permissions
```markdown
### Request Body
**Content-Type:** application/json
- **email** (string (email)) (required): Client email address (example: "client@example.com")
- **website_limit** (number): Maximum websites allowed for this client (example: 1)
- **full_name** (string): Client full name (example: "John Doe")
- **credit_limit** (number): Credit limit for client (example: 100)
- **send_invitation** (boolean): Send invitation email to the client. Defaults to false. (example: false)
### Responses
#### 200 - Client created successfully
**ClientCreateResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **client_id** (string) (required): Unique identifier of the created client (example: "client_abc123")
- **email** (string) (required): Client email address (example: "client@example.com")
- **full_name** (string): Client full name (example: "John Doe")
- **suspended** (boolean): Whether the client is suspended (example: false)
- **website_limit** (number): Maximum websites allowed (example: 1)
- **credit_limit** (number): Credit limit for client (example: 100)
- **created_date** (string) (required): Date when the client was created (example: "2024-01-15T10:30:00Z")
#### 400 - Bad request - validation error or client already exists
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X POST "https://api.lindo.ai/v1/workspace/client/create" \
-H "Content-Type: application/json" \
-d '{
"email": "client@example.com",
"website_limit": 1,
"full_name": "John Doe",
"credit_limit": 100,
"send_invitation": false
}'
```
```
--------------------------------
### Security: bearerAuth
Source: https://api.lindo.ai/openapi.json
Enter your API key (starts with lindo_sk_)
```markdown
## Security: bearerAuth
**Description:** Enter your API key (starts with lindo_sk_)
**Type:** http
**Scheme:** bearer
**Bearer Format:** JWT
```
--------------------------------
### POST /v1/workspace/website/assign
Source: https://api.lindo.ai/openapi.json
Assigns a website to a client
```markdown
### Request Body
**Content-Type:** application/json
- **website_id** (string) (required): Unique identifier of the website to assign (example: "website_abc123")
- **client_id** (string) (required): Unique identifier of the client to assign the website to (example: "client_abc123")
### Responses
#### 200 - Website assigned to client successfully
**WebsiteAssignResponse**
- **success** (boolean) (required): Indicates the operation was successful (example: true) ("true")
- **result** (object) (required)
- **message** (string) (required): Success message (example: "Website assigned to client successfully")
- **website_id** (string) (required): Unique identifier of the assigned website (example: "website_abc123")
- **client_id** (string) (required): Unique identifier of the client (example: "client_abc123")
#### 400 - Bad request - website or client not found in workspace
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
#### 401 - Unauthorized - invalid or missing API key
**ApiErrorResponse**
- **success** (boolean) (required): Indicates the operation failed (example: false) ("false")
- **errors** (array (string)) (required): Array of error messages (example: ["Client already exists"])
- **message** (string): Optional error message (example: "Validation failed")
### Example Usage
```bash
curl -X POST "https://api.lindo.ai/v1/workspace/website/assign" \
-H "Content-Type: application/json" \
-d '{
"website_id": "website_abc123",
"client_id": "client_abc123"
}'
```
```
--------------------------------
### POST /v1/ai/workspace/website/{website_id}/blog
Source: https://api.lindo.ai/openapi.json
Creates a new blog post on an existing website using AI to generate content based on the provided prompt. Requires website ownership verification. Returns a workflow instance_id for status tracking.
```markdown
### Parameters
- **website_id** (string, path, required): The ID of the website to create the blog on (example: "website_abc123")
### Request Body
**Content-Type:** application/json
- **prompt** (string) (required): AI prompt describing the blog post to create. Must be at least 10 characters. (example: "Write a blog post about the benefits of organic coffee beans")
- **schedule_at** (string): Optional ISO 8601 date to schedule the workflow for future execution. (example: "2026-05-01T09:00:00Z")
### Responses
#### 200 - Workflow started successfully
**WorkflowResponse**
- **success** (boolean) (required): Indicates the workflow was started successfully (example: true) ("true")
- **instance_id** (string) (required): Unique identifier for the workflow instance, used for status tracking (example: "wf_abc123xyz789")
- **website_id** (string): ID of the created website (for website creation workflows) (example: "website_def456")
- **page_id** (string): ID of the created page (for page creation workflows) (example: "page_ghi789")
- **blog_id** (string): ID of the created blog (for blog creation workflows) (example: "blog_jkl012")
- **status_url** (string): URL to check the workflow status (example: "/v1/workflow/status/wf_abc123xyz789")
#### 400 - Invalid request - validation error
**WorkflowErrorResponse**
- **success** (boolean) (required): Indicates the workflow failed to start (example: false) ("false")
- **error** (string) (required): Error message describing what went wrong (example: "Invalid prompt: must be at least 10 characters")
#### 401 - Unauthorized - invalid or missing API key
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
#### 403 - Forbidden - website does not belong to workspace
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
#### 500 - Internal server error
**WorkflowErrorResponse**
- **success** (boolean) (required): Indicates the workflow failed to start (example: false) ("false")
- **error** (string) (required): Error message describing what went wrong (example: "Invalid prompt: must be at least 10 characters")
### Example Usage
```bash
curl -X POST "https://api.lindo.ai/v1/ai/workspace/website/{website_id}/blog" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write a blog post about the benefits of organic coffee beans",
"schedule_at": "2026-05-01T09:00:00Z"
}'
```
```
--------------------------------
### POST /v1/ai/credits/client/allocate
Source: https://api.lindo.ai/openapi.json
Allocates credits from the workspace to a specific client. Requires client ownership verification.
```markdown
### Request Body
**Content-Type:** application/json
- **client_id** (string) (required): The ID of the client to allocate credits to (example: "client_abc123")
- **credit_type** (string (monthly|purchased|daily)) (required): Type of credits to allocate (example: "purchased") ("monthly"|"purchased"|"daily")
- **amount** (number) (required): Number of credits to allocate (must be positive) (example: 100)
- **source** (string): Source of the allocation (e.g. bonus, purchase) (example: "bonus")
- **notes** (string): Optional notes for the allocation (example: "Monthly credit top-up")
### Responses
#### 200 - Credits allocated successfully
**AllocateClientCreditsResponse**
- **success** (boolean) (required) ("true")
- **data** (object) (required)
- **allocation** (object)
- **id** (string) (required)
- **client_id** (string) (required)
- **credit_type** (string) (required)
- **amount** (number) (required)
- **remaining** (number) (required)
- **source** (string) (required)
- **status** (string) (required)
- **created_at** (string) (required)
- **message** (string)
- **balance** (object) (required)
- **monthly** (number) (required)
- **purchased** (number) (required)
- **daily** (number) (required)
- **total** (number) (required)
#### 400 - Invalid request - missing fields or invalid values
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
#### 401 - Unauthorized - invalid or missing API key
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
#### 403 - Forbidden - client does not belong to workspace
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
#### 500 - Internal server error
**ErrorResponse**
- **success** (boolean) (required) ("false")
- **error** (string) (required)
### Example Usage
```bash
curl -X POST "https://api.lindo.ai/v1/ai/credits/client/allocate" \
-H "Content-Type: application/json" \
-d '{
"client_id": "client_abc123",
"credit_type": "purchased",
"amount": 100,
"source": "bonus",
"notes": "Monthly credit top-up"
}'
```
```