ReactionSaaS
Documentation

Code examples

ReactifySDK · Guides

Patterns map to API reference routes. Each example sits with its explanation—no cramped side rail. Replace host and auth for your environment.

In-page recorder embed (recommended)

Bootstrap reactifyWprtEmbed.apiKey before reactify.js so "React To This" opens a modal (same as WordPress). Base is https://api.reactionsaas.com. Try the SDK playground.

Bootstrap + reactify-thread
<script>
  window.reactifyWprtEmbed = {
    base: "https://api.reactionsaas.com",
    apiKey: "YOUR_PUBLISHABLE_API_KEY"
  };
  window.reactifyShopifyEmbed = window.reactifyWprtEmbed;
  window.REACTIFY_EMBED_BASE = "https://api.reactionsaas.com";
</script>
<script src="https://reactify-cdn.s3.us-east-2.amazonaws.com/reactify.js?v=1.1.34" defer></script>
<reactify-thread thread="YOUR_THREAD_ID" data-base="https://api.reactionsaas.com"></reactify-thread>

View-only template embed

Without apiKey, the thread still renders, but "React To This" opens https://api.reactionsaas.com/reactify/record. Prefer the recorder embed above for production.

Script only (CTAs leave the page)
<script src="https://reactify-cdn.s3.us-east-2.amazonaws.com/reactify.js?v=1.1.34" defer></script>
<reactify-thread template="hot-takes"></reactify-thread>

Read a thread (public JSON)

Useful for custom chrome or SSR previews alongside the embed.

fetch()
const res = await fetch("/api/reactify/threads/thread_123", {
  headers: { Accept: "application/json" },
});
const thread = await res.json();

Create a thread (authenticated)

Dashboard JWTs come from the Reactify creator session—see GET /api/reactify/me.

POST /api/reactify/threads
const res = await fetch("/api/reactify/threads", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer YOUR_DASHBOARD_JWT",
  },
  body: JSON.stringify({
    template_slug: "hot-takes",
    title: "Friday drop",
  }),
});
const created = await res.json();

Upload source media (original)

After upload, pass original_video_id into thread create or patch—see /reactify/record.

Presigned upload flow
// 1) Mint upload URL (creator-authenticated route)
const u = await fetch("/api/reactify/upload-url", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer YOUR_DASHBOARD_JWT",
  },
  body: JSON.stringify({
    purpose: "original",
    contentType: "video/mp4",
    filename: "source.mp4",
  }),
}).then((r) => r.json());

// 2) PUT file to presigned URL
await fetch(u.uploadUrl, { method: "PUT", body: file, headers: u.headers ?? {} });

// 3) Create thread referencing original_video_id from response

Send telemetry from your shell

No API key required for anonymous thread analytics; include anonymous_session_id to dedupe sessions. Event types: Event schema.

POST /api/reactify/events
await fetch("/api/reactify/events", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    event_type: "thread_impression",
    thread_id: "thread_123",
    anonymous_session_id: "sess_demo",
  }),
});

Framework installs: ReactifySDK installation guides.