Documentation
DATANODE API docs
These pages describe endpoints that are implemented on this site. Base URL: https://datanode-api.whop.site/api/v1
Getting started
- 1. Introduction. DATANODE is a JSON HTTP API. Send
Content-Type: application/jsonon POST requests. - 2. Account setup. Buy DATANODE Pro for $49.90 once, then sign in to the dashboard.
- 3. Authentication. Create a key and send
Authorization: Bearer dn_live_…. - 4. First request. Try
GET /api/v1/utils/uuidor the cURL sample on the home page.
Authentication
- Create keys in the dashboard. The full secret is shown once.
- Send the secret in the Authorization header. Query-string keys are rejected.
- Store secrets in your environment, not in client-side JavaScript you ship to browsers.
- Revoke a leaked key in the dashboard, then create a replacement.
- Keys only work while DATANODE Pro access is active on the Whop account that created them.
Authorization: Bearer dn_live_<payload>.<signature>
Endpoints
GET /api/v1/health does not require a key. GET /api/v1/me and GET /api/v1/endpoints are authenticated.
Transformation
POST /api/v1/transform/json
Apply pick, omit, flatten, unflatten, rename, and pluck operations to a JSON object or array.
POST /api/v1/transform/csv-to-json
Convert CSV text into an array of objects or rows.
POST /api/v1/transform/json-to-csv
Convert an array of objects or rows into CSV text.
Validation
POST /api/v1/validate/json-schema
Validate data against a supported JSON Schema subset (type, required, properties, items, enum, numeric and string constraints).
POST /api/v1/validate/email
Check whether a string is a well-formed email address.
POST /api/v1/validate/url
Check whether a string is a valid http or https URL.
POST /api/v1/validate/json
Parse a JSON string and report whether it is valid.
Formatting
POST /api/v1/format/json
Pretty-print or minify JSON.
POST /api/v1/format/string
Trim, change case, slugify, or convert a string between naming styles.
POST /api/v1/format/number
Format a number with locale, style, and fraction digits.
POST /api/v1/format/date
Format an ISO timestamp in a given time zone.
Parsing
POST /api/v1/parse/csv
Parse CSV text into rows or objects.
POST /api/v1/parse/querystring
Parse a URL query string into a key/value object.
POST /api/v1/parse/url
Parse a URL into protocol, host, path, query, and hash.
POST /api/v1/parse/json
Parse a JSON string into a value.
Developer Utilities
POST /api/v1/utils/hash
Hash a string with SHA-256, SHA-1, or SHA-512.
POST /api/v1/utils/base64
Encode or decode Base64.
GET /api/v1/utils/uuid
Generate a random UUID v4.
POST /api/v1/utils/uuid
Generate a random UUID v4.
Request examples
curl -s https://datanode-api.whop.site/api/v1/transform/json \
-H "Authorization: Bearer $DATANODE_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": { "user": { "id": 7, "email": "a@b.com" } },
"operations": [
{ "op": "flatten" },
{ "op": "pick", "keys": ["user.id"] }
]
}'const res = await fetch("https://datanode-api.whop.site/api/v1/validate/email", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DATANODE_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "dev@example.com" }),
});
const body = await res.json();
if (!res.ok) throw new Error(body.error?.message ?? res.statusText);import os, requests
response = requests.post(
"https://datanode-api.whop.site/api/v1/format/date",
headers={"Authorization": f"Bearer {os.environ['DATANODE_KEY']}"},
json={
"value": "2026-10-02T19:00:00Z",
"timeZone": "America/New_York",
"dateStyle": "medium",
"timeStyle": "short",
},
timeout=20,
)
response.raise_for_status()
print(response.json())Errors
Failed responses look like { "ok": false, "error": { "code": "invalid_key", "message": "…" } }. Common codes: unauthorized, invalid_key, revoked_key, no_access, rate_limited, quota_exceeded, payload_too_large, invalid_json, not_found.
Limits
- 10,000 requests per UTC calendar month
- 60 requests per minute
- Request body at most 256 KB
- CSV and JSON arrays at most 10,000 rows
- At most 5 active API keys per account
- No webhook delivery in this version
