Documentation

Developer Docs

Everything you need to integrate Rinnode into your app. Copy-paste examples, full API reference, and framework guides.

Ship in 30 seconds

Three ways to integrate Rinnode into your app.

1HTML Form (Simplest)

<!-- Step 1: Add your form -->
<form action="https://rinnode.com/api/v1/f/YOUR_ENDPOINT"
      method="POST">
  <!-- Optional Honeypot (Spam Guard) -->
  <input name="_rinnode_bot_trap" type="text" style="display:none" tabindex="-1" autocomplete="off" />

  <input name="name" type="text" required />
  <input name="email" type="email" required />
  <textarea name="message"></textarea>
  <button type="submit">Submit</button>
</form>

<!-- That's it! Submissions appear in your dashboard. -->

2JavaScript / React

// JavaScript / React example
const response = await fetch(
  'https://rinnode.com/api/v1/f/YOUR_ENDPOINT',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      name: 'Alex Chen',
      email: 'alex@example.com',
      message: 'I love this product!'
    })
  }
);

const data = await response.json();
console.log(data.id); // Submission ID
console.log(data.position); // Waitlist position (if configured as waitlist)

3cURL

# cURL example
curl -X POST https://rinnode.com/api/v1/f/YOUR_ENDPOINT \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Alex Chen",
    "email": "alex@example.com",
    "message": "Hello from cURL!"
  }'

REST API

Rinnode aggregates waitlists, contact forms, newsletter signups, bug reports, and feedback forms behind a single, unified ingest endpoint.

POST/api/v1/f/{endpoint_id}Unified form ingestion. Accepts form-data or raw JSON payloads.
GET/api/cms/v1/content/{project_id}/{type_slug}Retrieves published content items (blogs, FAQs). Accepts ?slug=page-slug, ?limit=10, ?offset=0.
POST/api/cms/v1/content/{project_id}/{type_slug}Submits user-generated content (UGC) directly. Entries save as draft until approved in admin panel.

Submission Response

All successful submissions return a JSON payload with a submission ID. If your endpoint is configured as a waitlist (or auto-detected as one), the response dynamically includes the user's active queue position:

{
  "success": true,
  "id": "sub_f17a9e32cd0f4",
  "position": 142
}

Spam Mitigation & Bot Trap

Include a hidden form field named _rinnode_bot_trap styled with CSS to be invisible to users. Spambots automatically populate all available form fields. When Rinnode detects data inside _rinnode_bot_trap, it silently drops the submission without writing to your database or charging your tier plan limit, returning a clean success status code to waste the bot's resources.

Headless CMS Script Embed

To embed CMS content on any static HTML / vibe-coded site without writing custom fetch scripts, drop this CSS-agnostic script tag into your page. It renders unstyled semantic tags that automatically adapt to your site's local CSS:

<!-- Place this where you want the content container to render -->
<div id="vibe-cms-blog-container"></div>

<!-- Include the unstyled, theme-agnostic headless embed script -->
<script 
  src="https://rinnode.com/embed/cms-headless.js"
  data-project="YOUR_PROJECT_ID"
  data-type="blog"
  data-container="vibe-cms-blog-container"
></script>

When executed, the script fetches your published items from Rinnode's edge CDN, compiles rich-text markdown to sanitized HTML, and maps it to clean HTML structures matching your parent page theme.

Real-Time Webhooks

Connect Rinnode to Slack, Discord, Zapier, or your own server.

Enable Webhooks in your endpoint settings to trigger a secure POST request to your destination URL every time a submission is received.

Webhook Payload Format

{
  "event": "submission.created",
  "created_at": "2026-06-16T15:43:01Z",
  "data": {
    "name": "Alex Chen",
    "email": "alex@example.com",
    "message": "Hi, I would like to join the beta!"
  }
}

Rinnode signs every webhook payload with a cryptographic HMAC signature (`x-rinnode-signature`) derived from your project secret so you can verify the sender authenticity.

Developer Integration Tools

Everything you need to integrate your ingestion workflow.

SDKs & Libraries

Rinnode endpoints are standard REST interfaces. You can bind them in any framework (React, Vue, Svelte, Next.js, Nuxt) using native HTTP clients or state managers. Use our hosted cms-headless.js client script to render dynamic CMS elements instantly on any page.

Step-by-Step Walkthroughs

Learn the best practices to handle Rinnode effectively.

Are you using a vibe coding builder like Lovable, Bolt.new, or Cursor and need a step-by-step guide? Check out our dedicated user walkthrough page.

Go to "How to Use" Guide

Ready to integrate?

Create your first endpoint in 30 seconds. Free forever.