### 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" }' ``` ```