Secani
Secani
  • Company
  • Roadmap
Request demo

Summarize with AI

Open in ChatGPTOpen in ClaudeOpen in PerplexityOpen in MistralOpen in Grok
SIBB Startups
Berlin
Kofinanziert von der Europäischen Union
Secani

Jonathan Bezdek

Wörther Straße 9

10435 Berlin


hello@secani.com

Product

  • Security
  • Roadmap
  • Documentation
  • OSCAL

Legal

  • Privacy Policy
  • Terms
  • Cookie settings
  • Legal Notice

Company

  • Company
  • Contact
  • Blog

Support

  • Help

    OSCAL Validation API

    POST an OSCAL 1.2.2 JSON document and get a machine-readable validation report from the same engine as the browser validator, built for CI pipelines, agents, and integrations. No account required.

    Processed transiently, stored never. Your document is validated in memory on EU servers (Frankfurt) and discarded with the response. Secani does not persist, log, or reuse its contents; telemetry is aggregate only.

    curl -sS -X POST https://secani.com/api/oscal/v1/validate \
      -H "content-type: application/json" \
      --data-binary @system-security-plan.json

    Large artifacts compress extremely well, so send them gzipped to stay under the 4 MB wire limit:

    gzip -c catalog.json | curl -sS -X POST https://secani.com/api/oscal/v1/validate \
      -H "content-type: application/json" \
      -H "content-encoding: gzip" \
      --data-binary @-
    Read the API documentation OpenAPI 3.1 contract

    What teams build with it

    Gate merges in CI

    Validate the SSPs, profiles, and component definitions in your repository on every pull request. Branch on the valid field and jump straight to each issue via its RFC 6901 JSON Pointer.

    Self-correcting AI agents

    Agents that generate or edit OSCAL can validate in a loop: produce a document, read the pointer-precise issues, patch, and re-validate, with no human in the repair cycle.

    Browser tools without a backend

    CORS is open, so internal web tools can POST documents directly from the browser, for example checking a partner's delivered component definition before accepting it.

    How the v1 contract works

    The document is the request

    POST raw OSCAL 1.2.2 JSON, no envelope, no account. All eight models are detected from the root key. A completed validation always returns HTTP 200; invalid documents report valid: false.

    Large documents welcome

    Up to 4 MB raw and 24 MB decompressed with gzip request bodies. The full NIST SP 800-53 catalog validates in well under 100 milliseconds.

    Machine-readable everything

    Up to 200 issues with exact totals, stable RFC 9457 error codes, RateLimit headers, and an OpenAPI 3.1 contract for client generation.

    Fair anonymous limits

    10 requests per minute and 300 per day per client, surfaced through RateLimit response headers. API keys with higher, durable limits are planned; the anonymous tier stays.

    Today the API runs strict OSCAL 1.2.2 JSON Schema validation with a documented profile compatibility patch. The contract reserves a deeper validation level with constraint and reference checks on top of Secani’s extended validation registry; responses will name exactly what was checked, so a stored report becomes a reproducible attestation.

    Prefer to validate by hand?

    The browser validator runs the same checks entirely locally; your document never leaves the browser there.

    Open the browser validator Secani OSCAL toolkit