REST API reference

Two APIs live side by side: the WordPress REST veyop/v1 namespace (used by addons and the storefront) and a lighter portable API that powers the core admin single-page app.

The veyop/v1 namespace

Registered with native register_rest_route(), but gated behind one central dispatch — core fires a single veyop_register_rest_routes action from its own rest_api_init handler, and every addon registers its routes there instead of adding a separate rest_api_init hook of its own:

<?php
// plugins/my-addon/inc/api-endpoints.php

VeyopHooks::addAction('veyop_register_rest_routes', function () {
    register_rest_route('veyop/v1', '/my-addon/settings', [
        'methods'  => 'GET',
        'callback' => 'my_addon_get_settings',
        'permission_callback' => 'my_addon_can_manage',
    ]);
});

Example addon routes

AddonRoutePurpose
Dynamic PricingGET/POST /veyop/v1/pricing/rulesList / create pricing rules.
Dynamic PricingPOST /veyop/v1/pricing/rules/deleteDelete a pricing rule.
Dynamic PricingPOST /veyop/v1/pricing/quoteEvaluate all applicable rules and return a price quote for a design.
Templates & Smart LayoutsGET/POST /veyop/v1/design-templatesList / create design templates.
Templates & Smart LayoutsGET /veyop/v1/design-templates/{id}Fetch a single template.
Templates & Smart LayoutsGET /veyop/v1/design-templates/designer-configConfig payload the designer panel uses to list available templates.
Templates & Smart LayoutsGET /veyop/v1/design-templates/quick-configQuick Personalization config for a given woo_product_id — drives the shop-grid panel.
Templates & Smart LayoutsGET/DELETE /veyop/v1/design-templates/assignmentRead or remove a template's assignment to a Woo product.
Templates & Smart LayoutsPOST /veyop/v1/design-templates/assignment/mockupSave a captured product mockup image for an assignment.
Templates & Smart LayoutsPOST /veyop/v1/design-templates/{id}/assignAssign a template to a Woo product (powers the Change Product flow).
Smart ConfiguratorGET /veyop/v1/smart-configurator/{product_id}Fetch the option-to-layer mapping configuration for a product.
Smart ConfiguratorPOST /veyop/v1/smart-configurator/applyApply a selected option's mapped layer changes to a design.
Print QueueGET /veyop/v1/print-queueList print queue jobs, filterable by state.
Print QueueGET/POST /veyop/v1/print-queue/settingsRead / update hotfolder configuration.
Print QueuePOST /veyop/v1/print-queue/{id}/retry · /processRetry or manually process a job.
Print QueueGET /veyop/v1/print-queue/{id}/download/{type}Download a job's artifact, ticket, or barcode (type = artifact | ticket | barcode).
Print QueuePOST /veyop/v1/print-queue/bulk-downloadBulk-download completed jobs as a ZIP.

Portable admin API (api/v1/*)

The core admin single-page app is powered by a lighter, portable API — not the WordPress REST API — so the same admin UI can run against a future non-WordPress platform. These endpoints sit behind the platform services abstraction rather than register_rest_route().

ResourceCovers
fontsEnabled Google Fonts and uploaded custom fonts.
colorsThe global color palette for text and cliparts.
cliparts, categoriesClipart library and its categories.
text_style_cardsReusable text style presets.
settingsGeneral settings — custom CSS, sharing toggles, upload limits.
customer_designsSaved customer designs, for the admin design library.
addonsGET /api/v1/addons (list + state), POST /api/v1/addons/state (enable/disable), POST /api/v1/addons/upload (install a ZIP).
licenseLicense key activation and status.
dashboardAdmin dashboard summary data.
icc_profilesCMYK / print color profile management.
mediaMedia upload handling used across the admin.
printing, productsPrinting method and product configuration data.

Both APIs sit behind the same platform services facade (settings, database, routes, auth, etc. — see the requiresServices manifest field), so addons requesting the same services get consistent behavior whichever API style they use.

Auth: admin routes require an authenticated admin session plus a CSRF nonce on state-changing requests; customer-facing routes (like pricing/quote) are scoped to the current cart/session and re-validate everything server-side — never trust a price or design payload sent from the browser.

Addon package endpoints

EndpointContract
GET /api/v1/addonsInstalled version, source/trust metadata, latest official version, update availability, and update_delivery: my_orders.
POST /api/v1/addons/uploadMultipart file; optional license_key, allow_unsigned_custom=1. Restore adds replace_custom=1 and expected_slug.
POST /api/v1/addons/stateExplicit array of active addon directories. New uploads are not auto-activated.

Official restore requires a trusted signed ZIP whose verified slug matches expected_slug. Paid Veyo slugs require their addon key or an Everything Bundle key. Third-party/free custom slugs do not require Lemon Squeezy.