DEVELOPERS

One REST API for the whole quote-to-cash flow.

Catalog, configuration, pricing, quotes, orders, services, e-signature and billing, exposed as REST endpoints your CRM, ERP and storefront call directly.

Base URL: {your-vektra-host}/api/v1. Set $BASE to your host. Send Content-Type: application/json. Pass x-api-key when key auth is enabled.
Quotes and pricing

Build and price transactions from any system. Lines are priced with the account’s live agreements, volume tiers and promotions.

POST/api/v1/quotesCreate a quote, optionally from a CRM account or opportunity, with lines priced automatically.
GET/api/v1/quotes/{id}Retrieve a quote with its lines (cart contents).
POST/api/v1/quotes/{id}/linesAdd a line; omit unit_price to price it against the account.
POST/api/v1/pricingPrice a multi-line transaction with full per-line waterfall, independent of the cart.
curl -X POST "$BASE/api/v1/pricing" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "ACME",
    "lines": [
      { "sku": "VX-2000", "quantity": 4 },
      { "sku": "CARE-PLUS", "quantity": 4 }
    ]
  }'
Configuration solver

A reusable finite-domain constraint solver. Validate a configuration, propagate remaining valid options, solve for a complete (or cheapest) build, or get minimal repairs. Pass an inline model, or reference a platform configurator/product and the rules are loaded for you.

POST/api/v1/solvemode: 'validate' | 'propagate' | 'solve' | 'optimize' | 'repair' | 'all'. Returns validity, per-variable available/blocked options, a solution and repairs.
curl -X POST "$BASE/api/v1/solve" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": "VX-2000",
    "mode": "propagate",
    "assignment": { "Operating Environment": "ATEX Zone 22" }
  }'

# Or solve an inline model for the cheapest valid build:
curl -X POST "$BASE/api/v1/solve" \
  -H "Content-Type: application/json" \
  -d '{
    "variables": [
      { "name": "Drive", "values": [ {"value":"1.5 kW"}, {"value":"3.0 kW","price":500} ] },
      { "name": "Belt",  "values": [ {"value":"Standard"}, {"value":"Heavy","price":300} ] }
    ],
    "rules": [
      { "kind":"ensure", "expression":"NOT is(\'Belt\',\'Heavy\') OR num(\'Drive\') >= 3.0",
        "message":"Heavy belt needs a 3.0 kW+ drive" }
    ],
    "mode": "optimize",
    "objective": { "minimize": "price" },
    "assignment": { "Belt": "Heavy" }
  }'
Orders and fulfillment

Place an order, decompose it across fulfillment systems, and let ERP sync status back in. Change fees are computed from policy.

POST/api/v1/ordersPlace an order from a quote; lines are routed to ERP, field service or contracts.
GET/api/v1/orders/{id}Order status with a per-fulfillment-system rollup.
POST/api/v1/orders/{id}/statusInbound fulfillment webhook: ERP/fulfillment systems sync line status.
POST/api/v1/orders/{id}/changeRevise or cancel an in-flight order; returns the calculated change fee.
curl -X POST "$BASE/api/v1/orders" \
  -H "Content-Type: application/json" \
  -d '{ "quote_id": "QUOTE_ID" }'

# ERP syncs fulfillment status back:
curl -X POST "$BASE/api/v1/orders/ORDER_ID/status" \
  -H "Content-Type: application/json" \
  -d '{ "fulfillment_system": "ERP-MFG", "status": "shipped", "tracking": "1Z999" }'
Recurring services

Renew, amend or terminate a recurring service contract. Termination fees follow the commitment.

POST/api/v1/services/{contractId}action: 'renew' | 'amend' | 'terminate'. Generates the instructions and quote/order.
POST/api/v1/billingPush the recurring and one-time charges from an accepted quote to a billing system.
curl -X POST "$BASE/api/v1/services/CONTRACT_ID" \
  -H "Content-Type: application/json" \
  -d '{ "action": "amend", "changes": { "coverage_level": "Total" } }'
CRM and proposals

The integration surface a CRM calls to push accounts and opportunities, and to open and document quotes.

POST/api/v1/crm/syncUpsert account + opportunity, optionally open a quote, and return weighted forecast.
POST/api/v1/proposals/{quoteId}Generate a proposal document and return its content + shareable URL.
POST/api/v1/signE-signature provider callback; on completion the quote is marked accepted.
curl -X POST "$BASE/api/v1/crm/sync" \
  -H "Content-Type: application/json" \
  -d '{
    "crm": "salesforce",
    "account": { "external_id": "0016E00001", "name": "Acme Manufacturing", "region": "US" },
    "opportunity": { "external_id": "0066E00002", "name": "Line 4 expansion", "amount": 260000, "stage": "proposal", "close_date": "2026-09-30" },
    "create_quote": true
  }'
Webhooks and events

Subscribe to domain events. Every event is persisted and delivered to active subscribers over HTTPS.

GET/api/v1/webhooksList subscriptions and the catalog of event types.
POST/api/v1/webhooksRegister a subscriber URL for one or more event types.
GET/api/v1/eventsRecent domain events with their delivery records (audit log).
curl -X POST "$BASE/api/v1/webhooks" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/hooks/vektra", "events": ["order.placed","order.status_changed"] }'