Brilliant Directories MCP
@brilliantdirectories
About Brilliant Directories MCP
Official MCP server for Brilliant Directories, the membership and directory website platform powering 50,000+ sites. Manage members, posts, leads, reviews, pages, redirects, email templates, forms, menus, tags, and more from any AI agent. Ships an OpenAPI 3.1 spec and an interact
Basic information
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"bd-api": {
"command": "npx",
"args": [
"-y",
"brilliant-directories-mcp",
"--api-key",
"YOUR_BD_API_KEY",
"--url",
"https://your-site.com"
]
}
}
}Tools
170Verify API key — Verify that your API key is valid and check rate limit status. **Returns:** `{ status: "success"|"error", message: ... }` — BD's standard response envelope. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get user field definitions — Returns available fields for user records with labels and required flags. Use this to discover custom fields. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List members/users — Get a paginated list of all members. Supports filtering by any user field and sorting. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **Enums:** `property_operator`: `=`, `LIKE`, `>`, `<`, `>=`, `<=`; `order_type`: `ASC`, `DESC`. **See also:** `getUser` (single record by ID), `searchUsers` (keyword search). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single member/user — Fetch a single user record. Read-only. **Required:** `user_id`. **See also:** `listUsers` (enumerate many), `searchUsers` (keyword search). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a new member/user — Create a new user record. Writes live data. **Required:** `email`, `password`, `subscription_id`. **Enums:** `active`: `1`=Not Active, `2`=Active, `3`=Canceled, `4`=On Hold, `5`=Past Due; `listing_type`: `Individual`=Individual Person, `Company`=Company / Organization; `verified`: `1`=Yes, `0`=No; `nationwide`: `1`=Yes, `0`=No; `auto_image_import`: `1`=Yes, `0`=No. **Parameter interactions:** - `email`, `password`, `subscription_id` are all required together — subscription_id must be an existing membership plan (discover via `listMembershipPlans`) - `profession_id` + `services` — if setting category, both can be set together for sub-categories - `auto_geocode=1` — requires "Pretty URLs with Google Maps" site setting enabled **See also:** `updateUser` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update an existing member/user — Update any user field. Supports special actions: member_tag_action + member_tags, credit_action + credit_amount, images_action, services, auto_geocode. **Required:** `user_id`. **Enums:** `active`: `1`=Not Active, `2`=Active, `3`=Canceled, `4`=On Hold, `5`=Past Due; `listing_type`: `Individual`=Individual Person, `Company`=Company / Organization. **Parameter interactions:** - `member_tag_action=1` + `member_tags` — add/modify member tags (comma-separated IDs) - `credit_action` (`add`/`deduct`/`override`) + `credit_amount` — adjust member credit balance - `images_action` — manage profile images (see enum) - `services` — format: `category=>service1,service2` - `auto_geocode=1` — requires "Pretty URLs with Google Maps" site setting enabled **See also:** `createUser` (add new), `deleteUser` (remove permanently). **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a member/user — Permanently delete a user record by ID. Destructive — cannot be undone via API. **Required:** `user_id`. **Parameter interactions:** - `delete_images=1` (optional) — also deletes associated profile/cover/logo images from storage **See also:** `updateUser` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Search members/users — Full-text search across members with category, location, and sorting options. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` (integer page number for search) to paginate large result sets. **Search params:** each resource's search endpoint exposes resource-specific query fields (e.g., `q` keyword, category IDs, location, status). See the schema properties for this operation. **Enums:** `sort`: `reviews`, `name ASC`, `name DESC`, `last_name_asc`, `last_name_desc`; `dynamic`: `1`; `output_type`: `array`, `html`. **See also:** `getUser` (single record by ID), `listUsers` (full enumeration). **Returns:** `{ status: "success", message: [...records] }`. Supports pagination fields when result set is large. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Validate user credentials — Checks if email/password are valid. Does NOT return profile data — use getUser after. **Required:** `email`, `password`. **Returns:** `{ status: "success"|"error", message: ... }` — BD's standard response envelope. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get user transactions — Fetch a single usertransactions record. Read-only. **Required:** `user_id`. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get user subscriptions — Fetch a single usersubscriptions record. Read-only. **Required:** `user_id`. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List reviews — Paginated enumeration of review records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **Enums:** `property_operator`: `=`, `LIKE`, `>`, `<`, `>=`, `<=`. **See also:** `getReview` (single record by ID), `searchReviews` (keyword search). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single review — Fetch a single review record. Read-only. **Required:** `review_id`. **See also:** `listReviews` (enumerate many), `searchReviews` (keyword search). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a review — Create a new review record. Writes live data. **Required:** `user_id`. **Parameter interactions:** - `rating_overall` accepts 1-5. `recommend` is 0/1. `review_status` determines visibility. **See also:** `updateReview` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a review — Update an existing review record by ID. Fields omitted are untouched. Writes live data. **Required:** `review_id`. **Enums:** `review_status`: `0`, `2`, `3`, `4`. **See also:** `createReview` (add new), `deleteReview` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a review — Permanently delete a review record by ID. Destructive — cannot be undone via API. **Required:** `review_id`. **See also:** `updateReview` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Search reviews — Keyword search across review records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` (integer page number for search) to paginate large result sets. **Search params:** each resource's search endpoint exposes resource-specific query fields (e.g., `q` keyword, category IDs, location, status). See the schema properties for this operation. **Enums:** `review_status`: `0`, `2`, `3`, `4`. **See also:** `getReview` (single record by ID), `listReviews` (full enumeration). **Returns:** `{ status: "success", message: [...records] }`. Supports pagination fields when result set is large. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List click records — Paginated enumeration of click records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getClick` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single click record — Fetch a single click record. Read-only. **Required:** `click_id`. **See also:** `listClicks` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a click record — Create a new click record. Writes live data. **Required:** `user_id`, `click_type`, `click_name`, `click_from`, `click_url`. **Enums:** `click_type`: `link`, `phone`, `email`; `click_from`: `profile_page`, `search_results`. **See also:** `updateClick` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a click record — Update an existing click record by ID. Fields omitted are untouched. Writes live data. **Required:** `click_id`. **See also:** `createClick` (add new), `deleteClick` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a click record — Permanently delete a click record by ID. Destructive — cannot be undone via API. **Required:** `click_id`. **See also:** `updateClick` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List leads — Paginated enumeration of lead records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getLead` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single lead — Fetch a single lead record. Read-only. **Required:** `lead_id`. **See also:** `listLeads` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a lead — Create a new lead record. Writes live data. **Required:** `lead_name`, `lead_email`, `lead_phone`, `lead_message`, `lead_location`, `top_id`. **Parameter interactions:** - `top_id` must be an existing category ID (discover via `listCategories`) - After creating, call `matchLead` to trigger automatic matching → notification emails to eligible members **See also:** `updateLead` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Auto-match lead to members — Triggers automatic matching — system finds members matching category, location, and service area, then sends notification emails. **Required:** `lead_id`. **Parameter interactions:** - Side effect: sends notification emails to ALL members matching category + location + service area. Not a dry-run — use carefully. **Returns:** `{ status: "success"|"error", message: ... }` — BD's standard response envelope. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a lead — Update an existing lead record by ID. Fields omitted are untouched. Writes live data. **Required:** `lead_id`. **Enums:** `lead_status`: `1`, `2`, `4`, `5`, `6`, `7`. **See also:** `createLead` (add new), `deleteLead` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a lead — Permanently delete a lead record by ID. Destructive — cannot be undone via API. **Required:** `lead_id`. **See also:** `updateLead` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List lead matches — Paginated enumeration of leadmatche records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single lead match — Fetch a single leadmatch record. Read-only. **Required:** `match_id`. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a lead match — Create a new leadmatch record. Writes live data. **Required:** `lead_id`, `user_id`, `lead_matched`, `lead_status`, `match_price`, `lead_token`, `lead_matched_by`, `lead_updated`. **Enums:** `lead_status`: `1`, `2`, `4`, `5`, `6`, `7`. **See also:** `updateLeadMatch` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a lead match — Update an existing leadmatch record by ID. Fields omitted are untouched. Writes live data. **Required:** `match_id`. **Enums:** `lead_status`: `1`, `2`, `4`, `5`, `6`, `7`. **See also:** `createLeadMatch` (add new), `deleteLeadMatch` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a lead match — Permanently delete a leadmatch record by ID. Destructive — cannot be undone via API. **Required:** `match_id`. **See also:** `updateLeadMatch` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List posts — Paginated enumeration of post records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getPost` (single record by ID), `searchPosts` (keyword search). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single post — Fetch a single post record. Read-only. **Required:** `post_id`. **See also:** `listPosts` (enumerate many), `searchPosts` (keyword search). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get post field definitions — Returns custom fields for a specific post type form. **Required:** `form_name`. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a post — Create a new post record. Writes live data. **Required:** `user_id`, `data_id`, `data_type`. **Enums:** `post_status`: `0`, `1`. **Parameter interactions:** - `data_type` must be an existing post type ID (discover via `listDataTypes` / `listPostTypes`) - `user_id` owner must exist (discover via `listUsers` or `searchUsers`) **See also:** `updatePost` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a post — Update an existing post record by ID. Fields omitted are untouched. Writes live data. **Required:** `post_id`. **Enums:** `post_status`: `0`=Draft (saved but not publicly visible), `1`=Published (publicly visible on the site). **See also:** `createPost` (add new), `deletePost` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a post — Permanently delete a post record by ID. Destructive — cannot be undone via API. **Required:** `post_id`. **See also:** `updatePost` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Search posts — Keyword search across post records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` (integer page number for search) to paginate large result sets. **Search params:** each resource's search endpoint exposes resource-specific query fields (e.g., `q` keyword, category IDs, location, status). See the schema properties for this operation. **See also:** `getPost` (single record by ID), `listPosts` (full enumeration). **Returns:** `{ status: "success", message: [...records] }`. Supports pagination fields when result set is large. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List album groups — Paginated enumeration of portfoliogroup records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getPortfolioGroup` (single record by ID), `searchPortfolioGroups` (keyword search). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single album group — Fetch a single portfoliogroup record. Read-only. **Required:** `group_id`. **See also:** `listPortfolioGroups` (enumerate many), `searchPortfolioGroups` (keyword search). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get album group field definitions — Fetch a single portfoliogroupfields record. Read-only. **Required:** `form_name`. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create an album group — Create a new portfoliogroup record. Writes live data. **Required:** `user_id`, `data_id`, `data_type`. **Enums:** `group_status`: `0`, `1`. **Parameter interactions:** - `data_type` must be an existing portfolio group type ID (discover via `listDataTypes`) **See also:** `updatePortfolioGroup` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update an album group — Update an existing portfoliogroup record by ID. Fields omitted are untouched. Writes live data. **Required:** `group_id`. **Enums:** `group_status`: `0`=Draft (saved but not publicly visible), `1`=Published (publicly visible on the site). **See also:** `createPortfolioGroup` (add new), `deletePortfolioGroup` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete an album group — Permanently delete a portfoliogroup record by ID. Destructive — cannot be undone via API. **Required:** `group_id`. **See also:** `updatePortfolioGroup` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Search album groups — Keyword search across portfoliogroup records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` (integer page number for search) to paginate large result sets. **Search params:** each resource's search endpoint exposes resource-specific query fields (e.g., `q` keyword, category IDs, location, status). See the schema properties for this operation. **See also:** `getPortfolioGroup` (single record by ID), `listPortfolioGroups` (full enumeration). **Returns:** `{ status: "success", message: [...records] }`. Supports pagination fields when result set is large. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List album photos — Paginated enumeration of portfoliophoto records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getPortfolioPhoto` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single album photo — Fetch a single portfoliophoto record. Read-only. **Required:** `photo_id`. **See also:** `listPortfolioPhotos` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create an album photo — Create a new portfoliophoto record. Writes live data. **Required:** `user_id`, `group_id`. **Enums:** `status`: `0`, `1`. **See also:** `updatePortfolioPhoto` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update an album photo — Update an existing portfoliophoto record by ID. Fields omitted are untouched. Writes live data. **Required:** `photo_id`. **See also:** `createPortfolioPhoto` (add new), `deletePortfolioPhoto` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete an album photo — Permanently delete a portfoliophoto record by ID. Destructive — cannot be undone via API. **Required:** `photo_id`. **See also:** `updatePortfolioPhoto` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List post types — Paginated enumeration of posttype records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getPostType` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single post type — Fetch a single posttype record. Read-only. **Required:** `data_id`. **See also:** `listPostTypes` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a post type — Create a new posttype record. Writes live data. **Required:** `data_name`. **Enums:** `data_active`: `0`, `1`. **See also:** `updatePostType` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get custom fields for a post type — Fetch a single posttypecustomfields record. Read-only. **Required:** `data_id`. **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a post type — Update an existing posttype record by ID. Fields omitted are untouched. Writes live data. **Required:** `data_id`. **See also:** `createPostType` (add new), `deletePostType` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a post type — Permanently delete a posttype record by ID. Destructive — cannot be undone via API. **Required:** `data_id`. **See also:** `updatePostType` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List unsubscribe records — Paginated enumeration of unsubscribe records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getUnsubscribe` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single unsubscribe record — Fetch a single unsubscribe record. Read-only. **Required:** `id`. **See also:** `listUnsubscribes` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Add email to unsubscribe list — Create a new unsubscribe record. Writes live data. **Required:** `email`. **Enums:** `definitive`: `0`, `1`. **See also:** `updateUnsubscribe` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update an unsubscribe record — Update an existing unsubscribe record by ID. Fields omitted are untouched. Writes live data. **Required:** `id`. **Enums:** `definitive`: `0`, `1`. **See also:** `createUnsubscribe` (add new), `deleteUnsubscribe` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Remove email from unsubscribe list — Permanently delete a unsubscribe record by ID. Destructive — cannot be undone via API. **Required:** `id`. **See also:** `updateUnsubscribe` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List widgets — Paginated enumeration of widget records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getWidget` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single widget — Fetch a single widget record. Read-only. **Required:** `widget_id`. **See also:** `listWidgets` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a widget — Create a new widget record. Writes live data. **Required:** `widget_name`. **Enums:** `widget_viewport`: `front`, `admin`, `both`; `bootstrap_enabled`: `0`, `1`. **See also:** `updateWidget` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a widget — Update an existing widget record by ID. Fields omitted are untouched. Writes live data. **Required:** `widget_id`. **See also:** `createWidget` (add new), `deleteWidget` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a widget — Permanently delete a widget record by ID. Destructive — cannot be undone via API. **Required:** `widget_id`. **See also:** `updateWidget` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Render a widget to HTML — Returns rendered HTML output with all template variables processed. **Required:** `widget_id`. **Returns:** `{ status: "success"|"error", message: ... }` — BD's standard response envelope. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List email templates — Paginated enumeration of emailtemplate records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getEmailTemplate` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single email template — Fetch a single emailtemplate record. Read-only. **Required:** `email_id`. **See also:** `listEmailTemplates` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create an email template — Create a new emailtemplate record. Writes live data. **Required:** `email_name`. **Enums:** `signature`: `0`, `1`; `notemplate`: `0`, `1`; `unsubscribe_link`: `0`, `1`. **See also:** `updateEmailTemplate` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update an email template — Update an existing emailtemplate record by ID. Fields omitted are untouched. Writes live data. **Required:** `email_id`. **See also:** `createEmailTemplate` (add new), `deleteEmailTemplate` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete an email template — Permanently delete a emailtemplate record by ID. Destructive — cannot be undone via API. **Required:** `email_id`. **See also:** `updateEmailTemplate` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List forms — Paginated enumeration of form records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getForm` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single form — Fetch a single form record. Read-only. **Required:** `form_id`. **See also:** `listForms` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a form — Create a new form record. Writes live data. **Required:** `form_name`, `form_title`, `form_action`, `form_layout`, `form_table`. **Enums:** `form_email_on`: `0`, `1`. **See also:** `updateForm` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a form — Update an existing form record by ID. Fields omitted are untouched. Writes live data. **Required:** `form_id`. **See also:** `createForm` (add new), `deleteForm` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a form — Permanently delete a form record by ID. Destructive — cannot be undone via API. **Required:** `form_id`. **See also:** `updateForm` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List form fields — Paginated enumeration of formfield records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getFormField` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single form field — Fetch a single formfield record. Read-only. **Required:** `field_id`. **See also:** `listFormFields` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a form field — Create a new formfield record. Writes live data. **Required:** `form_name`, `field_name`, `field_text`, `field_type`, `field_order`. **Enums:** `field_required`: `0`, `1`. **See also:** `updateFormField` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a form field — Update an existing formfield record by ID. Fields omitted are untouched. Writes live data. **Required:** `field_id`. **See also:** `createFormField` (add new), `deleteFormField` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a form field — Permanently delete a formfield record by ID. Destructive — cannot be undone via API. **Required:** `field_id`. **See also:** `updateFormField` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List membership plans — Paginated enumeration of membershipplan records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getMembershipPlan` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single membership plan — Fetch a single membershipplan record. Read-only. **Required:** `subscription_id`. **See also:** `listMembershipPlans` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a membership plan — Create a new membershipplan record. Writes live data. **Required:** `subscription_name`, `subscription_type`, `profile_type`. **Enums:** `profile_type`: `paid`, `free`, `claim`; `sub_active`: `0`, `1`; `searchable`: `0`, `1`; `payment_default`: `yearly`, `monthly`. **See also:** `updateMembershipPlan` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a membership plan — Update an existing membershipplan record by ID. Fields omitted are untouched. Writes live data. **Required:** `subscription_id`. **See also:** `createMembershipPlan` (add new), `deleteMembershipPlan` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a membership plan — Permanently delete a membershipplan record by ID. Destructive — cannot be undone via API. **Required:** `subscription_id`. **See also:** `updateMembershipPlan` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List menus — Paginated enumeration of menu records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getMenu` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single menu — Fetch a single menu record. Read-only. **Required:** `menu_id`. **See also:** `listMenus` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a menu — Create a new menu record. Writes live data. **Required:** `menu_name`, `menu_title`. **Enums:** `menu_active`: `0`, `1`. **See also:** `updateMenu` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a menu — Update an existing menu record by ID. Fields omitted are untouched. Writes live data. **Required:** `menu_id`. **See also:** `createMenu` (add new), `deleteMenu` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a menu — Permanently delete a menu record by ID. Destructive — cannot be undone via API. **Required:** `menu_id`. **See also:** `updateMenu` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List menu items — Paginated enumeration of menuitem records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getMenuItem` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single menu item — Fetch a single menuitem record. Read-only. **Required:** `menu_item_id`. **See also:** `listMenuItems` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a menu item — Create a new menuitem record. Writes live data. **Required:** `menu_id`, `menu_name`, `menu_link`, `master_id`, `menu_order`. **Enums:** `menu_active`: `0`, `1`; `menu_target`: `_blank`, `_self`. **See also:** `updateMenuItem` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a menu item — Update an existing menuitem record by ID. Fields omitted are untouched. Writes live data. **Required:** `menu_item_id`. **See also:** `createMenuItem` (add new), `deleteMenuItem` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a menu item — Permanently delete a menuitem record by ID. Destructive — cannot be undone via API. **Required:** `menu_item_id`. **See also:** `updateMenuItem` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List categories (professions) — Paginated enumeration of category records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getCategory` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single category — Fetch a single category record. Read-only. **Required:** `category_id`. **See also:** `listCategories` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a category — Create a new category record. Writes live data. **Required:** `name`, `filename`, `group_id`. **See also:** `updateCategory` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a category — Update an existing category record by ID. Fields omitted are untouched. Writes live data. **Required:** `category_id`. **See also:** `createCategory` (add new), `deleteCategory` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a category — Permanently delete a category record by ID. Destructive — cannot be undone via API. **Required:** `category_id`. **See also:** `updateCategory` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List category groups — Paginated enumeration of categorygroup records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getCategoryGroup` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single category group — Fetch a single categorygroup record. Read-only. **Required:** `group_id`. **See also:** `listCategoryGroups` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a category group — Create a new categorygroup record. Writes live data. **Required:** `group_name`, `group_filename`, `database`. **See also:** `updateCategoryGroup` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a category group — Update an existing categorygroup record by ID. Fields omitted are untouched. Writes live data. **Required:** `group_id`. **See also:** `createCategoryGroup` (add new), `deleteCategoryGroup` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a category group — Permanently delete a categorygroup record by ID. Destructive — cannot be undone via API. **Required:** `group_id`. **See also:** `updateCategoryGroup` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List services (sub-categories) — Paginated enumeration of service records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getService` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single service — Fetch a single service record. Read-only. **Required:** `service_id`. **See also:** `listServices` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a service — Create a new service record. Writes live data. **Required:** `name`, `profession_id`. **See also:** `updateService` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a service — Update an existing service record by ID. Fields omitted are untouched. Writes live data. **Required:** `service_id`. **See also:** `createService` (add new), `deleteService` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a service — Permanently delete a service record by ID. Destructive — cannot be undone via API. **Required:** `service_id`. **See also:** `updateService` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List user-service relationships — Paginated enumeration of userservice records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getUserService` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single user-service relationship — Fetch a single userservice record. Read-only. **Required:** `rel_id`. **See also:** `listUserServices` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Link a service to a user — Create a new userservice record. Writes live data. **Required:** `user_id`, `service_id`. **Enums:** `specialty`: `0`, `1`. **See also:** `updateUserService` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a user-service relationship — Update an existing userservice record by ID. Fields omitted are untouched. Writes live data. **Required:** `rel_id`. **See also:** `createUserService` (add new), `deleteUserService` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Remove a service from a user — Permanently delete a userservice record by ID. Destructive — cannot be undone via API. **Required:** `rel_id`. **See also:** `updateUserService` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List user photos — Paginated enumeration of userphoto records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getUserPhoto` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single user photo — Fetch a single userphoto record. Read-only. **Required:** `photo_id`. **See also:** `listUserPhotos` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a user photo — Create a new userphoto record. Writes live data. **Required:** `user_id`, `file`, `type`. **Enums:** `type`: `logo`, `photo`, `cover_photo`. **See also:** `updateUserPhoto` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a user photo — Update an existing userphoto record by ID. Fields omitted are untouched. Writes live data. **Required:** `photo_id`. **Enums:** `type`: `logo`, `photo`, `cover_photo`. **See also:** `createUserPhoto` (add new), `deleteUserPhoto` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a user photo — Permanently delete a userphoto record by ID. Destructive — cannot be undone via API. **Required:** `photo_id`. **See also:** `updateUserPhoto` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List user metadata records — Paginated enumeration of usermeta records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getUserMeta` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single metadata record — Fetch a single usermeta record. Read-only. **Required:** `meta_id`. **See also:** `listUserMeta` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a metadata record — Create a new usermeta record. Writes live data. **Required:** `database`, `database_id`, `key`, `value`. **See also:** `updateUserMeta` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a metadata record — Update an existing usermeta record by ID. Fields omitted are untouched. Writes live data. **Required:** `meta_id`, `value`. **See also:** `createUserMeta` (add new), `deleteUserMeta` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a metadata record — Permanently delete a usermeta record by ID. Destructive — cannot be undone via API. **Required:** `meta_id`. **See also:** `updateUserMeta` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List tags — Paginated enumeration of tag records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getTag` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single tag — Fetch a single tag record. Read-only. **Required:** `id`. **See also:** `listTags` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a tag — Create a new tag record. Writes live data. **Required:** `tag_name`, `group_tag_id`, `added_by`. **See also:** `updateTag` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a tag — Update an existing tag record by ID. Fields omitted are untouched. Writes live data. **Required:** `id`. **See also:** `createTag` (add new), `deleteTag` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a tag — Permanently delete a tag record by ID. Destructive — cannot be undone via API. **Required:** `id`. **See also:** `updateTag` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List tag groups — Paginated enumeration of taggroup records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getTagGroup` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single tag group — Fetch a single taggroup record. Read-only. **Required:** `id`. **See also:** `listTagGroups` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a tag group — Create a new taggroup record. Writes live data. **Required:** `group_tag_name`, `added_by`, `updated_by`. **See also:** `updateTagGroup` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a tag group — Update an existing taggroup record by ID. Fields omitted are untouched. Writes live data. **Required:** `id`. **See also:** `createTagGroup` (add new), `deleteTagGroup` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a tag group — Permanently delete a taggroup record by ID. Destructive — cannot be undone via API. **Required:** `id`. **See also:** `updateTagGroup` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List tag types — Paginated enumeration of tagtype records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getTagType` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single tag type — Fetch a single tagtype record. Read-only. **Required:** `id`. **See also:** `listTagTypes` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a tag type — Create a new tagtype record. Writes live data. **Required:** `type_name`, `table_relation`. **See also:** `updateTagType` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a tag type — Update an existing tagtype record by ID. Fields omitted are untouched. Writes live data. **Required:** `id`. **See also:** `createTagType` (add new), `deleteTagType` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a tag type — Permanently delete a tagtype record by ID. Destructive — cannot be undone via API. **Required:** `id`. **See also:** `updateTagType` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List tag relationships — Paginated enumeration of tagrelationship records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getTagRelationship` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single tag relationship — Fetch a single tagrelationship record. Read-only. **Required:** `id`. **See also:** `listTagRelationships` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a tag relationship — Create a new tagrelationship record. Writes live data. **Required:** `tag_id`, `object_id`, `tag_type_id`, `added_by`. **See also:** `updateTagRelationship` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a tag relationship — Update an existing tagrelationship record by ID. Fields omitted are untouched. Writes live data. **Required:** `id`. **See also:** `createTagRelationship` (add new), `deleteTagRelationship` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a tag relationship — Permanently delete a tagrelationship record by ID. Destructive — cannot be undone via API. **Required:** `id`. **See also:** `updateTagRelationship` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List smart lists — Paginated enumeration of smartlist records. Read-only. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getSmartList` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single smart list — Fetch a single smartlist record. Read-only. **Required:** `smart_list_id`. **See also:** `listSmartLists` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a smart list — Create a new smartlist record. Writes live data. **Required:** `smart_list_name`, `smart_list_type`, `smart_list_created_by`. **Enums:** `smart_list_type`: `members`, `forms_inbox`, `leads`, `reviews`, `transaction`, `newsletter`. **See also:** `updateSmartList` (modify existing). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a smart list — Update an existing smartlist record by ID. Fields omitted are untouched. Writes live data. **Required:** `smart_list_id`. **See also:** `createSmartList` (add new), `deleteSmartList` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a smart list — Permanently delete a smartlist record by ID. Destructive — cannot be undone via API. **Required:** `smart_list_id`. **See also:** `updateSmartList` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List pages (list_seo) — Paginated list of all pages on the site: homepage, custom landing pages, profile/search templates, etc. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getPage` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single page — Fetch a single page record. Read-only. **Required:** `seo_id`. **See also:** `listPages` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a page — Create a new page record. seo_type and filename are required. Pages are publicly accessible immediately when created with a valid seo_type and content_active=1 (default). If the user asks for a "landing page", "static page", "about page", "contact page", "custom page", or similar, use seo_type="content" — that is the BD admin default for generic pages. Only choose a different seo_type if the user explicitly asks for a search-results template, password-retrieval page, unsubscribe page, or custom-widget page. **Required:** `seo_type`, `filename`. **Enums:** `content_layout`: `0`, `1`; `menu_layout`: `1`, `2`, `3`, `4`; `show_form`: `0`, `1`; `hide_from_menu`: `0`, `1`. **Parameter interactions:** - `seo_type` constrained to admin-UI values — invalid values cause unrenderable pages. Required: `home` for homepage replacement, see enum for others. - `content_active=1` + valid `seo_type` = page is public-facing immediately after create. **See also:** `updatePage` (modify existing). **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a page — Update an existing page record by ID. Fields omitted are untouched. Writes live data. **Required:** `seo_id`. **Enums:** `seo_type`: `content`, `data_category`, `profile_search_results`, `custom_widget_page`, `password_retrieval_page`, `unsubscribed`; `content_active`: `0`, `1`; `content_layout`: `0`, `1`; `menu_layout`: `1`, `2`, `3`, `4`; `show_form`: `0`, `1`; `hide_from_menu`: `0`, `1`. **See also:** `createPage` (add new), `deletePage` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a page — Permanently delete a page record by ID. Destructive — cannot be undone via API. **Required:** `seo_id`. **See also:** `updatePage` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List redirects (301) — Paginated list of all 301 redirect rules on the site. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getRedirect` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single redirect — Fetch a single redirect record. Read-only. **Required:** `redirect_id`. **See also:** `listRedirects` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a redirect — Create a new 301 redirect rule. type, old_filename, and new_filename are required. **Required:** `type`, `old_filename`, `new_filename`. **See also:** `updateRedirect` (modify existing). **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a redirect — Update an existing redirect record by ID. Fields omitted are untouched. Writes live data. **Required:** `redirect_id`. **See also:** `createRedirect` (add new), `deleteRedirect` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a redirect — Permanently delete a redirect record by ID. Destructive — cannot be undone via API. **Required:** `redirect_id`. **See also:** `updateRedirect` (modify without removing). **Destructive:** confirm intent with the user before bulk use. No soft-delete via API — records removed are not recoverable. **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Refresh the site cache — Clears BD's internal caches for the site. IMPORTANT: this does NOT register newly-created page URLs with the router — a freshly created page via createPage will still 404 on the public site even after refreshCache. The only known way to fully activate a new page is manually clicking Save on the record in BD Admin > Manage Pages. This endpoint is useful for generic cache invalidation (e.g., after changes to templates, design settings, etc.), not for page propagation. Undocumented by BD publicly; exposed via admin API-permissions UI. **Returns:** `{ status: "success"|"error", message: ... }` — BD's standard response envelope. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
List data types — List all data types configured on this BD site. Use the data_id values as data_type parameters when creating posts or portfolio groups. **Pagination:** cursor-based. Pass `limit` (default 25, max 100) and `page` token from the previous response's `next_page`. Do not assume integer offsets. **Filter/sort:** `property` + `property_value` + `property_operator` (`=`, `LIKE`, `>`, `<`, `>=`, `<=`) to filter; `order_column` + `order_type` (`ASC`/`DESC`) to sort. **See also:** `getDataType` (single record by ID). **Returns:** `{ status: "success", total, current_page, total_pages, next_page, prev_page, message: [...records] }`. Each record is the full resource object. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Get a single data type — Fetch a single datatype record. Read-only. **Required:** `data_id`. **See also:** `listDataTypes` (enumerate many). **Returns:** `{ status: "success", message: [{...record}] }` — the `message` array contains 1 record when found. Empty or HTTP 404 when not found. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Create a data type — Define a new content-type template. Only do this when the user explicitly wants a new post type — most sites come pre-configured with the types they need. **Required:** `category_name`, `category_active`. **Enums:** `category_active`: `1`=active and available for members to use, `0`=inactive; `limit_available`: `0`, `1`. **See also:** `updateDataType` (modify existing). **Returns:** `{ status: "success", message: {...createdRecord} }` — includes the server-assigned ID (e.g., `user_id`, `post_id`). Use this ID for follow-up operations. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Update a data type — Update an existing datatype record by ID. Fields omitted are untouched. Writes live data. **Required:** `data_id`. **Enums:** `category_active`: `1`=active and available for members to use, `0`=inactive; `limit_available`: `0`, `1`. **See also:** `createDataType` (add new), `deleteDataType` (remove permanently). **Writes live data:** confirm intent with the user for bulk operations. Changes are immediately visible on the live site. **Returns:** `{ status: "success", message: {...updatedRecord} }` — the full updated record after changes applied. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Delete a data type — Deletes a data type definition. Records (posts, portfolio groups) referencing a deleted data type may become orphaned — confirm with the user before deleting. **Required:** `data_id`. **See also:** `updateDataType` (modify without removing). **Returns:** `{ status: "success", message: "<resource> record was deleted" }`. No body beyond the confirmation string. _Auth: `X-Api-Key` header. Rate limit: 100 req/60s (on 429, back off 60s). Errors: `{ "status": "error", "message": "..." }` with standard HTTP codes._
Overview
What is Brilliant Directories MCP?
It is the official MCP server for Brilliant Directories, a SaaS platform powering 50,000+ membership and directory websites. It exposes the Brilliant Directories REST API as structured MCP tools, giving AI agents and automation platforms full access to a site with one API key, requiring no custom code.
How to use Brilliant Directories MCP?
Install by running npx brilliant-directories-mcp in your terminal. Then provide your Brilliant Directories API key. AI agents like Claude, GPT, or Cursor can invoke the exposed tools to manage site resources.
Key features of Brilliant Directories MCP
- Manage members: create, update, search, and fetch
- Manage posts: events, classifieds, articles, deals
- Manage leads (inquiries) and reviews (CRUD)
- Manage pages, redirects, email templates, forms, menus
- Manage tags, categories, and other site content
- Plug-and-play with AI agents and automation platforms
Use cases of Brilliant Directories MCP
- Automate member onboarding and profile updates
- Auto-publish events and classifieds from AI prompts
- Route inbound leads to CRM or email via automation
- Programmatically manage 301 redirects for SEO
- Bulk update site content through an AI assistant
FAQ from Brilliant Directories MCP
What AI agents and automation platforms does Brilliant Directories MCP support?
It supports AI agents like Claude, GPT, and Cursor, as well as automation platforms n8n, Make, and Zapier.
How do I install Brilliant Directories MCP?
Run npx brilliant-directories-mcp in your terminal.
What site resources can I manage with the MCP server?
You can manage members, posts (events, classifieds, articles, deals), leads, reviews, pages, redirects, email templates, forms, menus, tags, categories, and more.
Does Brilliant Directories MCP require any custom code?
No, it requires only an API key from your Brilliant Directories site — no custom code is needed.
Is this the official MCP server from Brilliant Directories?
Yes, it is the official MCP server for Brilliant Directories.
More Other MCP servers
Unity MCP ✨
justinpbarnettUnity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.
Awesome-MCP-ZH
yzflyMCP 资源精选, MCP指南,Claude MCP,MCP Servers, MCP Clients
Core Philosophy: Connect, Unify, Respond
mindsdbDelegate anything. It comes back done.
Production-ready MCP integrations for AI applications
Klavis-AIKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale
🚀 Model Context Protocol (MCP) Curriculum for Beginners
microsoftThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable,
Comments