Skip to main content

Cloud API

The hosted Ocular endpoint at https://api.nope.net/v1/ocular. Use this if you don't want to run Ocular yourself.

The request and response shape are identical to the universal API contract — verdict, eight user-risk axes, four AI-concern axes, optional trajectory and detail. This page covers the cloud-specific bits: auth, base URL, rate limits, and a few small response differences.

Base URL

https://api.nope.net/v1/ocular

There's a single endpoint: POST /v1/ocular (which is the /classify operation from the universal contract). The self-hosted /health and /manifest endpoints aren't exposed on the cloud surface.

Authentication

NOPE API key, sent as a Bearer token:

Authorization: Bearer <NOPE_API_KEY>

Get a key at dashboard.nope.net. Calls without a valid key return:

  • 401 — missing or malformed Authorization header
  • 403 — key revoked, suspended, or out of credits

Calls are billed per invocation; see Pricing below.

Request

Same as api-reference — the request body is the universal shape. Cloud-specific notes:

  • The log / session_id / user_id / agent_id request fields (used for Console integration on self-host deployments) are accepted but stored as metadata only — the cloud has no Console to push to. Use them for your own analytics correlation if you want; they appear in your usage records on dashboard.nope.net/ocular.
  • Request body size cap: 256 KB (self-host default is 1 MiB).

Response

Same shape as api-reference, minus the operational extras that only make sense on a container you control:

  • No signals[] array in the current response (returned shape is verdict + risks + ai_concerns + scalars + meta only). The richer contract — passing through signals[] keyed by public family head names — is in progress and will roll out without breaking the existing surface.
  • No detail block (scores, calibrated, contributors, corroboration) for the same reason as above. Coming with the next iteration of the cloud contract.
  • No license-status headers — the cloud doesn't surface a license token; auth is the API key. Quota / usage headers come from the api-gateway tier and aren't related to license tokens.

meta.version reports the underlying release SHA of the Ocular container backing the cloud. Use it for client-side cache busting if you'd like.

Rate limits

The cloud applies tier-dependent rate limits at the api-gateway layer:

Tier Burst (req/min) Sustained (req/day)
Free / dev 60 1,000
Production configurable per contract configurable per contract

Exceeding the burst returns 429 Too Many Requests. The Retry-After header (in seconds) tells you when to retry. Use exponential backoff with jitter — the limits reset on a sliding window.

For higher sustained throughput than your current tier allows, contact [email protected].

Pricing

POST /v1/ocular is billed per call. Current beta pricing is $0.0001 / call (0.1 mills). See nope.net/ocular#pricing for the current rate sheet; your dashboard tracks per-day usage and total spend.

Examples

curl -s -X POST https://api.nope.net/v1/ocular \
  -H "Authorization: Bearer $NOPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "User: I have been feeling really down lately"}'

Response (same shape as the universal contract):

{
  "verdict": "watch",
  "subject": "self",
  "imminence": {"level": "moderate", "score": 0.23},
  "fiction": 0.05,
  "authenticity": 0.78,
  "risks": { "...": "..." },
  "ai_concerns": { "...": "..." },
  "thoroughness": "auto",
  "confidence": null,
  "stability": null,
  "meta": {"version": "<sha>", "inference_ms": 28, "windowed": false, "windows": 1}
}

For higher-bandwidth integration patterns and shape interpretation, see the universal contract and risk interpretation.

What the cloud doesn't do

  • No GPU access, no on-prem inference. If you need to run Ocular inside your own VPC for data-residency reasons, use the self-hosted Docker image — see deployment.
  • No Console. Session-level dashboards, watchlists, and the conduit push pipeline are commercial features tied to the on-prem Console image; they aren't on the cloud surface. If you need them, see the commercial customer flow at nope.net/contact.

Not in scope on the cloud surface

  • License-status headers — only on self-host
  • /health and /manifest endpoints — only on self-host
  • Conduit push to Console — Console is on-prem
  • OCULAR_CONSOLE_URL, SCORING_URL, container env vars — not applicable

If you're reading the self-host-api page and looking for the cloud equivalent of a self-host-only feature, the answer is usually "the cloud handles that for you at the gateway, not in the response."