CorrectFeed

CorrectFeed API

Validate and inspect RSS/Atom feeds, XML feeds, and OPML subscription lists using simple HTTP endpoints. You can self-host the documentation via the OpenAPI spec or start with the examples below.

Base URL: https://api.correctfeed.com

Download OpenAPI 3.0 Spec Open Fix Tool

Quickstart

Quickstart (cURL)

curl -X POST https://api.correctfeed.com/api/validate-feed \
  -H "Authorization: Bearer <API_KEY>" \
+  -H "Content-Type: application/xml" \
  --data-binary @feed.xml

JavaScript (fetch)

const body = /* string or Buffer of file contents */ '';

const res = await fetch('https://api.correctfeed.com/api/validate-feed', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/xml',
    'Authorization': 'Bearer <API_KEY>',
  },
  body,
});
const data = await res.json();

Python (requests)

import requests
headers = {
  'Content-Type': 'application/xml',
    'Authorization': 'Bearer <API_KEY>',
}
data = open('feed.xml','rb').read()
r = requests.post('https://api.correctfeed.com/api/validate-feed', data=data, headers=headers)
print(r.json())

Common behavior

  • Free tier rate limit: 5 requests/minute per IP, enforced via Durable Object.
  • API keys unlock plan-based limits and bulk validation.
  • All responses include X-Request-Id for support and debugging.
  • Validation failures return HTTP 422 with issues[] and meta.
  • Rate limit breaches return HTTP 429 with Retry-After and X-RateLimit-Remaining.
  • Payloads are processed in memory; only metadata is retained for usage and history.

POST /api/validate-feed

Validate a single RSS/Atom feed or standalone XML feed. Supports raw bodies, JSON, or multipart uploads.

Input Description
text/xml / application/xml Raw feed XML in the request body.
text/plain Raw feed XML sent as plain text.
application/json JSON with feed, text, or payload fields.
multipart/form-data Upload a file using file, feed, text, body, or payload.
curl -X POST https://api.correctfeed.com/api/validate-feed \
  -H "Content-Type: application/xml" \
  --data-binary @feed.xml
Example 200 response
{
  "ok": true,
  "issues": [],
  "meta": {
    "bytes": 1428,
    "entryCount": 12,
    "atom": false,
    "rules": [],
    "validatorType": "rss",
    "timestamp": "2025-01-01T00:00:00.000Z",
    "parserIssues": 0
  }
}
Example 422 response
{
  "ok": false,
  "issues": [
    {
      "code": "RSS.ITEM.TITLE_MISSING",
      "level": "error",
      "message": "Item is missing <title>.",
      "path": "/rss/channel/item[2]/title",
      "validatorType": "rss"
    }
  ],
  "meta": {
    "bytes": 1428,
    "entryCount": 12,
    "atom": false,
    "rules": [],
    "validatorType": "rss",
    "timestamp": "2025-01-01T00:00:00.000Z",
    "parserIssues": 0
  }
}

POST /api/autofix-feed

Automatically fix common RSS/Atom/XML issues and return the corrected XML. This endpoint accepts text/xml, application/xml, or text/plain. Optionally pass a filename via ?filename= or the x-correctfeed-filename header for file history.

curl -X POST https://api.correctfeed.com/api/autofix-feed \
  -H "Content-Type: application/xml" \
  --data-binary @feed.xml

POST /api/validate-opml

Validate OPML subscription lists. Supports the same input formats as /api/validate-feed.

curl -X POST https://api.correctfeed.com/api/validate-opml \
  -H "Content-Type: application/xml" \
  --data-binary @subscriptions.opml

POST /api/autofix-opml

Automatically fix common OPML issues and return a normalized outline. Accepts text/xml, application/xml, or text/plain.

curl -X POST https://api.correctfeed.com/api/autofix-opml \
  -H "Content-Type: application/xml" \
  --data-binary @subscriptions.opml

POST /api/validate-bulk

Validate multiple feeds and OPML files by uploading a ZIP archive. This endpoint requires an API key and a plan with bulk validation enabled.

  • ZIP must contain .xml, .rss, .atom, or .opml files.
  • Up to 50 files and 5 MiB total uncompressed size per archive.
  • Authentication via Authorization: Bearer <API_KEY> or x-correctfeed-key.
zip feeds.zip a.xml b.rss c.opml
curl -X POST https://api.correctfeed.com/api/validate-bulk \
  -H "Content-Type: application/zip" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-binary @feeds.zip

Error reference

Status Meaning Notes
200 Validation succeeded Warnings may still be present.
401 Missing API key Bulk validation requires authentication.
403 Bulk not enabled Upgrade your plan to enable bulk validation.
413 Payload too large Request exceeds size limits.
415 Unsupported content type Use XML, plain text, JSON, or ZIP.
422 Validation failed See issues[] and meta for details.
429 Rate limit reached Respect Retry-After before retrying.
500 Internal error Retry and include X-Request-Id if reporting.

Next steps

For higher limits, API keys, and usage tracking, visit pricing or contact us via the contact form.

OpenAPI (machine-readable): /docs/openapi.yaml