For developers

Embed the builder. Ship the CRM. Bring your own framework.

One script tag drops the page builder into any React, Vue, Astro, or plain-HTML app. Every entity is a REST resource. Every event signs a webhook. JSON-first all the way down — your data outlives whatever framework Twitter loves this quarter.

1Script tag
12API resources
18Webhook events
0Framework lock-in
app.jsx · React just works
// One script tag. The builder mounts on any div.
import { Builder } from '@auriuscrm/builder';

export function EditorPage() {
  const [page, setPage] = useState(null);

  return (
    <Builder
      apiKey={process.env.AURIUS_KEY}
      theme="aurius"
      onSave={(json) => setPage(json)}
    />
  );
}

// `json` is portable BuilderJS JSON.
// Render it server-side, ship to a CDN, whatever.
await fetch('/api/save-page', {
  method: 'POST',
  body: JSON.stringify(page),
});
Embed in any stack · 6 SDKs documented

Drop the builder into your app. No iframe gymnastics.

The builder ships as a vanilla JS bundle plus thin framework adapters. Mount on any DOM node, get a save callback with portable JSON. Themes, locale, and feature flags are props.

Next.js · React

npm i @auriuscrm/builder

Mount as a client-only component. SSR-safe wrapper handles hydration. TypeScript types included.

Vue · Nuxt

npm i @auriuscrm/builder-vue

Use <AuriusBuilder> in any template. v-on:save handler returns JSON. Reactive theme prop.

Astro · island

npm i @auriuscrm/builder-astro

client:only directive — the builder hydrates on first interaction. Zero JS shipped for static visitors.

Laravel · Blade

composer require auriuscrm/builder

@auriusBuilder directive wires the builder into any Blade view. CSRF + session integration native.

Plain HTML

<script src="…/builder.js">

Drop the script in any HTML file. Call AuriusBuilder.mount('#editor', options). No bundler required.

Headless · API only

POST /v1/builder/render

No frontend? Send JSON in, get HTML or PDF out. Perfect for transactional rendering pipelines.

REST API · token auth

Every entity is a resource. Every resource has a JSON schema.

Twelve top-level resources cover the entire CRM surface: contacts · tags · segments · pages · funnels · flows · deals · forms · pipelines · webhooks · ai-requests · audit-log. CRUD verbs where they make sense, action verbs (e.g. POST /flows/{id}:test-fire) where they don't.

Token auth (Bearer). Per-token scopes. Per-token rate limits. List responses use cursor pagination — your loop won't drift.

curl 200 OK
$ curl https://api.auriuscrm.com/v1/contacts \
    -H "Authorization: Bearer aur_live_..." \
    -d '{
      "email": "sarah@acme.com",
      "fields": { "team_size": 250, "plan": "enterprise" },
      "tags": ["webinar", "enterprise"]
    }'

{
  "id": "con_4821",
  "email": "sarah@acme.com",
  "created_at": "2026-05-24T15:42:11Z",
  "score": 0,
  "tags": ["webinar", "enterprise"],
  "fields": { "team_size": 250, "plan": "enterprise" }
}
CRUD /v1/contacts

Contacts

Full CRUD · upsert-on-email · bulk import (CSV) · cursor list. Tag and field mutations atomic per request.

CRUD /v1/tags

Tags

Create, rename, delete, bulk-assign. Tag changes fire tag.added / tag.removed webhooks.

CRUD /v1/pages

Pages

JSON in, JSON out. Versioned. POST :publish action makes a version live; the previous one stays for rollback.

CRUD /v1/funnels

Funnels

List, create, edit, archive. Each funnel exposes /analytics with cursor-paginated per-step counts.

CRUD /v1/flows

Automation flows

Tree validation on every write. POST :test-fire dry-runs against a contact and returns the actions that would fire.

CRUD /v1/deals

Deals

Pipelines + stages + values. Move via PATCH /deals/{id}. Auto-fires deal.stage_changed.

CRUD /v1/segments

Segments

Filter combinations as first-class objects. Preview row counts before saving via :preview.

CRUD /v1/webhooks

Webhooks

Subscribe to specific events. HMAC-signed payloads, automatic retries with exponential backoff.

READ /v1/audit-log

Audit log

Every mutation, by every actor (human or AI). Cursor-paginated, filterable by actor, entity, action.

Webhooks · HMAC-signed · retries built in

Eighteen events. Every one signed. Every one retried.

Subscribe to specific event types per endpoint. AuriusCRM POSTs a JSON payload signed with HMAC-SHA256; verify with your shared secret. 5xx responses retry with exponential backoff up to 24 hours.

The webhook event log is browsable in the admin UI — replay any past event against your endpoint with one click. Useful for backfilling after downtime.

Event When fired Payload
contact.created New contact lands {contact, source}
contact.updated Any field/tag/score change {contact, diff}
tag.added Tag attached to contact {contact, tag}
tag.removed Tag detached {contact, tag}
form.submitted Any form submitted {form, payload, contact}
funnel.entered Contact starts a funnel {funnel, contact}
funnel.step.completed Step passed {funnel, step, contact}
funnel.completed Funnel converted {funnel, contact, duration}
flow.activated Flow toggled to live {flow, actor}
flow.fired Flow ran for a contact {flow, contact, actions[]}
deal.created New deal in pipeline {deal, contact}
deal.stage_changed Deal moved between stages {deal, from, to}
ai.task.completed AI request finished {task, tokens, cost}
ai.mutation.activated AI-built entity approved {entity, actor}
JSON-first · schema-validated · framework-agnostic

Pages, funnels, flows — all JSON. Validate before write.

AuriusCRM ships JSON Schemas (draft 2020-12) for every entity. Validate locally before sending to the API. Generate TypeScript types from them. Drift between your code and the API is caught at compile time.

The schemas live at https://api.auriuscrm.com/v1/schemas — versioned, content-addressable, long-cacheable. Pull them once, validate forever.

node · validate locally no round-trip
import Ajv from 'ajv';
import pageSchema from '@auriuscrm/schemas/page.json';

const ajv = new Ajv();
const validate = ajv.compile(pageSchema);

if (!validate(myPage)) {
  console.error(validate.errors);
  // e.g. "must have required property 'sections'"
  return;
}

// Schema-valid · safe to POST
await fetch('/v1/pages', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${key}` },
  body: JSON.stringify(myPage),
});

Self-host the source. Or embed the builder. Or both.

The fastest way to feel it: open the playground, drop a hero, click Export JSON. That's the same JSON the API returns.