omfang Digital Marketing Tool
Particles Swarm Export
">
Contents
Getting started
Authentication
Endpoints
POST /manifest
GET /health
GET /session-status
Response Schema
Rate-Limits
Caching
Contents
Getting started
Authentication
Endpoints
POST /manifest
GET /health
GET /session-status
Response Schema
Rate-Limits
Caching
Contents
Getting started
Manifest API makes any webpage agent-readable. Pass a URL, get back a structured JSON manifest describing what the page contains and what actions are available.
Quickstart
Get an API key from your manifest dashboard.
Send a URL, get back a manifest.
cURL
Python
Node
curl -X POST https://manifest.omfang.io/manifest \<br>-H "X-API-Key: your-key-here" \<br>-H "Content-Type: application/json" \<br>-d '{"url": "https://omfang.io/contact"}'
CopyCopyCopied!
Response:
"url": "https://omfang.io/contact",<br>"authenticated_user": null,<br>"current_page_state": "Contact page with a form for name, email, and message",<br>"actions": [<br>"id": "name-input",<br>"label": "Name",<br>"type": "input",<br>"description": "Text field for the sender's name",<br>"required": true<br>},<br>"id": "email-input",<br>"label": "Email",<br>"type": "input",<br>"description": "Email field for the sender's contact address",<br>"required": true<br>},<br>"id": "message-input",<br>"label": "Message",<br>"type": "textarea",<br>"description": "Free text field for the inquiry message",<br>"required": true<br>},<br>"id": "submit-contact-form",<br>"label": "Send message",<br>"type": "button",<br>"description": "Submits the contact form",<br>"required": false<br>],<br>"navigation": [<br>{ "label": "Home", "url": "/" },<br>{ "label": "Manifest", "url": "/manifest" }
cURL
Python
Node
curl -X POST https://manifest.omfang.io/manifest \<br>-H "X-API-Key: your-key-here" \<br>-H "Content-Type: application/json" \<br>-d '{"url": "https://omfang.io/contact"}'
CopyCopyCopied!
Response:
"url": "https://omfang.io/contact",<br>"authenticated_user": null,<br>"current_page_state": "Contact page with a form for name, email, and message",<br>"actions": [<br>"id": "name-input",<br>"label": "Name",<br>"type": "input",<br>"description": "Text field for the sender's name",<br>"required": true<br>},<br>"id": "email-input",<br>"label": "Email",<br>"type": "input",<br>"description": "Email field for the sender's contact address",<br>"required": true<br>},<br>"id": "message-input",<br>"label": "Message",<br>"type": "textarea",<br>"description": "Free text field for the inquiry message",<br>"required": true<br>},<br>"id": "submit-contact-form",<br>"label": "Send message",<br>"type": "button",<br>"description": "Submits the contact form",<br>"required": false<br>],<br>"navigation": [<br>{ "label": "Home", "url": "/" },<br>{ "label": "Manifest", "url": "/manifest" }
Authentication
All requests require an API key passed in the X-API-Key header. Keys are issued from your dashboard and can be rotated or revoked at any time.
X-API-Key: your-key-here
Requests without a valid key return
401 Unauthorized.
Endpoints
POST/manifest
Returns a structured action manifest for any URL.
Request:
JSON
"url": "https://example.com"
Response:
JSON
"url": "string",<br>"authenticated_user": "string | null",<br>"current_page_state": "string",<br>"actions": [<br>"id": "string",<br>"label": "string",<br>"type": "button | input | textarea | select | checkbox | radio | other",<br>"description": "string",<br>"required": "boolean"<br>],<br>"navigation": [<br>{ "label": "string", "url": "string" }
GET/health
Returns the API health status. No authentication required.
JSON
{ "status": "ok" }
GET/session-status
Returns whether the current browser session is valid. No authentication required
JSON
{ "valid": true }
or
JSON
{ "valid": false, "message": "Session expired" }
Response fields:
Field
Type
Description
url
string
The url that was requested
authenticated_user
string or null
Detected logged-in user, if any
current_page_state
string
Brief description of the page
actions
array
Interactive elements on the page
navigation
array
Primary navigation links
Action fields:
Field
Type
Description
id
string
Unique identifier for the action
label
string
Human-readable label
type
string
button, input, textarea, select, checkbox, radio, other
description
string
What the action does
required
boolean
Whether the field is required
Rate limits
Plans
Calls/month
Per-minute limit
Free
50
10/min
Starter
1,000
10/min
Pro
5,000
10/min
Exceeding the per-minute limits returns
429 Too Many Requests
Error codes
Code
Meaning
401
Missing or invalid API key
429
Rate limit exceeded
503
Browser session unavailable — retry later
Caching
Manifests are cached for 6 hours by default. Repeated requests for the same URL within that window are served instantly from cache at no extra cost to your call limit.
Get your API key