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 malformedAuthorizationheader403— 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_idrequest 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 ondashboard.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 throughsignals[]keyed by public family head names — is in progress and will roll out without breaking the existing surface. - No
detailblock (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
/healthand/manifestendpoints — 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."