Everything you need to integrate Rinnode into your app. Copy-paste examples, full API reference, and framework guides.
Three ways to integrate Rinnode into your app.
<!-- 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. -->// 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)# 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!"
}'Rinnode aggregates waitlists, contact forms, newsletter signups, bug reports, and feedback forms behind a single, unified ingest endpoint.
/api/v1/f/{endpoint_id}Unified form ingestion. Accepts form-data or raw JSON payloads./api/cms/v1/content/{project_id}/{type_slug}Retrieves published content items (blogs, FAQs). Accepts ?slug=page-slug, ?limit=10, ?offset=0./api/cms/v1/content/{project_id}/{type_slug}Submits user-generated content (UGC) directly. Entries save as draft until approved in admin panel.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
}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.
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.
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.
{
"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.
Everything you need to integrate your ingestion workflow.
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.
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