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 contractsalience, eight user-side axes under signals.user, four AI-side axes under signals.ai, 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 heads[] array. The cloud response is salience + nested signals.{user,ai} + scalars + meta by design — raw head identifiers are not a decision surface, so they are deliberately not exposed here.
  • No detail block (scores, calibrated, contributors, corroboration) for the same reason — these are operational diagnostics, not part of the customer contract.
  • No license-status headers — those are a self-host concern; cloud auth is your NOPE API key. Quota and usage come from the standard /v1/* headers.

meta.version reports the release semver of the Ocular container backing the cloud (e.g. "0.3.0"); meta.build carries the underlying source SHA. Use either 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):

{
  "salience": 0.41,
  "subject": "self",
  "imminence": {"level": "moderate", "score": 0.23},
  "fiction": 0.05,
  "authenticity": 0.78,
  "signals": {
    "user": { "...": "..." },
    "ai":   { "...": "..." }
  },
  "thoroughness": "auto",
  "confidence": null,
  "stability": null,
  "meta": {"version": "0.3.0", "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."