Complete skill suite for managing Craft CMS content including sections, entry types, fields, entries, drafts, field layouts, and sites.
CRITICAL: Always use this HTTP API to manage Craft CMS content. Never directly modify YAML configuration files in the config/project/ directory. The API ensures proper validation, maintains data integrity, and handles all necessary relationships automatically. Direct YAML edits can corrupt your Craft installation.
CRITICAL: The skills plugin must be installed to Craft. You can verify installation by running php craft plugin/list and install it with php craft plugin/install skills
All API routes require a base URL and API prefix. The standard Craft CMS configuration uses the PRIMARY_SITE_URL environment variable and a configurable API prefix:
PRIMARY_SITE_URL in ENV or .env file/apiconfig/skills.php for apiPrefix in the PHP array/api{PRIMARY_SITE_URL}/{apiPrefix}/{endpoint}https://craft-site.com/api/sectionshttps://craft-site.com/custom-api/sectionsAll API endpoints:
Accept: application/json header in requests to ensure errors are also formatted as JSON for better error handling and debuggingContent-Type: application/json for POST/PUT requests with JSON body dataPOST /api/entries - Create entries with section/entry type IDs and field dataGET /api/entries/<id> - Retrieve entry by ID with all fields and metadataPUT /api/entries/<id> - Update entry (prefers draft workflow)DELETE /api/entries/<id> - Delete entry (soft/permanent)GET /api/entries/search - Search/filter entries by section/status/queryPOST /api/drafts - Create draft from scratch or existing entryPUT /api/drafts/<id> - Update draft content/metadata (PATCH semantics)POST /api/drafts/<id>/apply - Publish draft to canonical entryPOST /api/sections - Create section with types/versioning/sitesGET /api/sections - List all or filter by IDsPUT /api/sections/<id> - Update properties/settingsDELETE /api/sections/<id> - Permanently delete (removes all entries)POST /api/entry-types - Create with handle/name/layoutGET /api/entry-types - List with fields/usage/URLsPUT /api/entry-types/<id> - Update properties/layoutDELETE /api/entry-types/<id> - Delete if not in usePOST /api/fields - Create with type and settingsGET /api/fields - List global or layout-specificGET /api/fields/types - List available typesPUT /api/fields/<id> - Update properties/settingsDELETE /api/fields/<id> - Permanently delete (removes data)POST /api/field-layouts - Create empty field layout for entry typesGET /api/field-layouts - Get field layout structure by entry type/layout/element IDPOST /api/field-layouts/<id>/tabs - Add tab to field layout with flexible positioning (prepend/append/before/after)POST /api/field-layouts/<id>/fields - Add custom field to tab with positioning, width, required, and display optionsPOST /api/field-layouts/<id>/ui-elements - Add UI elements (heading, tip, horizontal rule, markdown, template) to layoutsPUT /api/field-layouts/<id>/elements - Move fields/UI elements within or between tabs with precise positioningDELETE /api/field-layouts/<id>/elements - Remove fields or UI elements from field layoutGET /api/sites - List all sites with IDs/handles/URLsPOST /api/assets - Upload file from local/remote URL to volumePUT /api/assets/<id> - Update metadata or replace fileDELETE /api/assets/<id> - Delete asset and fileGET /api/volumes - List asset volumes with IDs/URLsGET /api/addresses - List/search addresses by owner, field, and locationGET /api/addresses/<id> - Retrieve address details with owner and field contextPOST /api/addresses - Create generic owner-backed addresses for users or custom address fieldsPUT /api/addresses/<id> - Update address attributes and custom fieldsDELETE /api/addresses/<id> - Delete address (soft/permanent)GET /api/addresses/field-layout - Retrieve the single global address field layoutGET /api/users - List/search users by query, identity fields, status, and optionally groupGET /api/users/<id> - Retrieve a user by ID, email, or usernamePOST /api/users - Create a user with native attributes and custom fieldsGET /api/users/permissions - List all known permissions plus custom stored permission namesPUT /api/users/<id> - Update a user by ID, email, or usernameDELETE /api/users/<id> - Delete a user by ID, email, or usernameGET /api/users/field-layout - Retrieve the single global user field layoutGET /api/user-groups - List user groups and their permissionsGET /api/user-groups/<id> - Retrieve a user group by ID or handlePOST /api/user-groups - Create a user group and set permissionsPUT /api/user-groups/<id> - Update a user group and its permissionsDELETE /api/user-groups/<id> - Delete a user group by ID or handleGET /api/health - Health check endpoint to verify plugin installation and API availabilityPOST /api/products - Create product with type, title, SKU, price, and custom fieldsGET /api/products/<id> - Retrieve product with variants, pricing, and custom fieldsGET /api/products/search - Search/filter products by type/status/queryPUT /api/products/<id> - Update product attributes and custom fieldsDELETE /api/products/<id> - Delete product (soft/permanent)GET /api/product-types - List available Commerce product typesGET /api/product-types/<id> - Retrieve product type with field layouts and site settingsPOST /api/product-types - Create product type with title, variant, layout, and site settingsPUT /api/product-types/<id> - Update product type configuration and site settingsDELETE /api/product-types/<id> - Delete product type with impact analysis and force protectionPOST /api/variants - Add variant to existing product with SKU, price, and attributesGET /api/variants/<id> - Retrieve variant with pricing, inventory, and dimensionsPUT /api/variants/<id> - Update variant pricing, SKU, stock, and fieldsDELETE /api/variants/<id> - Delete variant (soft/permanent)GET /api/orders/<id> - Retrieve order with line items, totals, and addressesGET /api/orders/search - Search/filter orders by email/status/date/paymentPUT /api/orders/<id> - Update order status or messageGET /api/order-statuses - List all order statuses with IDs/handles/colorsGET /api/stores - List all stores with checkout/payment/tax configurationGET /api/stores/<id> - Retrieve store with full configuration detailsPUT /api/stores/<id> - Update store checkout, payment, and pricing settings