Partner Integration API
Read published context and submit draft suggestions for one verified hostname. Base URL: https://app.optiview.ai. These are server-to-server APIs; CORS is not enabled.
Complete customer onboarding and technical integration guide →
Provision access
An agency admin opens a verified domain → Website Setup → Connection → Partner integrations. Generate a read-only key, or explicitly enable draft suggestions. Keys begin with ov_int_, are shown once, and are stored as SHA-256 hashes. Keep the secret in your server’s secret manager. Rotation or revocation invalidates previous credentials.
Existing ov_live_ render keys have no access to these endpoints. Integration keys cannot render or publish. Requests are limited to 1,000 per domain per UTC day, plus shared per-IP API limits. A new key does not reset the domain budget.
Read published brand content
curl 'https://app.optiview.ai/api/v1/integrations/narrative?url_path=%2F' -H "Authorization: Bearer $OPTIVIEW_INTEGRATION_KEY"
The response includes the hostname, publication version, published schemas, content blocks, frontmatter, and crawler directives. With url_path, it resolves the exact-path publication and returns matching rules. Omit the path to receive the default snapshot and all exact-path overrides. Drafts are never returned. Optional domain must exactly match the key’s hostname.
Submit a draft suggestion
curl https://app.optiview.ai/api/v1/integrations/webhook -H "Authorization: Bearer $OPTIVIEW_INTEGRATION_KEY" -H 'Content-Type: application/json' -H 'Idempotency-Key: finding-2026-001' --data '{"url_path":"/","type":"FAQ_BLOCK","gap_identified":"Clarify supported integrations","suggested_content":"## Which integrations are supported?\n\nAdd a verified, approved answer here before publishing."}'Requires draft-write permission. Supported types: FAQ_BLOCK, COMPETITOR_TABLE, and SITELINK_BLOCK. Paths may be exact, /*, or a section wildcard. Suggested content is Markdown, up to 20,000 characters; the gap description is up to 1,000. Each domain permits up to 30 saved content blocks.
A 201 response returns published: false, the new draft version, and the injection ID. The editor sees the gap receipt and new block under Brand Content → Added Content. Review, edit if needed, save, preview, then publish through the existing dashboard.
Check a suggestion’s publication status
GET /api/v1/integrations/status?url_path=%2F&idempotency_key=finding-2026-001 Authorization: Bearer $OPTIVIEW_INTEGRATION_KEY
Use the original idempotency key with the same domain-scoped integration credential. Read-only integration keys can also inspect status. The response returns publication_version, submitted_draft_version, injection_id and one of published_as_submitted, published_with_edits, or not_in_current_publication. The check resolves exact-path overrides and exposes no unpublished draft content. Unknown suggestions return 404. A suggestion may remain published on one path and absent on another. This is current publication state, not a historical delivery receipt or proof of AI retrieval.
Verify the delivered payload
The separate Render API uses an ov_live_ credential. Its successful response includes publication_version, source_mode and payload_sha256. Compute SHA-256 over the UTF-8 bytes of the returned payload string to verify integrity. The hash is not a signature or proof of downstream consumption. Render API documentation →
Retries and conflicts
Send a stable Idempotency-Key for each logical suggestion: 8–128 letters, digits, dots, underscores, colons, or hyphens. A repeated key with identical content returns 200 without another block. Different content with the same key returns 409. Receipts persist for the domain’s lifetime; deleting a draft block does not make a retry recreate it.
Other responses: 400 invalid input, 401 invalid/revoked key, 403 missing scope or browser use, 409 draft conflict or content limit, and 429 request budget. Retry transient failures with backoff and the same key. A stale dashboard save or publication is rejected after a partner changes the draft; reload to review it.
Website Preview API
POST /api/v1/tools/simulator accepts a public HTTPS URL and returns raw_markdown, cleaned_markdown, optiview_payload, and a separately labeled synthetic_injection. The first 2,000 characters of readable source text are used to generate an unreviewed example schema and FAQ. The initial HTML is retained for comparison. The public interface enables browser rendering by default. API callers can request it with render_javascript: true; an isolated browser then attempts rendering within ten seconds, allowing only same-origin GET resources. Rendering status is explicit; no result is published.
Generation status identifies a source-based AI example or a fallback reason. If generation is unavailable, source content is insufficient, or validation fails, no sample brand information is added. Input and generated fields are bounded and validated. Limits: ten requests per IP per UTC hour, three per minute, 30 per hostname per hour, and 200 total per UTC day. Preview requests require public HTTPS URLs without credentials or query strings. They can follow up to three validated redirects and inspect anonymous cookie-setting responses without forwarding credentials. These differ from the legacy audit restrictions below. Open Website Preview →
Legacy public audit
POST /api/v1/tools/audit accepts {"url":"https://example.com/"} without a key. It performs a bounded, public HTML fetch using Optiview’s own audit User-Agent, without JavaScript or AI conversion. It rejects redirects, private addresses, credentials, query strings, non-HTML responses, private cache policies, and cookie-setting pages. Limits: three requests per minute and five per hour per IP, 30 per hostname per hour, and 500 total audits per UTC day.
The output is a basic-fetch readability check, not an AI answer, bot verification, or a ranking score. Audit requests and integration calls are excluded from production crawl and render telemetry.