Skip to content

API Endpoints

Browse all available XC Scribe API endpoints below. Each endpoint includes request/response schemas, parameters, and example payloads.

API for XC AI Content Automation platform

Servers

https://api.xcscribe.comProduction
https://demoapi.scribe.thextracode.comDemo
http://localhost:8000Local development

Authenticate user credentials

POST
/api/v1/auth/login

Validate email and password, returning a JWT access token on success. If the user has 2FA enabled, returns a temporary token and triggers the 2FA verification flow instead.

Request Body

application/json
JSON
{
  
"email": "string",
  
"password": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"access_token": "string",
  
"token_type": "bearer",
  
"two_factor_required": false,
  
"two_factor_setup_required": false,
  
"two_factor_method": "string",
  
"temp_token": "string"
}

Playground

Server
Body

Samples


Refresh access token

POST
/api/v1/auth/refresh

Return a new JWT access token for the currently authenticated user.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"access_token": "string",
  
"token_type": "bearer"
}

Playground

Server
Authorization

Samples


Logout (revoke current token)

POST
/api/v1/auth/logout

Revoke the current JWT access token. The token will be rejected on all future requests.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Authorization

Samples


Logout all sessions

POST
/api/v1/auth/logout-all

Revoke all existing JWT tokens for the current user. All sessions will be terminated.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Authorization

Samples


Request password reset

POST
/api/v1/auth/forgot-password

Send a password reset link to the given email. Always returns 200 to prevent user enumeration.

Request Body

application/json
JSON
{
  
"email": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Body

Samples


Reset password with token

POST
/api/v1/auth/reset-password

Set a new password using the token from the password reset email.

Request Body

application/json
JSON
{
  
"token": "string",
  
"new_password": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Body

Samples


Verify email address

GET
/api/v1/auth/verify-email

Verify the user's email using the token from the verification email.

Parameters

Query Parameters

token*
Type
string
Required

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Variables
Key
Value

Samples


Resend verification email

POST
/api/v1/auth/resend-verification

Resend the email verification link to the current user.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Authorization

Samples


Self-service registration

POST
/api/v1/auth/register

Create a new account with a Free tier organization. The org starts with 50 XCT.

Request Body

application/json
JSON
{
  
"email": "string",
  
"password": "string",
  
"company_name": "string",
  
"first_name": "",
  
"last_name": "",
  
"turnstile_token": ""
}

Responses

Successful Response

application/json
JSON
{
  
"access_token": "string",
  
"token_type": "bearer",
  
"organization_id": "string",
  
"message": "string"
}

Playground

Server
Body

Samples


Sign in with Google

POST
/api/v1/auth/google

Verify a Google ID token credential and sign in or create an account.

Request Body

application/json
JSON
{
  
"credential": "string",
  
"access_token": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"access_token": "string",
  
"token_type": "bearer",
  
"two_factor_required": false,
  
"two_factor_setup_required": false,
  
"two_factor_method": "string",
  
"temp_token": "string"
}

Playground

Server
Body

Samples


Sign in with Apple

POST
/api/v1/auth/apple

Verify an Apple ID token and sign in or create an account.

Request Body

application/json
JSON
{
  
"id_token": "string",
  
"first_name": "string",
  
"last_name": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"access_token": "string",
  
"token_type": "bearer",
  
"two_factor_required": false,
  
"two_factor_setup_required": false,
  
"two_factor_method": "string",
  
"temp_token": "string"
}

Playground

Server
Body

Samples


Begin 2FA setup

POST
/api/v1/auth/2fa/setup

Initiate two-factor authentication setup for the current user. For TOTP, returns a secret and otpauth URI; for email, sends a verification code.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"method": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"method": "string",
  
"secret": "string",
  
"otpauth_uri": "string",
  
"message": "string"
}

Playground

Server
Authorization
Body

Samples


Confirm 2FA setup

POST
/api/v1/auth/2fa/confirm

Confirm two-factor authentication setup by verifying a code from the chosen method. Returns a set of one-time backup codes on success.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"code": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"backup_codes": [
  
  
"string"
  
],
  
"message": "string"
}

Playground

Server
Authorization
Body

Samples


Send 2FA disable code

POST
/api/v1/auth/2fa/send-disable-code

Send an email OTP code to the current user for the purpose of disabling 2FA. Only applicable when the 2FA method is email.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


Disable two-factor authentication

POST
/api/v1/auth/2fa/disable

Disable 2FA for the current user after verifying a valid OTP or backup code. Blocked if the organization enforces 2FA.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"code": "string"
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Body

Samples


Verify 2FA login code

POST
/api/v1/auth/verify-2fa

Complete the second step of login by verifying a TOTP, email OTP, or backup code. Returns a full JWT access token on success.

Request Body

application/json
JSON
{
  
"temp_token": "string",
  
"code": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"access_token": "string",
  
"token_type": "bearer",
  
"two_factor_required": false,
  
"two_factor_setup_required": false,
  
"two_factor_method": "string",
  
"temp_token": "string"
}

Playground

Server
Body

Samples


Resend 2FA email code

POST
/api/v1/auth/resend-2fa

Resend the email OTP code during the login 2FA verification step. Only works for users with the email 2FA method.

Request Body

application/json
JSON
{
  
"temp_token": "string"
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Body

Samples


Begin 2FA setup via temp token

POST
/api/v1/auth/2fa/setup-with-temp

Initiate two-factor authentication setup using a temporary token, intended for organization-enforced 2FA setup during login.

Request Body

application/json
JSON
{
  
"temp_token": "string",
  
"method": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"method": "string",
  
"secret": "string",
  
"otpauth_uri": "string",
  
"message": "string"
}

Playground

Server
Body

Samples


Confirm 2FA setup via temp token

POST
/api/v1/auth/2fa/confirm-with-temp

Confirm two-factor authentication setup using a temporary token by verifying a code. Returns backup codes on success.

Request Body

application/json
JSON
{
  
"temp_token": "string",
  
"code": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"backup_codes": [
  
  
"string"
  
],
  
"message": "string"
}

Playground

Server
Body

Samples


List organization users

GET
/api/v1/users

Returns all users belonging to the admin's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"email": "string",
  
  
"first_name": "string",
  
  
"last_name": "string",
  
  
"phone_number": "string",
  
  
"role": "string",
  
  
"is_active": true,
  
  
"email_verified": false,
  
  
"is_super_admin": false,
  
  
"two_factor_enabled": false,
  
  
"two_factor_method": "string",
  
  
"oauth_provider": "string",
  
  
"email_preferences": {
  
  
  
"usage_billing": true,
  
  
  
"ai_studio": true,
  
  
  
"system_alerts": true
  
  
},
  
  
"created_at": "string",
  
  
"last_login_at": "string",
  
  
"organization": {
  
  
  
"id": "string",
  
  
  
"name": "string",
  
  
  
"slug": "string",
  
  
  
"settings": {
  
  
  
  
"additionalProperties": "string"
  
  
  
},
  
  
  
"address": "string",
  
  
  
"phone_number": "string",
  
  
  
"tax_id": "string",
  
  
  
"billing_email": "string",
  
  
  
"byok_enabled": false,
  
  
  
"has_anthropic_key": false,
  
  
  
"has_deepseek_key": false,
  
  
  
"has_google_key": false,
  
  
  
"enforce_2fa": false,
  
  
  
"created_at": "string"
  
  
}
  
}
]

Playground

Server
Authorization

Samples


Create a new user

POST
/api/v1/users

Creates a new user in the admin's organization and sends a welcome email with credentials.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"email": "string",
  
"password": "string",
  
"role": "member"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"first_name": "string",
  
"last_name": "string",
  
"phone_number": "string",
  
"role": "string",
  
"is_active": true,
  
"email_verified": false,
  
"is_super_admin": false,
  
"two_factor_enabled": false,
  
"two_factor_method": "string",
  
"oauth_provider": "string",
  
"email_preferences": {
  
  
"usage_billing": true,
  
  
"ai_studio": true,
  
  
"system_alerts": true
  
},
  
"created_at": "string",
  
"last_login_at": "string",
  
"organization": {
  
  
"id": "string",
  
  
"name": "string",
  
  
"slug": "string",
  
  
"settings": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"address": "string",
  
  
"phone_number": "string",
  
  
"tax_id": "string",
  
  
"billing_email": "string",
  
  
"byok_enabled": false,
  
  
"has_anthropic_key": false,
  
  
"has_deepseek_key": false,
  
  
"has_google_key": false,
  
  
"enforce_2fa": false,
  
  
"created_at": "string"
  
}
}

Playground

Server
Authorization
Body

Samples


Get current user profile

GET
/api/v1/users/me

Returns the profile of the currently authenticated user.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"first_name": "string",
  
"last_name": "string",
  
"phone_number": "string",
  
"role": "string",
  
"is_active": true,
  
"email_verified": false,
  
"is_super_admin": false,
  
"two_factor_enabled": false,
  
"two_factor_method": "string",
  
"oauth_provider": "string",
  
"email_preferences": {
  
  
"usage_billing": true,
  
  
"ai_studio": true,
  
  
"system_alerts": true
  
},
  
"created_at": "string",
  
"last_login_at": "string",
  
"organization": {
  
  
"id": "string",
  
  
"name": "string",
  
  
"slug": "string",
  
  
"settings": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"address": "string",
  
  
"phone_number": "string",
  
  
"tax_id": "string",
  
  
"billing_email": "string",
  
  
"byok_enabled": false,
  
  
"has_anthropic_key": false,
  
  
"has_deepseek_key": false,
  
  
"has_google_key": false,
  
  
"enforce_2fa": false,
  
  
"created_at": "string"
  
}
}

Playground

Server
Authorization

Samples


Update current user profile

PATCH
/api/v1/users/me

Updates the authenticated user's own profile fields such as name, phone number, or password.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"email": "string",
  
"first_name": "string",
  
"last_name": "string",
  
"phone_number": "string",
  
"current_password": "string",
  
"password": "string",
  
"role": "string",
  
"is_active": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"first_name": "string",
  
"last_name": "string",
  
"phone_number": "string",
  
"role": "string",
  
"is_active": true,
  
"email_verified": false,
  
"is_super_admin": false,
  
"two_factor_enabled": false,
  
"two_factor_method": "string",
  
"oauth_provider": "string",
  
"email_preferences": {
  
  
"usage_billing": true,
  
  
"ai_studio": true,
  
  
"system_alerts": true
  
},
  
"created_at": "string",
  
"last_login_at": "string",
  
"organization": {
  
  
"id": "string",
  
  
"name": "string",
  
  
"slug": "string",
  
  
"settings": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"address": "string",
  
  
"phone_number": "string",
  
  
"tax_id": "string",
  
  
"billing_email": "string",
  
  
"byok_enabled": false,
  
  
"has_anthropic_key": false,
  
  
"has_deepseek_key": false,
  
  
"has_google_key": false,
  
  
"enforce_2fa": false,
  
  
"created_at": "string"
  
}
}

Playground

Server
Authorization
Body

Samples


Get email notification preferences

GET
/api/v1/users/me/email-preferences

Get the current user's email notification preferences.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"usage_billing": true,
  
"ai_studio": true,
  
"system_alerts": true
}

Playground

Server
Authorization

Samples


Update email notification preferences

PATCH
/api/v1/users/me/email-preferences

Update the current user's email notification preferences.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"usage_billing": true,
  
"ai_studio": true,
  
"system_alerts": true
}

Responses

Successful Response

application/json
JSON
{
  
"usage_billing": true,
  
"ai_studio": true,
  
"system_alerts": true
}

Playground

Server
Authorization
Body

Samples


Get Chatwoot identity hash

GET
/api/v1/users/me/chatwoot-identity

Returns HMAC identifier_hash for Chatwoot setUser identity validation.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


Deactivate a user

DELETE
/api/v1/users/{user_id}

Soft-deletes a user by setting their active status to false.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

user_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update a user

PATCH
/api/v1/users/{user_id}

Allows an admin to update any user's profile within their organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

user_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"email": "string",
  
"first_name": "string",
  
"last_name": "string",
  
"phone_number": "string",
  
"current_password": "string",
  
"password": "string",
  
"role": "string",
  
"is_active": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"first_name": "string",
  
"last_name": "string",
  
"phone_number": "string",
  
"role": "string",
  
"is_active": true,
  
"email_verified": false,
  
"is_super_admin": false,
  
"two_factor_enabled": false,
  
"two_factor_method": "string",
  
"oauth_provider": "string",
  
"email_preferences": {
  
  
"usage_billing": true,
  
  
"ai_studio": true,
  
  
"system_alerts": true
  
},
  
"created_at": "string",
  
"last_login_at": "string",
  
"organization": {
  
  
"id": "string",
  
  
"name": "string",
  
  
"slug": "string",
  
  
"settings": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"address": "string",
  
  
"phone_number": "string",
  
  
"tax_id": "string",
  
  
"billing_email": "string",
  
  
"byok_enabled": false,
  
  
"has_anthropic_key": false,
  
  
"has_deepseek_key": false,
  
  
"has_google_key": false,
  
  
"enforce_2fa": false,
  
  
"created_at": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Reset user 2FA

POST
/api/v1/users/{user_id}/2fa/reset

Clears a user's 2FA secret and backup codes, forcing re-setup on next login.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

user_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Disable user 2FA

POST
/api/v1/users/{user_id}/2fa/disable

Temporarily disables a user's 2FA check while preserving their secret for re-enabling later.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

user_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Force logout a user

POST
/api/v1/users/{user_id}/logout-all

Revokes all active sessions for a user in the admin's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

user_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Get current organization

GET
/api/v1/organization

Retrieve the organization details associated with the currently authenticated user.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"slug": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"address": "string",
  
"phone_number": "string",
  
"tax_id": "string",
  
"billing_email": "string",
  
"byok_enabled": false,
  
"has_anthropic_key": false,
  
"has_deepseek_key": false,
  
"has_google_key": false,
  
"enforce_2fa": false,
  
"created_at": "string"
}

Playground

Server
Authorization

Samples


Update organization details

PATCH
/api/v1/organization

Update the organization's name, settings, address, phone number, tax ID, billing email, or 2FA enforcement. Requires admin privileges.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"address": "string",
  
"phone_number": "string",
  
"tax_id": "string",
  
"billing_email": "string",
  
"enforce_2fa": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"slug": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"address": "string",
  
"phone_number": "string",
  
"tax_id": "string",
  
"billing_email": "string",
  
"byok_enabled": false,
  
"has_anthropic_key": false,
  
"has_deepseek_key": false,
  
"has_google_key": false,
  
"enforce_2fa": false,
  
"created_at": "string"
}

Playground

Server
Authorization
Body

Samples


Update organization API keys

PATCH
/api/v1/organization/api-keys

Update the organization's third-party API keys for Anthropic, DeepSeek, or Google. Requires admin privileges and BYOK to be enabled.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"anthropic_api_key": "string",
  
"deepseek_api_key": "string",
  
"google_api_key": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"slug": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"address": "string",
  
"phone_number": "string",
  
"tax_id": "string",
  
"billing_email": "string",
  
"byok_enabled": false,
  
"has_anthropic_key": false,
  
"has_deepseek_key": false,
  
"has_google_key": false,
  
"enforce_2fa": false,
  
"created_at": "string"
}

Playground

Server
Authorization
Body

Samples


Get billing details

GET
/api/v1/organization/billing-details

Retrieve the organization's billing details used for invoicing.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"billing_company_name": "string",
  
"billing_pib": "string",
  
"billing_mb": "string",
  
"billing_address": "string",
  
"billing_city": "string",
  
"billing_postal_code": "string",
  
"billing_country": "string"
}

Playground

Server
Authorization

Samples


Update billing details

PATCH
/api/v1/organization/billing-details

Update the organization's billing details for invoicing. Requires admin privileges.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"billing_company_name": "string",
  
"billing_pib": "string",
  
"billing_mb": "string",
  
"billing_address": "string",
  
"billing_city": "string",
  
"billing_postal_code": "string",
  
"billing_country": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"billing_company_name": "string",
  
"billing_pib": "string",
  
"billing_mb": "string",
  
"billing_address": "string",
  
"billing_city": "string",
  
"billing_postal_code": "string",
  
"billing_country": "string"
}

Playground

Server
Authorization
Body

Samples


List custom tones

GET
/api/v1/organization/tones

Retrieve all custom tones configured for the current user's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"name": "string",
  
  
"description": "string",
  
  
"system_prompt": "string"
  
}
]

Playground

Server
Authorization

Samples


Create custom tone

POST
/api/v1/organization/tones

Create a new custom tone for the organization. Requires admin privileges. Fails if a tone with the same ID already exists.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"description": "string",
  
"system_prompt": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"description": "string",
  
"system_prompt": "string"
}

Playground

Server
Authorization
Body

Samples


Delete custom tone

DELETE
/api/v1/organization/tones/{tone_id}

Delete a custom tone by its ID from the organization. Requires admin privileges. Returns 404 if the tone is not found.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

tone_id*
Type
string
Required

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


system


List AI providers

GET
/api/v1/system/providers

Returns all registered AI providers and their available models.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


List e-commerce platforms

GET
/api/v1/system/platforms

Returns the supported e-commerce platforms (e.g., Magento, WooCommerce, Shopify).

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


List content types

GET
/api/v1/system/content-types

Returns the available content item types (e.g., product, category).

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


List supported languages

GET
/api/v1/system/languages

Returns the available output languages for content generation.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


List writing tones

GET
/api/v1/system/tones

Returns built-in writing tones plus any custom tones defined in the authenticated user's organization settings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


List plugin integrations

GET
/api/v1/projects/plugin-integrations

List plugin projects for the current user's organization (for Settings UI).

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


List all projects

GET
/api/v1/projects

Retrieve all projects for the current user's organization. Supports filtering to show only active or only deleted (trashed) projects.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

include_deleted
Type
boolean
Default
false

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"name": "string",
  
  
"platform": "string",
  
  
"status": "string",
  
  
"settings": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"created_at": "string",
  
  
"completed_at": "string",
  
  
"item_count": 0,
  
  
"flagged_count": 0,
  
  
"source_count": 0,
  
  
"deleted_at": "string",
  
  
"status_counts": {
  
  
  
"pending": 0,
  
  
  
"generated": 0,
  
  
  
"flagged": 0,
  
  
  
"approved": 0,
  
  
  
"rejected": 0,
  
  
  
"synced": 0,
  
  
  
"excluded": 0
  
  
},
  
  
"store_connection_id": "string",
  
  
"store_connection_name": "string",
  
  
"content_profile_id": "string",
  
  
"settings_overrides": {
  
  
  
"additionalProperties": "string"
  
  
}
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Create a new project

POST
/api/v1/projects

Create a new content project by providing a name and selecting a target platform. The project is initialized in draft status.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/x-www-form-urlencoded
object
Valid values"woocommerce""shopify""magento2""wordpress"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"status": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"completed_at": "string",
  
"item_count": 0,
  
"flagged_count": 0,
  
"source_count": 0,
  
"deleted_at": "string",
  
"status_counts": {
  
  
"pending": 0,
  
  
"generated": 0,
  
  
"flagged": 0,
  
  
"approved": 0,
  
  
"rejected": 0,
  
  
"synced": 0,
  
  
"excluded": 0
  
},
  
"store_connection_id": "string",
  
"store_connection_name": "string",
  
"content_profile_id": "string",
  
"settings_overrides": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Body

Samples


Get project details

GET
/api/v1/projects/{project_id}

Retrieve a single project by ID, including computed item counts and status breakdowns.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"status": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"completed_at": "string",
  
"item_count": 0,
  
"flagged_count": 0,
  
"source_count": 0,
  
"deleted_at": "string",
  
"status_counts": {
  
  
"pending": 0,
  
  
"generated": 0,
  
  
"flagged": 0,
  
  
"approved": 0,
  
  
"rejected": 0,
  
  
"synced": 0,
  
  
"excluded": 0
  
},
  
"store_connection_id": "string",
  
"store_connection_name": "string",
  
"content_profile_id": "string",
  
"settings_overrides": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Soft-delete a project

DELETE
/api/v1/projects/{project_id}

Move a project to the trash by setting its deleted timestamp. The project can be restored later.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update a project

PATCH
/api/v1/projects/{project_id}

Partially update a project's name, settings, or store connection. Only provided fields are modified.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"name": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"store_connection_id": "string",
  
"content_profile_id": "string",
  
"settings_overrides": {
  
  
"additionalProperties": "string"
  
}
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"status": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"completed_at": "string",
  
"item_count": 0,
  
"flagged_count": 0,
  
"source_count": 0,
  
"deleted_at": "string",
  
"status_counts": {
  
  
"pending": 0,
  
  
"generated": 0,
  
  
"flagged": 0,
  
  
"approved": 0,
  
  
"rejected": 0,
  
  
"synced": 0,
  
  
"excluded": 0
  
},
  
"store_connection_id": "string",
  
"store_connection_name": "string",
  
"content_profile_id": "string",
  
"settings_overrides": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Restore a deleted project

POST
/api/v1/projects/{project_id}/restore

Restore a previously soft-deleted project from the trash, clearing its deleted timestamp.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"status": "string",
  
"settings": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"completed_at": "string",
  
"item_count": 0,
  
"flagged_count": 0,
  
"source_count": 0,
  
"deleted_at": "string",
  
"status_counts": {
  
  
"pending": 0,
  
  
"generated": 0,
  
  
"flagged": 0,
  
  
"approved": 0,
  
  
"rejected": 0,
  
  
"synced": 0,
  
  
"excluded": 0
  
},
  
"store_connection_id": "string",
  
"store_connection_name": "string",
  
"content_profile_id": "string",
  
"settings_overrides": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Truncate project data

POST
/api/v1/projects/{project_id}/truncate

Delete all content items and data sources from a project while preserving settings. Resets the project to draft status for fresh re-import. Blocked if jobs are currently running.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Permanently delete a project

DELETE
/api/v1/projects/{project_id}/permanent

Permanently remove a soft-deleted project and all its associated data. This action cannot be undone.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Generate content for items

POST
/api/v1/projects/{project_id}/generate

Generates AI content for all pending non-variant items in the project using the specified provider, model, and AI settings. Records token usage and deducts XCT balance.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Stream content generation progress

POST
/api/v1/projects/{project_id}/generate/stream

Generates AI content for pending or selected items via SSE streaming, sending real-time progress events. Uses the specified provider, model, and AI settings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Stream full regeneration progress

POST
/api/v1/projects/{project_id}/regenerate/stream

Resets all items to pending and streams AI content regeneration progress via SSE using the specified provider, model, and AI settings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Stream rejected items regeneration

POST
/api/v1/projects/{project_id}/regenerate-rejected/stream

Resets only rejected items to pending and streams AI content regeneration progress via SSE using the specified provider, model, and AI settings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Regenerate all project content

POST
/api/v1/projects/{project_id}/regenerate

Resets all items to pending and regenerates AI content using the specified provider, model, and AI settings. Records token usage and deducts XCT balance.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Regenerate rejected items only

POST
/api/v1/projects/{project_id}/regenerate-rejected

Resets only rejected items to pending and regenerates AI content using the specified provider, model, and AI settings. Records token usage and deducts XCT balance.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


List project content items

GET
/api/v1/projects/{project_id}/items

Returns all content items for the project, optionally filtered by status or data source.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Query Parameters

status
Type
string
source_id
Type
string
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"external_id": "string",
  
  
"item_type": "string",
  
  
"source_data": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"generated_content": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"confidence_score": 0,
  
  
"status": "string",
  
  
"ai_model_used": "string",
  
  
"created_at": "string",
  
  
"data_source_id": "string",
  
  
"data_source_name": "string",
  
  
"metadata": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"excluded_at": "string",
  
  
"generation_metadata": {
  
  
  
"additionalProperties": "string"
  
  
}
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Batch update item statuses

PATCH
/api/v1/projects/{project_id}/items/batch

Updates the status of multiple content items at once within the project.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"item_ids": [
  
  
"string"
  
],
  
"status": "string"
}

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"external_id": "string",
  
  
"item_type": "string",
  
  
"source_data": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"generated_content": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"confidence_score": 0,
  
  
"status": "string",
  
  
"ai_model_used": "string",
  
  
"created_at": "string",
  
  
"data_source_id": "string",
  
  
"data_source_name": "string",
  
  
"metadata": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"excluded_at": "string",
  
  
"generation_metadata": {
  
  
  
"additionalProperties": "string"
  
  
}
  
}
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Exclude items

POST
/api/v1/projects/{project_id}/items/exclude

Soft-deletes items by setting excluded_at. For Magento configurable parents, cascades to children.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Restore excluded items

POST
/api/v1/projects/{project_id}/items/restore

Restores excluded items by clearing excluded_at. For Magento configurable parents, cascades to children.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Update a content item

PATCH
/api/v1/projects/{project_id}/items/{item_id}

Updates the generated content or status of a single content item.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
item_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"generated_content": {
  
  
"additionalProperties": "string"
  
},
  
"status": "string",
  
"metadata": {
  
  
"additionalProperties": "string"
  
}
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"external_id": "string",
  
"item_type": "string",
  
"source_data": {
  
  
"additionalProperties": "string"
  
},
  
"generated_content": {
  
  
"additionalProperties": "string"
  
},
  
"confidence_score": 0,
  
"status": "string",
  
"ai_model_used": "string",
  
"created_at": "string",
  
"data_source_id": "string",
  
"data_source_name": "string",
  
"metadata": {
  
  
"additionalProperties": "string"
  
},
  
"excluded_at": "string",
  
"generation_metadata": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Regenerate a single item

POST
/api/v1/projects/{project_id}/items/{item_id}/regenerate

Regenerates AI content for a single content item using the specified provider, model, and AI settings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
item_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content_type": "string",
  
"content_variant": "short",
  
"language": "en",
  
"tone": "professional",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"translate_name": true,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false,
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"external_id": "string",
  
"item_type": "string",
  
"source_data": {
  
  
"additionalProperties": "string"
  
},
  
"generated_content": {
  
  
"additionalProperties": "string"
  
},
  
"confidence_score": 0,
  
"status": "string",
  
"ai_model_used": "string",
  
"created_at": "string",
  
"data_source_id": "string",
  
"data_source_name": "string",
  
"metadata": {
  
  
"additionalProperties": "string"
  
},
  
"excluded_at": "string",
  
"generation_metadata": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Export project content CSV

GET
/api/v1/projects/{project_id}/export

Exports generated content as a CSV file, with platform-specific formatting for Magento. Supports filtering by status, data source, and search query.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Query Parameters

status_filter
Type
string
Default
"approved"
source_id
Type
string
Format
"uuid"
search
Type
string

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


usage

Usage records and consumption analytics


List usage records

GET
/api/v1/usage

Returns AI usage records for the organization, optionally filtered by start and end date.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

start_date
Type
string
Format
"date-time"
end_date
Type
string
Format
"date-time"

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"ai_provider": "string",
  
  
"ai_model": "string",
  
  
"content_type": "string",
  
  
"input_tokens": 0,
  
  
"output_tokens": 0,
  
  
"credits_used": 0,
  
  
"cost_estimate": 0,
  
  
"created_at": "string"
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Get usage summary

GET
/api/v1/usage/summary

Aggregates token usage and estimated cost over the specified number of days, broken down by AI provider and content type.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

days
Type
integer
Default
30

Responses

Successful Response

application/json
JSON
{
  
"total_input_tokens": 0,
  
"total_output_tokens": 0,
  
"total_cost": 0,
  
"by_provider": {
  
  
"additionalProperties": "string"
  
},
  
"by_content_type": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value

Samples


List API keys

GET
/api/v1/api-keys

Returns all API keys for the organization, ordered by most recent first. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"name": "string",
  
  
"is_active": true,
  
  
"last_used_at": "string",
  
  
"created_at": "string"
  
}
]

Playground

Server
Authorization

Samples


Create API key

POST
/api/v1/api-keys

Generates a new API key for the organization. The raw key is returned only once in the response and cannot be retrieved again. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"key": "string",
  
"created_at": "string"
}

Playground

Server
Authorization
Body

Samples


Delete API key

DELETE
/api/v1/api-keys/{key_id}

Permanently deletes an API key, immediately revoking access for any client using it. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

key_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Deactivate API key

PATCH
/api/v1/api-keys/{key_id}/deactivate

Deactivates an API key without deleting it, disabling authentication for any client using it. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

key_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"is_active": true,
  
"last_used_at": "string",
  
"created_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


List project data sources

GET
/api/v1/projects/{project_id}/sources

Retrieves all data sources for the specified project, ordered by creation date descending, along with a total item count across all sources.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"sources": [
  
  
{
  
  
  
"id": "string",
  
  
  
"project_id": "string",
  
  
  
"type": "string",
  
  
  
"name": "string",
  
  
  
"config": {
  
  
  
  
"additionalProperties": "string"
  
  
  
},
  
  
  
"status": "string",
  
  
  
"item_count": 0,
  
  
  
"last_synced_at": "string",
  
  
  
"error_message": "string",
  
  
  
"created_at": "string"
  
  
}
  
],
  
"total_items": 0
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Detect CSV column mappings

POST
/api/v1/projects/{project_id}/sources/detect-columns

Analyzes CSV headers and sample data to auto-detect column mappings for the project's platform.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

multipart/form-data
object

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Upload file data source

POST
/api/v1/projects/{project_id}/sources/file

Parses an uploaded file using the project's platform adapter, stores the original file and a snapshot in S3, and creates content items for each parsed product.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

multipart/form-data
object
string |null

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"type": "string",
  
"name": "string",
  
"config": {
  
  
"additionalProperties": "string"
  
},
  
"status": "string",
  
"item_count": 0,
  
"last_synced_at": "string",
  
"error_message": "string",
  
"created_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Create manual data source

POST
/api/v1/projects/{project_id}/sources/manual

Creates an empty manual-entry data source for the specified project, ready to have content items added to it individually.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/x-www-form-urlencoded
object
Default"Manual Entry"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"type": "string",
  
"name": "string",
  
"config": {
  
  
"additionalProperties": "string"
  
},
  
"status": "string",
  
"item_count": 0,
  
"last_synced_at": "string",
  
"error_message": "string",
  
"created_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Delete a data source

DELETE
/api/v1/projects/{project_id}/sources/{source_id}

Deletes the specified data source and all of its associated content items via cascade.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
source_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Export source as CSV

GET
/api/v1/projects/{project_id}/sources/{source_id}/export

Generates a CSV export for a file-based data source by merging generated content back into the original file format using the project's platform adapter.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
source_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


store-connections


List store connections

GET
/api/v1/store-connections

Returns all store connections belonging to the current user's organization, including the number of projects linked to each connection.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"name": "string",
  
  
"platform": "string",
  
  
"base_url": "string",
  
  
"media_base_url": "string",
  
  
"status": "string",
  
  
"has_credentials": true,
  
  
"last_connected_at": "string",
  
  
"created_at": "string",
  
  
"updated_at": "string",
  
  
"project_count": 0
  
}
]

Playground

Server
Authorization

Samples


Create store connection

POST
/api/v1/store-connections

Creates a new store connection for the organization. Accepts platform-specific credentials (e.g., access token for Magento/Shopify, consumer key/secret for WooCommerce).

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "string",
  
"platform": "string",
  
"base_url": "string",
  
"media_base_url": "string",
  
"access_token": "string",
  
"consumer_key": "string",
  
"consumer_secret": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"base_url": "string",
  
"media_base_url": "string",
  
"status": "string",
  
"has_credentials": true,
  
"last_connected_at": "string",
  
"created_at": "string",
  
"updated_at": "string",
  
"project_count": 0
}

Playground

Server
Authorization
Body

Samples


Get store connection

GET
/api/v1/store-connections/{connection_id}

Retrieves a single store connection by ID, including the count of projects currently linked to it.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"base_url": "string",
  
"media_base_url": "string",
  
"status": "string",
  
"has_credentials": true,
  
"last_connected_at": "string",
  
"created_at": "string",
  
"updated_at": "string",
  
"project_count": 0
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Delete store connection

DELETE
/api/v1/store-connections/{connection_id}

Permanently deletes a store connection. Fails if any projects are still linked to it.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update store connection

PATCH
/api/v1/store-connections/{connection_id}

Partially updates a store connection's name, URL, credentials, or status. Only provided fields are changed.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"name": "string",
  
"base_url": "string",
  
"media_base_url": "string",
  
"access_token": "string",
  
"consumer_key": "string",
  
"consumer_secret": "string",
  
"status": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"platform": "string",
  
"base_url": "string",
  
"media_base_url": "string",
  
"status": "string",
  
"has_credentials": true,
  
"last_connected_at": "string",
  
"created_at": "string",
  
"updated_at": "string",
  
"project_count": 0
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Test store connection

POST
/api/v1/store-connections/{connection_id}/test

Tests connectivity to the external store by making a live API call. Updates the connection status to active on success or error on failure.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"success": true,
  
"message": "string",
  
"store_name": "string",
  
"media_base_url": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


shopify


Shopify Install Url

GET
/api/v1/shopify/install-url

Return the Shopify-hosted install URL for the XC Scribe app.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


Shopify Connect

GET
/api/v1/shopify/connect

Generate Shopify OAuth authorisation URL (used when shop domain is known).

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

shop*

Shopify store domain, e.g. mystore.myshopify.com

Type
string
Required
connection_type

Connection type: store or blog

Type
string
Default
"store"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Shopify Callback

GET
/api/v1/shopify/callback

Handle Shopify OAuth callback — exchange code for token, create connection.

Parameters

Query Parameters

code*
Type
string
Required
shop*
Type
string
Required
state
Type
string

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Variables
Key
Value

Samples


Shopify Finalize

POST
/api/v1/shopify/finalize

Finalize a Shopify-initiated install.

Called by the frontend when the OAuth callback had no state (install
started from Shopify's side). The frontend passes the shop and code
from the query params it received.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


Shopify Uninstalled Webhook

POST
/api/v1/shopify/webhooks/uninstalled

Handle Shopify APP_UNINSTALLED webhook — mark connection as inactive.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Shopify Customers Data Request

POST
/api/v1/shopify/webhooks/customers/data_request

GDPR: merchant requests customer data. We don't store customer data.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Shopify Customers Redact

POST
/api/v1/shopify/webhooks/customers/redact

GDPR: merchant requests customer data erasure. We don't store customer data.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Shopify Shop Redact

POST
/api/v1/shopify/webhooks/shop/redact

GDPR: shop data erasure after app uninstall. Delete stored credentials.

Verifies HMAC signature and erases stored credentials for the shop.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Shopify Compliance Webhook

POST
/api/v1/shopify/webhooks

Unified compliance webhook endpoint for shopify.app.toml compliance_topics.

Shopify sends all compliance webhooks to this single URI and sets the
X-Shopify-Topic header to distinguish them.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


sync


Stream sync to store

POST
/api/v1/projects/{project_id}/sync/stream

Pushes generated content to the external store via Server-Sent Events. The sync flow selects items by mode (pending, all, or selected), sends each update to the store API, records success/failure in sync history, and streams per-item progress events back to the client.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"mode": "pending",
  
"item_ids": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Sync single item

POST
/api/v1/projects/{project_id}/sync/{item_id}

Pushes a single approved item's generated content to the external store. The sync flow updates the product via the store API, marks the item as synced, and records the result in sync history.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
item_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"success": true,
  
"message": "string",
  
"synced_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Sync all approved items

POST
/api/v1/projects/{project_id}/sync

Pushes all approved items' generated content to the external store in a single batch. The sync flow iterates over every approved item, updates each product via the store API, and returns a summary of successes and failures.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"synced_count": 0,
  
"failed_count": 0,
  
"failed_items": [
  
  
{
  
  
  
"additionalProperties": "string"
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get item sync history

GET
/api/v1/projects/{project_id}/sync/{item_id}/history

Returns the chronological sync history for a specific content item, including timestamps, success/failure status, and error messages for each sync attempt.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
item_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"item_id": "string",
  
"item_external_id": "string",
  
"history": [
  
  
{
  
  
  
"id": "string",
  
  
  
"content_item_id": "string",
  
  
  
"store_connection_id": "string",
  
  
  
"store_connection_name": "string",
  
  
  
"synced_at": "string",
  
  
  
"success": true,
  
  
  
"error_message": "string"
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


jobs


List project jobs

GET
/api/v1/projects/{project_id}/jobs

Returns up to 50 most recent jobs for a project, optionally filtered by status.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Query Parameters

status

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"job_type": "string",
  
  
"status": "string",
  
  
"progress_current": 0,
  
  
"progress_total": 0,
  
  
"created_at": "string",
  
  
"started_at": "string",
  
  
"completed_at": "string",
  
  
"error": "string"
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Create background job

POST
/api/v1/projects/{project_id}/jobs

Queues a new background job (generation or sync) for a project. Validates XCT balance for generation jobs and store connection for sync jobs, and rejects the request if a conflicting job is already active.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"job_type": "string",
  
"payload": {
  
  
"additionalProperties": "string"
  
}
}

Responses

Successful Response

application/json
JSON
{
  
"job_id": "string",
  
"status": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Get job status

GET
/api/v1/jobs/{job_id}

Returns the current status and progress of a background job. Used for polling job completion.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

job_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"job_type": "string",
  
"status": "string",
  
"progress_current": 0,
  
"progress_total": 0,
  
"progress_detail": [
  
],
  
"result": {
  
  
"additionalProperties": "string"
  
},
  
"error": "string",
  
"created_at": "string",
  
"started_at": "string",
  
"completed_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Cancel a job

POST
/api/v1/jobs/{job_id}/cancel

Cancels a queued or running job. Jobs that have already completed or failed cannot be cancelled.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

job_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"job_type": "string",
  
"status": "string",
  
"progress_current": 0,
  
"progress_total": 0,
  
"progress_detail": [
  
],
  
"result": {
  
  
"additionalProperties": "string"
  
},
  
"error": "string",
  
"created_at": "string",
  
"started_at": "string",
  
"completed_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


billing


Get XCT balance

GET
/api/v1/billing/balance

Returns the organization's current XCT balance broken down by subscription and top-up balances, along with the active subscription tier and overage settings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"subscription_balance": "string",
  
"topup_balance": "string",
  
"total_balance": "string",
  
"subscription_tier": "string",
  
"overage_enabled": true,
  
"token_rate_multiplier": "string"
}

Playground

Server
Authorization

Samples


List XCT transactions

GET
/api/v1/billing/transactions

Returns a paginated list of all XCT token transactions for the organization, ordered by most recent first.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

page
Type
integer
Minimum
1
Default
1
page_size
Type
integer
Maximum
100
Minimum
1
Default
20

Responses

Successful Response

application/json
JSON
{
  
"transactions": [
  
  
{
  
  
  
"id": "string",
  
  
  
"transaction_type": "string",
  
  
  
"amount": "string",
  
  
  
"balance_type": "string",
  
  
  
"description": "string",
  
  
  
"created_at": "string",
  
  
  
"created_by": "string"
  
  
}
  
],
  
"total": 0,
  
"page": 0,
  
"page_size": 0
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get billing usage summary

GET
/api/v1/billing/usage-summary

Aggregates XCT token consumption for the specified period, grouped by model tier and AI provider.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

days
Type
integer
Maximum
365
Minimum
1
Default
30

Responses

Successful Response

application/json
JSON
{
  
"period_start": "string",
  
"period_end": "string",
  
"total_xct_used": "string",
  
"by_tier": [
  
  
{
  
  
  
"tier": "string",
  
  
  
"request_count": 0,
  
  
  
"total_tokens": 0,
  
  
  
"xct_used": "string"
  
  
}
  
],
  
"by_provider": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value

Samples


List model tier pricing

GET
/api/v1/billing/model-tiers

Returns all available model tiers with their XCT pricing multipliers and the AI models assigned to each tier.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"tiers": [
  
  
{
  
  
  
"tier": "string",
  
  
  
"multiplier": 0,
  
  
  
"models": {
  
  
  
  
"additionalProperties": [
  
  
  
  
  
{
  
  
  
  
  
  
"model_id": "string",
  
  
  
  
  
  
"display_name": "string"
  
  
  
  
  
}
  
  
  
  
]
  
  
  
}
  
  
}
  
],
  
"subscription_tier": "string"
}

Playground

Server
Authorization

Samples


Add XCT top-up

POST
/api/v1/billing/topup

Adds a one-time XCT top-up to the organization's top-up balance. Top-up tokens do not expire on billing cycle reset. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"amount": 0,
  
"description": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"transaction_type": "string",
  
"amount": "string",
  
"balance_type": "string",
  
"description": "string",
  
"created_at": "string",
  
"created_by": "string"
}

Playground

Server
Authorization
Body

Samples


Get subscription info

GET
/api/v1/billing/subscription

Returns subscription status and payment info for the organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"subscription_tier": "string",
  
"payment_subscription_status": "string",
  
"subscription_period_end": "string",
  
"payment_method": "string",
  
"payment_customer_id": "string",
  
"billing_period": "string",
  
"pending_subscription_tier": "string",
  
"pending_billing_period": "string"
}

Playground

Server
Authorization

Samples


Change subscription tier

PATCH
/api/v1/billing/subscription

Updates the organization's subscription tier and optionally allocates the new tier's monthly XCT tokens immediately. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"tier": "string",
  
"allocate_immediately": false
}

Responses

Successful Response

application/json
JSON
{
  
"subscription_balance": "string",
  
"topup_balance": "string",
  
"total_balance": "string",
  
"subscription_tier": "string",
  
"overage_enabled": true,
  
"token_rate_multiplier": "string"
}

Playground

Server
Authorization
Body

Samples


Reset billing cycle

POST
/api/v1/billing/reset-cycle

Manually triggers a subscription billing cycle reset. Expires remaining subscription balance and allocates a fresh monthly XCT allotment. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"subscription_balance": "string",
  
"topup_balance": "string",
  
"total_balance": "string",
  
"subscription_tier": "string",
  
"overage_enabled": true,
  
"token_rate_multiplier": "string"
}

Playground

Server
Authorization

Samples


Update billing settings

PATCH
/api/v1/billing/settings

Updates billing configuration such as overage enablement and the token rate multiplier for the organization. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"overage_enabled": true,
  
"token_rate_multiplier": 0
}

Responses

Successful Response

application/json
JSON
{
  
"subscription_balance": "string",
  
"topup_balance": "string",
  
"total_balance": "string",
  
"subscription_tier": "string",
  
"overage_enabled": true,
  
"token_rate_multiplier": "string"
}

Playground

Server
Authorization
Body

Samples


Adjust XCT balance

POST
/api/v1/billing/adjustment

Creates a manual credit or debit adjustment on the organization's subscription or top-up balance. Cannot adjust overage balance directly. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"amount": 0,
  
"balance_type": "string",
  
"description": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"transaction_type": "string",
  
"amount": "string",
  
"balance_type": "string",
  
"description": "string",
  
"created_at": "string",
  
"created_by": "string"
}

Playground

Server
Authorization
Body

Samples


Create subscription checkout

POST
/api/v1/billing/checkout

Creates a checkout for new subscriptions, or updates an existing subscription for plan changes. Returns checkout_url (Dodo) and/or transaction_id (Paddle) depending on the provider.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"tier": "string",
  
"billing_period": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"checkout_url": "string",
  
"transaction_id": "string",
  
"client_token": "string",
  
"plan_changed": false,
  
"scheduled": false
}

Playground

Server
Authorization
Body

Samples


Create top-up checkout

POST
/api/v1/billing/topup-checkout

Creates a checkout for purchasing XCT token top-ups.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"packs": 0
}

Responses

Successful Response

application/json
JSON
{
  
"checkout_url": "string",
  
"transaction_id": "string",
  
"client_token": "string"
}

Playground

Server
Authorization
Body

Samples


Get customer portal URL

GET
/api/v1/billing/portal

Returns the customer portal URL for managing payment methods and invoices.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"portal_url": "string",
  
"message": "string"
}

Playground

Server
Authorization

Samples


Cancel subscription

POST
/api/v1/billing/cancel-subscription

Cancels the current subscription at the end of the billing period.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"status": "string",
  
"effective_at": "string",
  
"message": "string"
}

Playground

Server
Authorization

Samples


Get payment history

GET
/api/v1/billing/payment-history

Returns processed payment events for the current organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


Download Dodo invoice PDF

GET
/api/v1/billing/invoices/dodo/{payment_id}/pdf

Proxies the invoice PDF download from Dodo Payments.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

payment_id*
Type
string
Required

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Get subscription info (legacy)

GET
/api/v1/billing/paddle/subscription

Legacy endpoint. Returns subscription status with paddle_* field names.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"subscription_tier": "string",
  
"paddle_subscription_status": "string",
  
"subscription_period_end": "string",
  
"payment_method": "string",
  
"paddle_customer_id": "string"
}

Playground

Server
Authorization

Samples


Create subscription checkout (legacy)

POST
/api/v1/billing/paddle/checkout

Legacy endpoint. Delegates to /billing/checkout.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"tier": "string",
  
"billing_period": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"checkout_url": "string",
  
"transaction_id": "string",
  
"client_token": "string",
  
"plan_changed": false,
  
"scheduled": false
}

Playground

Server
Authorization
Body

Samples


Create top-up checkout (legacy)

POST
/api/v1/billing/paddle/topup-checkout

Legacy endpoint. Delegates to /billing/topup-checkout.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"packs": 0
}

Responses

Successful Response

application/json
JSON
{
  
"checkout_url": "string",
  
"transaction_id": "string",
  
"client_token": "string"
}

Playground

Server
Authorization
Body

Samples


Get customer portal URL (legacy)

GET
/api/v1/billing/paddle/portal

Legacy endpoint. Delegates to /billing/portal.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"portal_url": "string",
  
"message": "string"
}

Playground

Server
Authorization

Samples


Self-service plan upgrade

POST
/api/v1/billing/invoices/upgrade

Create a subscription invoice for bank transfer payment. Only for bank transfer customers.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"tier": "string",
  
"billing_period": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"invoice_number": "string",
  
"invoice_type": "string",
  
"amount": "string",
  
"currency": "string",
  
"description": "string",
  
"tier": "string",
  
"billing_period": "string",
  
"xct_amount": "string",
  
"status": "string",
  
"due_date": "string",
  
"paid_at": "string",
  
"confirmed_by": "string",
  
"created_at": "string",
  
"exchange_rate": "string",
  
"eur_amount": "string",
  
"buyer_company_name": "string",
  
"buyer_pib": "string",
  
"buyer_address": "string",
  
"qr_code_data": "string"
}

Playground

Server
Authorization
Body

Samples


Self-service XCT top-up

POST
/api/v1/billing/invoices/topup

Create a top-up invoice for bank transfer payment.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"xct_packs": 0
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"invoice_number": "string",
  
"invoice_type": "string",
  
"amount": "string",
  
"currency": "string",
  
"description": "string",
  
"tier": "string",
  
"billing_period": "string",
  
"xct_amount": "string",
  
"status": "string",
  
"due_date": "string",
  
"paid_at": "string",
  
"confirmed_by": "string",
  
"created_at": "string",
  
"exchange_rate": "string",
  
"eur_amount": "string",
  
"buyer_company_name": "string",
  
"buyer_pib": "string",
  
"buyer_address": "string",
  
"qr_code_data": "string"
}

Playground

Server
Authorization
Body

Samples


Download invoice PDF

GET
/api/v1/billing/invoices/{invoice_id}/pdf

Download the invoice as a PDF. Available to the invoice's org members and super admins.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

invoice_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


List My Invoices

GET
/api/v1/billing/invoices

List invoices for the current user's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"organization_id": "string",
  
  
"invoice_number": "string",
  
  
"invoice_type": "string",
  
  
"amount": "string",
  
  
"currency": "string",
  
  
"description": "string",
  
  
"tier": "string",
  
  
"billing_period": "string",
  
  
"xct_amount": "string",
  
  
"status": "string",
  
  
"due_date": "string",
  
  
"paid_at": "string",
  
  
"confirmed_by": "string",
  
  
"created_at": "string",
  
  
"exchange_rate": "string",
  
  
"eur_amount": "string",
  
  
"buyer_company_name": "string",
  
  
"buyer_pib": "string",
  
  
"buyer_address": "string",
  
  
"qr_code_data": "string"
  
}
]

Playground

Server
Authorization

Samples


invitations


Validate invitation token

GET
/api/v1/invitations/validate

Validates an invitation token and returns the invitation details. This is the first step in the invitation lifecycle when a user opens an invite link, before they accept.

Parameters

Query Parameters

token*
Type
string
Required

Responses

Successful Response

application/json
JSON
{
  
"email": "string",
  
"organization_name": "string",
  
"role": "string",
  
"is_valid": true
}

Playground

Server
Variables
Key
Value

Samples


Accept invitation

POST
/api/v1/invitations/accept

Completes the invitation lifecycle by accepting a pending invitation. Creates a new user account in the organization and marks the invitation as accepted.

Request Body

application/json
JSON
{
  
"token": "string",
  
"password": "string",
  
"first_name": "string",
  
"last_name": "string"
}

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Body

Samples


List invitations

GET
/api/v1/invitations

Returns all invitations for the organization across all lifecycle states (pending, accepted, revoked), ordered by most recent first. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"email": "string",
  
  
"role": "string",
  
  
"status": "string",
  
  
"invited_by_email": "string",
  
  
"created_at": "string",
  
  
"expires_at": "string",
  
  
"accepted_at": "string"
  
}
]

Playground

Server
Authorization

Samples


Create invitation

POST
/api/v1/invitations

Begins the invitation lifecycle by creating a new invitation and sending an email to the invitee. The invitation remains pending until it is accepted, revoked, or expires after 7 days.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"email": "string",
  
"role": "member"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"role": "string",
  
"status": "string",
  
"invited_by_email": "string",
  
"created_at": "string",
  
"expires_at": "string",
  
"accepted_at": "string"
}

Playground

Server
Authorization
Body

Samples


Resend invitation email

POST
/api/v1/invitations/{invitation_id}/resend

Generates a fresh token, extends the expiry, and resends the invitation email. Only pending invitations in the lifecycle can be resent. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

invitation_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"role": "string",
  
"status": "string",
  
"invited_by_email": "string",
  
"created_at": "string",
  
"expires_at": "string",
  
"accepted_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Revoke invitation

POST
/api/v1/invitations/{invitation_id}/revoke

Terminates the invitation lifecycle by marking a pending invitation as revoked, preventing it from being accepted. Admin only.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

invitation_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"email": "string",
  
"role": "string",
  
"status": "string",
  
"invited_by_email": "string",
  
"created_at": "string",
  
"expires_at": "string",
  
"accepted_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


store-import


Get available import filters

GET
/api/v1/projects/{project_id}/import/filters

Fetches filter options (collections, categories, statuses, etc.) from the project's connected store.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"platform": "string",
  
"filters": {
  
  
"additionalProperties": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"title": "string"
  
  
  
}
  
  
]
  
}
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Preview import count

POST
/api/v1/projects/{project_id}/import/preview

Counts products matching the given filters without fetching full data. Returns count, estimated batches, and estimated time.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"filters": {
  
  
"additionalProperties": "string"
  
}
}

Responses

Successful Response

application/json
JSON
{
  
"count": 0,
  
"batches": 0,
  
"estimated_time_seconds": 0
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Start store import

POST
/api/v1/projects/{project_id}/import/execute

Creates a background job to import products matching the filters from the connected store.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"filters": {
  
  
"additionalProperties": "string"
  
}
}

Responses

Successful Response

application/json
JSON
{
  
"job_id": "string",
  
"estimated_batches": 0
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


blog


List blog posts

GET
/api/v1/projects/{project_id}/blog-posts

Returns all blog posts for a project, optionally filtered by status.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Query Parameters

status

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"title": "string",
  
  
"status": "string",
  
  
"post_type": "string",
  
  
"topic": "string",
  
  
"featured_image_url": "string",
  
  
"wp_post_id": 0,
  
  
"store_connection_id": "string",
  
  
"external_post_id": "string",
  
  
"published_url": "string",
  
  
"published_at": "string",
  
  
"scheduled_at": "string",
  
  
"created_at": "string",
  
  
"updated_at": "string"
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Create blog post

POST
/api/v1/projects/{project_id}/blog-posts

Creates a new blog post and triggers AI generation via a background job.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"post_type": "string",
  
"topic": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"wp_category_ids": [
  
  
0
  
],
  
"template_id": "string",
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"selected_images": [
  
  
{
  
  
  
"url": "string",
  
  
  
"product_name": "string",
  
  
  
"alt_text": "string"
  
  
}
  
],
  
"store_connection_id": "string",
  
"shopify_blog_id": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Regenerate blog post

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/regenerate

Re-runs AI generation for an existing blog post, creating a new background job.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get blog post

GET
/api/v1/projects/{project_id}/blog-posts/{post_id}

Returns a single blog post with full content.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Delete blog post

DELETE
/api/v1/projects/{project_id}/blog-posts/{post_id}

Permanently deletes a blog post and its associated images.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update blog post

PATCH
/api/v1/projects/{project_id}/blog-posts/{post_id}

Partially updates a blog post's content, title, status, SEO metadata, etc.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_category_ids": [
  
  
0
  
],
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
}
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Publish blog post to WordPress

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/publish

Publishes a blog post to WordPress via the specified blog connection.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"connection_id": "string",
  
"store_connection_id": "string",
  
"wp_status": "publish",
  
"shopify_published": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Unpublish blog post from WordPress

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/unpublish

Sets the WordPress post to draft status and updates the local post status.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get SEO score

GET
/api/v1/projects/{project_id}/blog-posts/{post_id}/seo-score

Analyzes the blog post for SEO quality and returns a score with recommendations.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Query Parameters

focus_keyword

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Schedule blog post

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/schedule

Schedules a blog post for future publication at the specified time.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"scheduled_at": "string",
  
"connection_id": "string",
  
"store_connection_id": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Unschedule blog post

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/unschedule

Cancels the scheduled publication and reverts to draft.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"organization_id": "string",
  
"title": "string",
  
"content": "string",
  
"excerpt": "string",
  
"slug": "string",
  
"status": "string",
  
"post_type": "string",
  
"topic": "string",
  
"featured_image_url": "string",
  
"seo_meta": {
  
  
"additionalProperties": "string"
  
},
  
"wp_post_id": 0,
  
"wp_category_ids": [
  
  
0
  
],
  
"published_url": "string",
  
"published_at": "string",
  
"scheduled_at": "string",
  
"blog_connection_id": "string",
  
"store_connection_id": "string",
  
"external_post_id": "string",
  
"external_blog_id": "string",
  
"source_item_ids": [
  
  
"string"
  
],
  
"product_links": {
  
  
"additionalProperties": "string"
  
},
  
"ai_settings": {
  
  
"additionalProperties": "string"
  
},
  
"template_id": "string",
  
"analytics": {
  
  
"additionalProperties": "string"
  
},
  
"job_id": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Blog analytics summary

GET
/api/v1/projects/{project_id}/blog-posts/analytics

Returns blog post statistics for a project.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


List blog post images

GET
/api/v1/projects/{project_id}/blog-posts/{post_id}/images

Returns all images attached to a blog post.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"blog_post_id": "string",
  
  
"s3_key": "string",
  
  
"original_url": "string",
  
  
"source": "string",
  
  
"alt_text": "string",
  
  
"width": 0,
  
  
"height": 0,
  
  
"file_size": 0,
  
  
"variants": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"created_at": "string",
  
  
"updated_at": "string"
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Add image from stock photo

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/images/from-stock

Downloads a stock photo, optimizes it, uploads to S3, and attaches to the blog post.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"photo_url": "string",
  
"alt_text": "string",
  
"photographer": "string",
  
"original_url": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"blog_post_id": "string",
  
"s3_key": "string",
  
"original_url": "string",
  
"source": "string",
  
"alt_text": "string",
  
"width": 0,
  
"height": 0,
  
"file_size": 0,
  
"variants": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Upload image

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/images/upload

Upload an image file, optimize it, and attach to the blog post.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Query Parameters

alt_text

Request Body

multipart/form-data
object

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"blog_post_id": "string",
  
"s3_key": "string",
  
"original_url": "string",
  
"source": "string",
  
"alt_text": "string",
  
"width": 0,
  
"height": 0,
  
"file_size": 0,
  
"variants": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Generate image with AI

POST
/api/v1/projects/{project_id}/blog-posts/{post_id}/images/ai-generate

Generates an image using DALL-E, optimizes it, and attaches to the blog post.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"prompt": "string",
  
"size": "1024x1024",
  
"quality": "standard",
  
"style": "natural"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"blog_post_id": "string",
  
"s3_key": "string",
  
"original_url": "string",
  
"source": "string",
  
"alt_text": "string",
  
"width": 0,
  
"height": 0,
  
"file_size": 0,
  
"variants": {
  
  
"additionalProperties": "string"
  
},
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Delete blog image

DELETE
/api/v1/projects/{project_id}/blog-posts/{post_id}/images/{image_id}

Deletes a blog image and its S3 files.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

project_id*
Type
string
Required
Format
"uuid"
post_id*
Type
string
Required
Format
"uuid"
image_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Search stock photos

GET
/api/v1/stock-photos/search

Search Pexels for stock photos matching a query.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

q*

Search query

Type
string
Required
Min Length
1
page
Type
integer
Minimum
1
Default
1
per_page
Type
integer
Maximum
80
Minimum
1
Default
20
orientation

Responses

Successful Response

application/json
JSON
{
  
"total_results": 0,
  
"page": 0,
  
"per_page": 0,
  
"photos": [
  
  
{
  
  
  
"id": 0,
  
  
  
"width": 0,
  
  
  
"height": 0,
  
  
  
"url": "string",
  
  
  
"photographer": "string",
  
  
  
"photographer_url": "string",
  
  
  
"avg_color": "string",
  
  
  
"alt": "string",
  
  
  
"src": {
  
  
  
  
"additionalProperties": "string"
  
  
  
}
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


List stock photo keys

GET
/api/v1/stock-photo-keys

Returns all BYOK stock photo provider keys for the organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"organization_id": "string",
  
  
"provider": "string",
  
  
"is_active": true,
  
  
"created_at": "string",
  
  
"updated_at": "string"
  
}
]

Playground

Server
Authorization

Samples


Add stock photo key

POST
/api/v1/stock-photo-keys

Add a BYOK API key for a stock photo provider.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"provider": "string",
  
"api_key": "string",
  
"is_active": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"provider": "string",
  
"is_active": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Body

Samples


Delete stock photo key

DELETE
/api/v1/stock-photo-keys/{key_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

key_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update stock photo key

PATCH
/api/v1/stock-photo-keys/{key_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

key_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"api_key": "string",
  
"is_active": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"provider": "string",
  
"is_active": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


blog-connections


List blog connections

GET
/api/v1/blog-connections

Returns all WordPress blog connections for the organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"name": "string",
  
  
"site_url": "string",
  
  
"username": "string",
  
  
"is_active": true,
  
  
"has_categories": false,
  
  
"categories_cached_at": "string",
  
  
"last_synced_at": "string",
  
  
"created_at": "string",
  
  
"updated_at": "string"
  
}
]

Playground

Server
Authorization

Samples


Create blog connection

POST
/api/v1/blog-connections

Adds a new WordPress site connection using Application Password authentication.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "string",
  
"site_url": "string",
  
"username": "string",
  
"app_password": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"site_url": "string",
  
"username": "string",
  
"is_active": true,
  
"has_categories": false,
  
"categories_cached_at": "string",
  
"last_synced_at": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Body

Samples


Get blog connection

GET
/api/v1/blog-connections/{connection_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"site_url": "string",
  
"username": "string",
  
"is_active": true,
  
"has_categories": false,
  
"categories_cached_at": "string",
  
"last_synced_at": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Delete blog connection

DELETE
/api/v1/blog-connections/{connection_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update blog connection

PATCH
/api/v1/blog-connections/{connection_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"name": "string",
  
"site_url": "string",
  
"username": "string",
  
"app_password": "string",
  
"is_active": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"name": "string",
  
"site_url": "string",
  
"username": "string",
  
"is_active": true,
  
"has_categories": false,
  
"categories_cached_at": "string",
  
"last_synced_at": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Test blog connection

POST
/api/v1/blog-connections/{connection_id}/test

Tests connectivity to the WordPress site by verifying credentials.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"success": true,
  
"message": "string",
  
"site_name": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get WordPress categories

GET
/api/v1/blog-connections/{connection_id}/categories

Fetches categories from the connected WordPress site. Results are cached.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Query Parameters

refresh
Type
boolean
Default
false

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": 0,
  
  
"name": "string",
  
  
"slug": "string",
  
  
"count": 0,
  
  
"parent": 0
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


List Shopify blogs

GET
/api/v1/blog-connections/shopify/{connection_id}/blogs

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

connection_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


blog-templates


List blog templates

GET
/api/v1/blog-templates

Returns all blog templates for the organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"organization_id": "string",
  
  
"name": "string",
  
  
"description": "string",
  
  
"tone": "string",
  
  
"structure": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"custom_instructions": "string",
  
  
"is_default": true,
  
  
"created_at": "string",
  
  
"updated_at": "string"
  
}
]

Playground

Server
Authorization

Samples


Create blog template

POST
/api/v1/blog-templates

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "string",
  
"description": "string",
  
"tone": "string",
  
"structure": {
  
  
"additionalProperties": "string"
  
},
  
"custom_instructions": "string",
  
"is_default": false
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"description": "string",
  
"tone": "string",
  
"structure": {
  
  
"additionalProperties": "string"
  
},
  
"custom_instructions": "string",
  
"is_default": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Body

Samples


Get blog template

GET
/api/v1/blog-templates/{template_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

template_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"description": "string",
  
"tone": "string",
  
"structure": {
  
  
"additionalProperties": "string"
  
},
  
"custom_instructions": "string",
  
"is_default": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Delete blog template

DELETE
/api/v1/blog-templates/{template_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

template_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Update blog template

PATCH
/api/v1/blog-templates/{template_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

template_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"name": "string",
  
"description": "string",
  
"tone": "string",
  
"structure": {
  
  
"additionalProperties": "string"
  
},
  
"custom_instructions": "string",
  
"is_default": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"description": "string",
  
"tone": "string",
  
"structure": {
  
  
"additionalProperties": "string"
  
},
  
"custom_instructions": "string",
  
"is_default": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


files


Serve file from S3

GET
/api/v1/files/{s3_key}

Streams a file from S3 storage. Images are public; other files require authentication.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

s3_key*
Type
string
Required

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization
Variables
Key
Value

Samples


gdpr


Request Data Export

POST
/api/v1/gdpr/export

Request a GDPR data export for the organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"job_id": "string",
  
"status": "string",
  
"message": "string"
}

Playground

Server
Authorization

Samples


Get Gdpr Status

GET
/api/v1/gdpr/status

Get GDPR status for the current user's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"deletion_requested_at": "string",
  
"deletion_scheduled_for": "string",
  
"active_export_job_id": "string"
}

Playground

Server
Authorization

Samples


Request Account Deletion

POST
/api/v1/gdpr/request-deletion

Request account deletion for the organization (14-day grace period).

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"password": ""
}

Responses

Successful Response

application/json
JSON
{
  
"deletion_scheduled_for": "string",
  
"message": "string"
}

Playground

Server
Authorization
Body

Samples


Cancel Account Deletion

POST
/api/v1/gdpr/cancel-deletion

Cancel a pending account deletion.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"message": "string"
}

Playground

Server
Authorization

Samples


notifications


Get unread notification count

GET
/api/v1/notifications/unread-count

Returns the count of unread notifications for the current user.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"unread_count": 0
}

Playground

Server
Authorization

Samples


List notifications

GET
/api/v1/notifications

Returns paginated notifications for the current user, ordered by most recent first.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

limit
Type
integer
Maximum
100
Minimum
1
Default
20
offset
Type
integer
Minimum
0
Default
0

Responses

Successful Response

application/json
JSON
{
  
"notifications": [
  
  
{
  
  
  
"id": "string",
  
  
  
"notification_type": "string",
  
  
  
"title": "string",
  
  
  
"body": "string",
  
  
  
"project_id": "string",
  
  
  
"job_id": "string",
  
  
  
"data": {
  
  
  
  
"additionalProperties": "string"
  
  
  
},
  
  
  
"is_read": true,
  
  
  
"created_at": "string"
  
  
}
  
],
  
"total": 0,
  
"has_more": true
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Mark notification as read

POST
/api/v1/notifications/{notification_id}/read

Marks a single notification as read.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

notification_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"notification_type": "string",
  
"title": "string",
  
"body": "string",
  
"project_id": "string",
  
"job_id": "string",
  
"data": {
  
  
"additionalProperties": "string"
  
},
  
"is_read": true,
  
"created_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Mark all notifications as read

POST
/api/v1/notifications/read-all

Marks all unread notifications for the current user as read.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Authorization

Samples


studio-requests


List studio requests

GET
/api/v1/studio-requests

Returns studio requests for the current user's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

status
limit
Type
integer
Maximum
100
Minimum
1
Default
20
offset
Type
integer
Minimum
0
Default
0

Responses

Successful Response

application/json
JSON
{
  
"requests": [
  
  
{
  
  
  
"id": "string",
  
  
  
"organization_id": "string",
  
  
  
"user_id": "string",
  
  
  
"user_name": "string",
  
  
  
"user_email": "string",
  
  
  
"description": "string",
  
  
  
"budget_range": "string",
  
  
  
"exclusivity": true,
  
  
  
"status": "string",
  
  
  
"priority": 0,
  
  
  
"comment_count": 0,
  
  
  
"latest_comment_at": "string",
  
  
  
"created_at": "string",
  
  
  
"updated_at": "string"
  
  
}
  
],
  
"total": 0,
  
"has_more": true
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Submit a new AI Studio quote request

POST
/api/v1/studio-requests

Creates a new custom AI project request for the current user's organization.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"description": "string",
  
"budget_range": "string",
  
"exclusivity": false
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"user_id": "string",
  
"user_name": "string",
  
"user_email": "string",
  
"description": "string",
  
"budget_range": "string",
  
"exclusivity": true,
  
"status": "string",
  
"priority": 0,
  
"comment_count": 0,
  
"latest_comment_at": "string",
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Body

Samples


Get studio request detail

GET
/api/v1/studio-requests/{request_id}

Returns a studio request with its public comments.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

request_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"user_id": "string",
  
"user_name": "string",
  
"user_email": "string",
  
"organization_name": "string",
  
"description": "string",
  
"budget_range": "string",
  
"exclusivity": true,
  
"status": "string",
  
"priority": 0,
  
"comments": [
  
  
{
  
  
  
"id": "string",
  
  
  
"request_id": "string",
  
  
  
"user_id": "string",
  
  
  
"user_name": "string",
  
  
  
"user_email": "string",
  
  
  
"content": "string",
  
  
  
"is_internal": true,
  
  
  
"created_at": "string"
  
  
}
  
],
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Add a comment to a studio request

POST
/api/v1/studio-requests/{request_id}/comments

Adds a customer comment to their organization's request.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

request_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"content": "string",
  
"is_internal": false
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"request_id": "string",
  
"user_id": "string",
  
"user_name": "string",
  
"user_email": "string",
  
"content": "string",
  
"is_internal": true,
  
"created_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


paddle-webhooks


Handle Paddle Webhook

POST
/api/v1/webhooks/paddle

Receive and process Paddle webhook events.

Public endpoint — no auth, verified via Paddle-Signature header.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


dodo-webhooks


Handle Dodo Webhook

POST
/api/v1/webhooks/dodo

Receive and process Dodo Payments webhook events.

Public endpoint — no auth, verified via Standard Webhooks HMAC signature.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


chatbot


Chatwoot Webhook

POST
/api/v1/chatbot/webhook

Receive Chatwoot Agent Bot webhook events.

Chatwoot posts message_created events here. We process them
asynchronously and return 200 immediately.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Chatwoot Email Webhook

POST
/api/v1/chatbot/email-webhook

Receive Chatwoot Agent Bot webhook events for email inbox.

Separate endpoint for email bot with AI disclaimer and no account tools.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Chatwoot Xtracode Webhook

POST
/api/v1/chatbot/xtracode-webhook

Receive Chatwoot webhook events for THE XTRACODE bot.

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


plugin


Plugin Status

GET
/api/v1/plugin/status

Return account info for plugin connection verification.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"plan_tier": "string",
  
"total_balance": "string",
  
"active_integrations": [
  
  
"string"
  
]
}

Playground

Server
Authorization

Samples


Plugin Generate Description

POST
/api/v1/plugin/generate-description

Generate a product description via the plugin API.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"source": "string",
  
"product_title": "string",
  
"product_category": "string",
  
"product_attributes": {
  
  
"additionalProperties": "string"
  
},
  
"product_images": [
  
  
"string"
  
],
  
"current_description": "string",
  
"language": "en",
  
"tone": "professional",
  
"custom_instructions": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"content": "string",
  
"short_description": "string",
  
"tokens_used": 0,
  
"xct_cost": "string",
  
"remaining_balance": "string"
}

Playground

Server
Authorization
Body

Samples


Plugin Generate Description Async

POST
/api/v1/plugin/generate-description-async

Start async product description generation. Returns generation_id for polling.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"source": "string",
  
"product_title": "string",
  
"product_category": "string",
  
"product_attributes": {
  
  
"additionalProperties": "string"
  
},
  
"product_images": [
  
  
"string"
  
],
  
"current_description": "string",
  
"language": "en",
  
"tone": "professional",
  
"custom_instructions": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"generation_id": "string"
}

Playground

Server
Authorization
Body

Samples


Plugin Generate Blog

POST
/api/v1/plugin/generate-blog

Generate a blog post via the plugin API.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"source": "string",
  
"topic": "string",
  
"product_title": "string",
  
"product_category": "string",
  
"language": "en",
  
"tone": "professional",
  
"custom_instructions": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"content": "string",
  
"short_description": "string",
  
"tokens_used": 0,
  
"xct_cost": "string",
  
"remaining_balance": "string"
}

Playground

Server
Authorization
Body

Samples


Plugin Generate Blog Async

POST
/api/v1/plugin/generate-blog-async

Start async blog generation. Returns generation_id for polling.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"source": "string",
  
"topic": "string",
  
"product_title": "string",
  
"product_category": "string",
  
"language": "en",
  
"tone": "professional",
  
"custom_instructions": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"generation_id": "string"
}

Playground

Server
Authorization
Body

Samples


Plugin Generation Status

GET
/api/v1/plugin/generation/{generation_id}/status

Poll generation status.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

generation_id*
Type
string
Required

Responses

Successful Response

application/json
JSON
{
  
"status": "string",
  
"content": "string",
  
"short_description": "string",
  
"tokens_used": 0,
  
"xct_cost": "string",
  
"remaining_balance": "string",
  
"error": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


content-profiles


List Profiles

GET
/api/v1/content-profiles

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"organization_id": "string",
  
  
"name": "string",
  
  
"is_default": true,
  
  
"ai_provider": "string",
  
  
"ai_model": "string",
  
  
"language": "string",
  
  
"tone": "string",
  
  
"custom_instructions": "string",
  
  
"max_short_chars": 0,
  
  
"max_long_chars": 0,
  
  
"use_html": true,
  
  
"use_html_short": true,
  
  
"generate_short": true,
  
  
"generate_long": true,
  
  
"translate_name": true,
  
  
"image_analysis_enabled": true,
  
  
"image_analysis_count": 0,
  
  
"structured_data_enabled": true,
  
  
"generate_bullet_points": true,
  
  
"generate_attributes": true,
  
  
"generate_tags": true,
  
  
"created_at": "string",
  
  
"updated_at": "string"
  
}
]

Playground

Server
Authorization

Samples


Create Profile

POST
/api/v1/content-profiles

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "string",
  
"ai_provider": "anthropic",
  
"ai_model": "string",
  
"language": "en",
  
"tone": "professional",
  
"custom_instructions": "string",
  
"max_short_chars": 200,
  
"max_long_chars": 1000,
  
"use_html": true,
  
"use_html_short": false,
  
"generate_short": true,
  
"generate_long": true,
  
"translate_name": true,
  
"image_analysis_enabled": false,
  
"image_analysis_count": 3,
  
"structured_data_enabled": false,
  
"generate_bullet_points": false,
  
"generate_attributes": false,
  
"generate_tags": false
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"is_default": true,
  
"ai_provider": "string",
  
"ai_model": "string",
  
"language": "string",
  
"tone": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 0,
  
"max_long_chars": 0,
  
"use_html": true,
  
"use_html_short": true,
  
"generate_short": true,
  
"generate_long": true,
  
"translate_name": true,
  
"image_analysis_enabled": true,
  
"image_analysis_count": 0,
  
"structured_data_enabled": true,
  
"generate_bullet_points": true,
  
"generate_attributes": true,
  
"generate_tags": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Body

Samples


Get Profile

GET
/api/v1/content-profiles/{profile_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

profile_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"is_default": true,
  
"ai_provider": "string",
  
"ai_model": "string",
  
"language": "string",
  
"tone": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 0,
  
"max_long_chars": 0,
  
"use_html": true,
  
"use_html_short": true,
  
"generate_short": true,
  
"generate_long": true,
  
"translate_name": true,
  
"image_analysis_enabled": true,
  
"image_analysis_count": 0,
  
"structured_data_enabled": true,
  
"generate_bullet_points": true,
  
"generate_attributes": true,
  
"generate_tags": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Update Profile

PUT
/api/v1/content-profiles/{profile_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

profile_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"name": "string",
  
"ai_provider": "string",
  
"ai_model": "string",
  
"language": "string",
  
"tone": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 0,
  
"max_long_chars": 0,
  
"use_html": true,
  
"use_html_short": true,
  
"generate_short": true,
  
"generate_long": true,
  
"translate_name": true,
  
"image_analysis_enabled": true,
  
"image_analysis_count": 0,
  
"structured_data_enabled": true,
  
"generate_bullet_points": true,
  
"generate_attributes": true,
  
"generate_tags": true
}

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"is_default": true,
  
"ai_provider": "string",
  
"ai_model": "string",
  
"language": "string",
  
"tone": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 0,
  
"max_long_chars": 0,
  
"use_html": true,
  
"use_html_short": true,
  
"generate_short": true,
  
"generate_long": true,
  
"translate_name": true,
  
"image_analysis_enabled": true,
  
"image_analysis_count": 0,
  
"structured_data_enabled": true,
  
"generate_bullet_points": true,
  
"generate_attributes": true,
  
"generate_tags": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Delete Profile

DELETE
/api/v1/content-profiles/{profile_id}

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

profile_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Set Default Profile

PUT
/api/v1/content-profiles/{profile_id}/set-default

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

profile_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"organization_id": "string",
  
"name": "string",
  
"is_default": true,
  
"ai_provider": "string",
  
"ai_model": "string",
  
"language": "string",
  
"tone": "string",
  
"custom_instructions": "string",
  
"max_short_chars": 0,
  
"max_long_chars": 0,
  
"use_html": true,
  
"use_html_short": true,
  
"generate_short": true,
  
"generate_long": true,
  
"translate_name": true,
  
"image_analysis_enabled": true,
  
"image_analysis_count": 0,
  
"structured_data_enabled": true,
  
"generate_bullet_points": true,
  
"generate_attributes": true,
  
"generate_tags": true,
  
"created_at": "string",
  
"updated_at": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


studio-tools

AI Studio tool catalog


List Studio Tools

GET
/api/v1/studio/tools

List all visible studio tools with unlock status for the current user.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Responses

Successful Response

application/json
JSON
{
  
"tools": [
  
  
{
  
  
  
"id": "string",
  
  
  
"slug": "string",
  
  
  
"name": "string",
  
  
  
"description": "string",
  
  
  
"icon": "string",
  
  
  
"min_tier": "string",
  
  
  
"unlocked": true
  
  
}
  
]
}

Playground

Server
Authorization

Samples


studio-store-audit


Run Audit

POST
/api/v1/studio/store-audit/run

Start a store audit for all products in a project.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"project_id": "string",
  
"enabled_checks": [
  
  
"string"
  
]
}

Responses

Successful Response

application/json
JSON
{
  
"audit_id": "string",
  
"job_id": "string",
  
"estimated_products": 0,
  
"estimated_xct": "string"
}

Playground

Server
Authorization
Body

Samples


List Audits

GET
/api/v1/studio/store-audit

List audits for the current org, optionally filtered by project.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Query Parameters

project_id

Responses

Successful Response

application/json
JSON
{
  
"audits": [
  
  
{
  
  
  
"id": "string",
  
  
  
"project_id": "string",
  
  
  
"job_id": "string",
  
  
  
"status": "string",
  
  
  
"product_count": 0,
  
  
  
"health_score": 0,
  
  
  
"summary": {
  
  
  
  
"additionalProperties": "string"
  
  
  
},
  
  
  
"xct_used": "string",
  
  
  
"created_at": "string",
  
  
  
"completed_at": "string",
  
  
  
"error": "string"
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get Audit

GET
/api/v1/studio/store-audit/{audit_id}

Get audit results including per-product findings.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

audit_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
{
  
"id": "string",
  
"project_id": "string",
  
"job_id": "string",
  
"status": "string",
  
"product_count": 0,
  
"health_score": 0,
  
"summary": {
  
  
"additionalProperties": "string"
  
},
  
"xct_used": "string",
  
"created_at": "string",
  
"completed_at": "string",
  
"error": "string",
  
"products": [
  
  
{
  
  
  
"id": "string",
  
  
  
"content_item_id": "string",
  
  
  
"product_title": "string",
  
  
  
"product_url": "string",
  
  
  
"description_word_count": 0,
  
  
  
"description_preview": "string",
  
  
  
"issues": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"scores": {
  
  
  
  
"additionalProperties": "string"
  
  
  
}
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Delete Audit

DELETE
/api/v1/studio/store-audit/{audit_id}

Delete an audit and all its product results.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

audit_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

Playground

Server
Authorization
Variables
Key
Value

Samples


Create Fix Project

POST
/api/v1/studio/store-audit/{audit_id}/create-fix-project

Create a new project pre-loaded with products that have a specific issue.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Parameters

Path Parameters

audit_id*
Type
string
Required
Format
"uuid"

Request Body

application/json
JSON
{
  
"issue_type": "string"
}

Responses

Successful Response

application/json
JSON
{
  
"project_id": "string",
  
"product_count": 0
}

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


studio-profile-builder

Content Profile Builder — AI-guided profile creation


List Templates

GET
/api/v1/studio/profile-builder/templates

List all available content profile templates.

Responses

Successful Response

application/json
JSON
[
  
{
  
  
"id": "string",
  
  
"name": "string",
  
  
"description": "string",
  
  
"icon": "string",
  
  
"defaults": {
  
  
  
"additionalProperties": "string"
  
  
}
  
}
]

Playground

Samples


Generate Instructions

POST
/api/v1/studio/profile-builder/generate

Generate AI-crafted custom instructions from a template and brand context.

Authorizations

HTTPBearer
Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"template_id": "string",
  
"brand_name": "",
  
"target_audience": "",
  
"unique_selling_points": "",
  
"tone": "professional",
  
"language": "en",
  
"things_to_avoid": ""
}

Responses

Successful Response

application/json
JSON
{
  
"custom_instructions": "string",
  
"xct_used": 0
}

Playground

Server
Authorization
Body

Samples


outreach-tracking


Track Open

GET
/api/v1/outreach/track/open/{prospect_id}.png

Tracking pixel — increments open_count on the prospect.

Parameters

Path Parameters

prospect_id*
Type
string
Required
Format
"uuid"

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Variables
Key
Value

Samples


Track Click

GET
/api/v1/outreach/track/click/{prospect_id}

Click tracker — validates URL, increments click_count, 302 redirects.

Parameters

Path Parameters

prospect_id*
Type
string
Required
Format
"uuid"

Query Parameters

url*
Type
string
Required
Max Length
2000

Responses

Successful Response

application/json
JSON
[
]

Playground

Server
Variables
Key
Value

Samples


Default

Operations


Health Check

GET
/health

Responses

Successful Response

application/json
JSON
[
]

Playground

Samples


Powered by VitePress OpenAPI