| Method and path | Shared operation | Status | Resource-route differences |
|---|---|---|---|
GET /v1/commands | HTTP transport/account | 200 | Authenticated command index grouped by toolset (name and summary per toolset). Each command lists its name, read or write, a short summary, scopes and scope authorization, plus tier (core only), aliases, confirmation class and availability only when they apply. ?include=schemas returns the full definitions with input and output schemas; any other query parameter is refused. |
GET /v1/catalog.json | HTTP transport/account | 200 | The catalog lists commands for the authenticated credential, including toolset, tier, aliases, keywords, scopes, schemas and availability, plus MCP and client view URLs. Customer listings show the commands exposed at launch; operator credentials retain the full registry. The response carries an ETag and Cache-Control: private, no-store. If-None-Match can return 304. ?format=anthropic-tools returns the same listed commands as an Anthropic Messages API tool array: tools use defer_loading, allow direct and code-execution calls through allowed_callers, and omit strict. Execute them through POST /v1/commands/{name}. Listings do not grant scopes or confirm supplier admission. |
GET /v1/tasks/{taskId} | HTTP transport/account | 200 | Read a check job (job_ or tjb_ ID) or a verification batch (cvb_ ID) as a REST task: taskId, status, ttl, createdAt, lastUpdatedAt, pollInterval, statusMessage and the underlying record in result. ttl and pollInterval use milliseconds. This GET returns the record directly; MCP task methods use their negotiated wire envelopes. Reading tasks requires watches:read; verification batches also require discovery:read. It starts no provider work. |
GET /v1/commands/{name} | HTTP transport/account | 200 | Describe one command: toolset, tier, read or write, scopes and whether this credential holds them, description, input and output schemas, annotations, examples, aliases, availability, and how to run it on REST, the CLI and MCP. A retired name resolves to its canonical command and the response says so. Unknown names answer 404 TOOL_NOT_FOUND with a next hint. |
POST /v1/commands/{name} | HTTP transport/account | 200 | All command arguments in JSON body; query parameters and Idempotency-Key header are refused. Success is HTTP 200, including queued jobs. |
GET /v1/workspaces | HTTP transport/account | 200 | Human session; lists memberships without workspace selection and returns ownership (owned workspace count, cap and plan). |
POST /v1/workspaces | HTTP transport/account | 201 | Human session; JSON name creates a workspace within the account ownership cap. Raw workspace and membership rows can include schema extensions. |
POST /v1/invitations/accept | HTTP transport/account | 201 | Human session; JSON token; accepting identity needs a verified matching email. Does not require prior membership. |
GET /v1/access | HTTP transport/account | 200 | Human owner/admin session. With browse omitted, returns keys and grants metadata (at most 100 each) plus pendingClientsStatus and up to 10 verified OAuth client observations. An unavailable pending-client result does not establish that no client requested access. With browse=true, choose list=keys or grants for a server-sorted saved-row page, default limit 25 and maximum 100, with credential-bound cursor, total and page metadata. Neither response returns stored credential secrets. |
POST /v1/access/keys | HTTP transport/account | 201 | Human owner/admin session; creates a scoped API credential within the creator permission ceiling and returns its secret once. Listing credentials does not return that secret. |
DELETE /v1/access/keys/{id} | HTTP transport/account | 200 | Human owner/admin; returns {id,revoked:true}. |
DELETE /v1/access/grants/{id} | HTTP transport/account | 200 | Human owner/admin; returns {id,revoked:true}. |
GET /v1/workspace | get_workspace | 200 | Resource response adds access:{role,scopes,project_ids} alongside workspace information. |
GET /v1/usage | get_usage | 200 | Remaining read arguments go in query parameters. |
GET /v1/workspace/events | list_workspace_events | 200 | Remaining read arguments go in query parameters. |
GET /v1/projects | list_projects | 200 | Remaining read arguments go in query parameters. |
POST /v1/projects | create_project | 201 | Remaining arguments go in a JSON object body. |
GET /v1/projects/{projectId} | get_project | 200 | Remaining read arguments go in query parameters. |
GET /v1/watches | list_link_watches | 200 | Read arguments go in query parameters. state accepts rechecking for couldnt_check records whose current verification state is suspected_missing, or cant_reach for the remaining couldnt_check records. These filters partition couldnt_check; they neither queue a check nor confirm loss. Returned rows retain their verification state. Category filters use categoryScope=shown by default; page_role selects occurrence roles. assessmentScope=current is the default for AI evidence. With a supplied category and categoryScope=shown, assessmentScope=previous selects AI evidence that is no longer current and excludes team choices. Filters apply before pagination; reading starts no classification. |
POST /v1/watches | monitor_link | 201 | Remaining arguments go in a JSON object body. |
POST /v1/watches/import | import_link_watches | 201 | Remaining arguments go in a JSON object body. |
GET /v1/watches/{watchId} | get_link_watch | 200 | Remaining read arguments go in query parameters. |
PATCH /v1/watches/{watchId} | update_link_watch | 200 | Remaining arguments go in a JSON object body. |
GET /v1/watches/{watchId}/history | get_history | 200 | The URL fixes subject and subjectId. Remaining history arguments go in query parameters. This resource response keeps the detailed row format. |
GET /v1/watches/{watchId}/contacts | get_public_contacts | 200 | Remaining read arguments go in query parameters. |
POST /v1/watches/{watchId}/recheck | request_check | 202 | The URL fixes subject and subjectId. Supply idempotencyKey through the Idempotency-Key header; this resource route reads no JSON body. HTTP 202 admits queued work and does not report a completed observation. |
GET /v1/jobs | list_check_jobs | 200 | Remaining read arguments go in query parameters. |
GET /v1/jobs/{jobId} | get_check_job | 200 | Remaining read arguments go in query parameters. |
GET /v1/events | list_events | 200 | The URL selects the links feed. Remaining feed arguments go in query parameters; preserve this feed and scope on continuation. With browse=true, table_filters supports change, importance, last_7_days and last_30_days; these expressions do not add response fields. HTTP table_filters is a JSON-encoded array string. |
GET /v1/exports/watches | export_link_watches | 200 | Read arguments go in query parameters. state accepts rechecking for couldnt_check records whose current verification state is suspected_missing, or cant_reach for the remaining couldnt_check records. These filters partition couldnt_check; they neither queue a check nor confirm loss. Returned rows retain their verification state. Category filters use categoryScope=shown by default; page_role selects occurrence roles. assessmentScope=current is the default for AI evidence. With a supplied category and categoryScope=shown, assessmentScope=previous selects AI evidence that is no longer current and excludes team choices. Filters apply before pagination; reading starts no classification. |
GET /v1/observations/{observationId}/locate | locate_link | 200 | Remaining read arguments go in query parameters. |
GET /v1/observations/{observationId}/evidence | get_evidence | 200 | Returns raw evidence JSON as an attachment with Content-Disposition, Cache-Control: no-store and restrictive CSP. HTTP 410 EVIDENCE_EXPIRED when bytes expire. The generic command uses its documented response object. The URL fixes subject; do not supply another subject. |
GET /v1/reports/links | get_link_reports | 200 | Read arguments go in query parameters. This direct route also accepts links=all (default) or links=live, using the live status from get_link_summary. Generic command, profile and anchor routes reject links. |
GET /v1/reports/profile | get_link_profile | 200 | Remaining read arguments go in query parameters. |
GET /v1/reports/anchors | get_anchor_report | 200 | Remaining read arguments go in query parameters. |
GET /v1/targets | list_targets | 200 | Remaining read arguments go in query parameters. |
POST /v1/targets | monitor_target | 201 | Remaining arguments go in a JSON object body. |
GET /v1/targets/{targetId} | get_target | 200 | Remaining read arguments go in query parameters. |
PATCH /v1/targets/{targetId} | update_target | 200 | Remaining arguments go in a JSON object body. |
GET /v1/targets/{targetId}/history | get_history | 200 | The URL fixes subject and subjectId. Remaining history arguments go in query parameters. This resource response keeps the detailed row format. |
GET /v1/targets/{targetId}/placements | get_target_placements | 200 | Remaining read arguments go in query parameters. |
POST /v1/targets/{targetId}/recheck | request_check | 202 | The URL fixes subject and subjectId. Supply idempotencyKey through the Idempotency-Key header; this resource route reads no JSON body. HTTP 202 admits queued work and does not report a completed observation. |
GET /v1/target-jobs/{jobId} | get_check_job | 200 | Remaining read arguments go in query parameters. |
GET /v1/target-events | list_events | 200 | The URL selects the targets feed. Remaining feed arguments go in query parameters; preserve this feed and scope on continuation. This target resource response keeps the detailed row format. With browse=true, table_filters supports last_7_days and last_30_days as UTC calendar-day lower bounds; change and importance are link-feed expressions. HTTP table_filters is a JSON-encoded array string. |
GET /v1/target-observations/{observationId}/evidence | get_evidence | 200 | Returns raw evidence JSON as an attachment with Content-Disposition, Cache-Control: no-store and restrictive CSP. HTTP 410 EVIDENCE_EXPIRED when bytes expire. The generic command uses its documented response object. The URL fixes subject; do not supply another subject. |
POST /v1/discovery/imports | import_backlinks | 201 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
GET /v1/discovery/runs | list_discovery_runs | 200 | Remaining read arguments go in query parameters. |
GET /v1/discovery/runs/{runId} | get_discovery_run | 200 | Remaining read arguments go in query parameters. |
GET /v1/discovery/runs/{runId}/candidates | list_discovery_candidates | 200 | Remaining read arguments go in query parameters. |
POST /v1/discovery/overviews | request_domain_overview | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
GET /v1/discovery/overviews/{runId} | get_domain_overview | 200 | Remaining read arguments go in query parameters. |
POST /v1/discovery/runs/{runId}/candidates/{candidateId}/verify | verify_discovery_candidate | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
GET /v1/discovery/verifications/{jobId} | get_candidate_verification | 200 | Remaining read arguments go in query parameters. |
POST /v1/discovery/runs/{runId}/verification-batches | verify_discovery_candidates | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. Returns 202 for pending batches and 200 otherwise. |
GET /v1/discovery/verification-batches/{batchId} | get_candidate_verification_batch | 200 | Remaining read arguments go in query parameters. |
POST /v1/discovery/verifications/{jobId}/monitor | monitor_discovery_candidate | 200 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
GET /v1/competitor-lookups | HTTP transport/account | 200 | Console read; supply projectId in the query. Needs discovery:read and watches:read. Returns the project’s current competitor set members, each with its latest saved lookup run, without enqueueing work. |
GET /v1/competitor-lookups/{runId}/insights | HTTP transport/account | 200 | Console read; supply projectId in the query. Needs discovery:read and watches:read. Summarizes one finished competitor lookup run (links, live, lost, dofollow and referring sites, and links the project does not yet have) from retained discovery candidates. |
POST /v1/competitor-sets | create_competitor_set | 201 | Remaining arguments go in a JSON object body. |
GET /v1/competitor-sets | list_competitor_sets | 200 | Remaining read arguments go in query parameters. |
GET /v1/competitor-sets/{setId} | get_competitor_set | 200 | Remaining read arguments go in query parameters. |
PATCH /v1/competitor-sets/{setId} | update_competitor_set | 200 | Remaining arguments go in a JSON object body. |
DELETE /v1/competitor-sets/{setId} | retire_competitor_set | 200 | Remaining arguments go in a JSON object body. |
POST /v1/competitor-sets/{setId}/runs | request_competitor_inventory | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
POST /v1/competitor-inventories | capture_competitor_inventory | 201 | Remaining arguments go in a JSON object body. |
GET /v1/competitor-sets/{setId}/inventories | list_competitor_inventories | 200 | Remaining read arguments go in query parameters. |
GET /v1/competitor-inventories/{inventoryId}/rows | list_competitor_inventory_rows | 200 | Remaining read arguments go in query parameters. |
POST /v1/competitor-sets/{setId}/gap-report | get_competitor_gap_report | 200 | Remaining arguments go in a JSON object body. |
POST /v1/competitor-sets/{setId}/domain-mix | get_domain_mix_report | 200 | Remaining arguments go in a JSON object body. |
GET /v1/competitor-sets/{setId}/exclusions | get_competitor_exclusions | 200 | Remaining read arguments go in query parameters. |
PUT /v1/competitor-sets/{setId}/exclusions | save_competitor_exclusions | 201 | Remaining arguments go in a JSON object body. |
POST /v1/competitor-sets/{setId}/exclusions/preview | preview_competitor_exclusions | 200 | Remaining arguments go in a JSON object body. |
GET /v1/competitor-sets/{setId}/refresh | get_competitor_refresh | 200 | Remaining read arguments go in query parameters. |
PUT /v1/competitor-sets/{setId}/refresh | configure_competitor_refresh | 200 | Remaining arguments go in a JSON object body. |
PATCH /v1/competitor-sets/{setId}/refresh | set_competitor_refresh_paused | 200 | Remaining arguments go in a JSON object body. |
GET /v1/members | list_members | 200 | Remaining read arguments go in query parameters. |
PATCH /v1/members/{userId} | set_member_access | 200 | Remaining arguments go in a JSON object body. |
DELETE /v1/members/{userId} | remove_member | 200 | Remaining arguments go in a JSON object body. |
GET /v1/invitations | list_invitations | 200 | Remaining read arguments go in query parameters. |
POST /v1/invitations | invite_member | 201 | Remaining arguments go in a JSON object body. |
DELETE /v1/invitations/{invitationId} | revoke_invitation | 200 | Remaining arguments go in a JSON object body. |
GET /v1/search-connections | list_search_connections | 200 | Required projectId goes in the query. Returns provider availability and public connection state. |
GET /v1/search-connections/{connectionId}/rows | list_search_connection_rows | 200 | Optional limit and opaque cursor go in the query. Reads stored provider rows with collection coverage. |
POST /v1/search-connections/{connectionId}/sync | sync_search_connection | 200 | Send a JSON object. Omit continue for a fresh collection; continue:true requests the next available Bing provider batch. Does not start monitoring. |
POST /v1/search-connections/{connectionId}/import | import_search_connection_rows | 200 | Send rowIds and idempotencyKey in the JSON body. Imports selected saved Bing rows as unchecked discovery candidates; repeat the same request key when retrying. |
POST /v1/search-connections/start | HTTP transport/account | 200 | Signed-in workspace owner or administrator with discovery:write. Returns the provider sign-in URL and sets an HttpOnly browser-binding cookie; the browser completes consent. |
GET /v1/search-connections/{connectionId}/properties | HTTP transport/account | 200 | Signed-in workspace owner or administrator with discovery:read. Lists properties accessible to the connected provider account. |
PUT /v1/search-connections/{connectionId}/property | HTTP transport/account | 200 | Signed-in workspace owner or administrator with discovery:write. Selects an accessible property covering the project and clears the previous saved rows. |
POST /v1/search-connections/{connectionId}/disconnect | HTTP transport/account | 200 | Signed-in workspace owner or administrator with discovery:write. Send an empty JSON object. Erases local provider credentials and retains saved results. |
DELETE /v1/search-connections/{connectionId} | HTTP transport/account | 200 | Signed-in workspace owner or administrator with discovery:write. Send confirmation exactly as forget connection followed by a space and this connectionId. Removes the connection and saved provider rows. |
GET /v1/citation-events | list_events | 200 | The URL selects the citations feed. Remaining feed arguments go in query parameters; preserve this feed and scope on continuation. |
GET /v1/reports/link-changes | get_link_change_report | 200 | Requires projectId and from query parameters. Returns a frozen recent-period read of at most 500 retained placement changes with completeness and retention limits. |
GET /v1/reports/summary | get_link_summary | 200 | Optional projectId and days (1-90, default 30) query parameters. Returns per-website and total link counts by status, last checked, and links found and lost in the period; found and lost are null without events:read. |
GET /v1/link-review/checkpoint | get_link_review_checkpoint | 200 | Requires accessible projectId; reads the latest explicit human checkpoint and retained-history gaps. Disabled by default. |
POST /v1/baseline-interactions | HTTP transport/account | 200 | Development-only consented client capture; default off. When enabled requires a human session, exact PUBLIC_ORIGIN, current selected baseline and browser consent token. Successful export/copy hashes are client byte claims, not independent execution evidence. candidateId is only for source_inspected; artifactSha256 is only for portable_export_completed or agent_task_copied. Returns typed disabled/consent/ineligible/capacity receipts without supplier work. |
POST /v1/link-review/artifacts | HTTP transport/account | 201 | Development-only held review preparation; default off with LINK_REVIEW_DISABLED. Requires events:read and exact accessible project; accepts agent API keys or human session (human workspace selection uses X-Workspace-ID). Explicit intent prepares a bounded immutable server artifact, digest and confirmation; does not complete a review or call a supplier. |
POST /v1/link-review/complete | HTTP transport/account | 200 | Development-only explicit human review completion; default off with LINK_REVIEW_DISABLED. Requires exact PUBLIC_ORIGIN, human session, current write-capable member and events:read. Exact held artifact/digest/sequence/confirmation is required. Optional browser consent capture does not gate the acknowledgment. Replays retain the original receipt; older acknowledgments cannot lower the current checkpoint or resolve incomplete history. |
GET /v1/watches/{watchId}/chronology | get_placement_chronology | 200 | Reads frozen retained chronology; comma-separated streams, limit and cursor are query arguments. Denied streams disclose no counts. This read schedules no check. |
GET /v1/projects/{projectId}/monitoring-assurance | get_monitoring_service_assurance | 200 | Reads scoped supplied-record freshness and service timestamps. Health checks, backups, elapsed soak and external delivery remain separate acceptance. |
GET /v1/watches/{watchId}/classification | get_placement_context | 200 | Reads retained occurrences, labels and dated native authority without a source fetch or model call. Missing authority stays unavailable; a native score is not a spam verdict. |
GET /v1/watches/{watchId}/classification/jobs/{jobId} | get_placement_classification_job | 200 | Reads the existing job without repairing or retrying it. A reconciliation_required state never authorizes a provider retry. When canReconcile is true, a retained result and its original settled usage receipt support explicit publication recovery, subject to current evidence and access checks. |
GET /v1/watches/{watchId}/classification/history | get_placement_review_history | 200 | Reads retained review history for one exact occurrence and capture. Pages bind a frozen revision. Expired or missing history does not prove that no earlier changes occurred. Makes no model request or write. |
GET /v1/projects/{projectId}/classification-metadata | get_classification_metadata | 200 | The URL selects projectId. Remaining read arguments go in query parameters; asOfRevision is parsed as a number. |
GET /v1/projects/{projectId}/classification-metadata/occurrences | get_placement_metadata | 200 | The URL selects projectId. Remaining read arguments go in query parameters; asOfRevision is parsed as a number. |
POST /v1/watches/bulk-labels | tag_links | 200 | The JSON body uses the shared tag_links input for up to 100 monitored links. Tags stay separate from the team category and page assessment. Supplied type creates a team choice; type=null deliberately clears it. The change starts no verification or classification job and preserves monitoring status and cadence. |
GET /v1/tags | list_link_tags | 200 | Read workspace tags. Only includeArchived=true includes archived tags; omitted or any other value selects active tags. |
POST /v1/tags | save_link_tag | 201 | Create or update a workspace tag from the shared command input; creating an existing name returns that saved tag. |
PATCH /v1/tags/{tagId} | save_link_tag | 200 | The URL selects tagId, overriding a body tagId. Remaining fields go in JSON. |
PUT /v1/watches/{watchId}/type | set_link_type | 200 | The URL selects watchId. Send a chosen type or type=null in JSON; optional revision checks chosen_category.revision. To use saved AI evidence again, send intent=automatic with the current revision and omit type. This changes display intent without a model request or occurrence approval. |
POST /v1/watches/{watchId}/tags | tag_links | 200 | Send JSON tagId. The adapter sets watchIds to the URL watchId and addTagIds to that one tag; it does not accept a bulk command body. |
DELETE /v1/watches/{watchId}/tags/{tagId} | tag_links | 200 | The URL selects the one watch and tag to remove. The adapter sets watchIds and removeTagIds; it reads no JSON body. |
DELETE /v1/watches/{watchId}/tags | tag_links | 200 | Send JSON tagId. The adapter sets watchIds to the URL watchId and removeTagIds to that one tag. |
GET /v1/exports/workspace | HTTP transport/account | 200 | Requires exports:create. Read a bounded live metadata page from the reviewed table allowlist. Default limit is 100; maximum 200. Continue each table with its own cursor and preserve workspace, project and table. Unknown query parameters are refused. Unchanged pages keep content hashes; changed hashes indicate changed live rows. This export excludes raw evidence, credentials and unreviewed/shared payloads; complete is always false. |
GET /v1/exports/placements/{watchId}/record | HTTP transport/account | 200 | Requires exports:create and watches:read. Freeze one retained placement chronology, loading at most maxPages (default 20, maximum 50) with 100 rows per page. Inspect gaps, coverage and pagination.complete; reaching the page bound leaves partial history. It starts no verification or provider job. |
GET /v1/workspace/deletion | HTTP transport/account | 200 | Human owner/admin session with unrestricted workspace access. Read a scope/schema-bound deletion preview and a confirmation token that expires in ten minutes. The confirmation service must be configured. Inspect census, copied-payload coverage and exclusions, then export first. This read records no deletion request and deletes no data. |
POST /v1/workspace/deletion-requests | HTTP transport/account | 202 | Human owner/admin session with unrestricted workspace access. Requires the configured application Origin and a fresh preview confirmation bound to this person, project/workspace and unchanged schema. Send only confirmation and optional projectId. HTTP 202 records or resumes a request; it deletes no data immediately and provides no completion certificate. Provider, shared-copy, legacy and external-custody erasure require operator reconciliation. |
GET /v1/workspace/deletion-requests/{requestId} | HTTP transport/account | 200 | Human owner/admin session with unrestricted workspace access. Read one request in the selected workspace. A missing request returns 404 DELETION_NOT_FOUND and establishes no erasure. Local completion still leaves external coverage unconfirmed and completion_certificate null. |
POST /v1/internal-links/snapshots | create_internal_link_snapshot | 201 | Supply all inputs in the JSON body, including projectId and requestId. requestId is the retry identity; this route does not read an Idempotency-Key header. HTTP 201 returns a saved inventory and limits, with no page capture. Requires watches:read and watches:write. |
GET /v1/internal-links/snapshots | list_internal_link_snapshots | 200 | Supply projectId, optional numeric limit and opaque cursor as query parameters. Returns the retained snapshot page and limits. |
POST /v1/internal-links/snapshots/{snapshotId}/process | process_internal_link_snapshot | 200 | The path sets snapshotId. Supply projectId and optional maxPages in the JSON body. HTTP 200 returns current progress and limits, which may include retryAt; it does not guarantee that a page was captured. Requires watches:read and watches:write. |
GET /v1/internal-links/snapshots/{snapshotId} | get_internal_link_snapshot | 200 | The path sets snapshotId; projectId goes in the query. Returns snapshot progress and limits without new capture. |
GET /v1/internal-links/snapshots/{snapshotId}/query | query_internal_link_snapshot | 200 | The path sets snapshotId. Supply projectId and optional view, numeric limit, opaque cursor, pageUrl, contextualOnly and baselineSnapshotId as query parameters. contextualOnly accepts the literal strings true or false. Returns one page of evidence with snapshot coverage and limits. |
GET /v1/reports/history | get_profile_history | 200 | Supply projectId and from in the query, with optional to, selection and kinds. kinds is one comma-separated string of found,back,lost,missing; the route converts it to the command array. Returns a retained transition report; it starts no collection. |
GET /v1/reports/history/records | list_profile_history_records | 200 | Supply projectId and selection in the query, with optional cursor, numeric limit and format. format=csv requires exports:create in addition to watches:read and events:read. The response stays JSON with page records and a csv string; it is not a raw CSV response or a complete multi-page export. |
POST /v1/internal-links/preview | preview_internal_link_inventory | 200 | Supply projectId and requestId in the JSON body. HTTP 200 returns a retained discovery preview and its limits, which may be pending, empty or partial. Requires watches:read and watches:write. Reuse requestId to retrieve the same unexpired preview after an uncertain response; confirm selected URLs through create_internal_link_snapshot separately. |
POST /v1/competitor-analyses | start_competitor_analysis | 202 | Supply input in the JSON body, including idempotencyKey and consent. This route does not read an Idempotency-Key header. HTTP202 returns saved background intent; supplier admission is required. |
GET /v1/competitor-analyses | list_competitor_analyses | 200 | Supply projectId, setId, revision and memberId in the query. Returns retained analyses without enqueueing work. |
GET /v1/competitor-analyses/{analysisId} | get_competitor_analysis | 200 | The path sets analysisId. Reads saved progress without starting work. |
POST /v1/internal-links/scans | start_internal_link_scan | 202 | Supply projectId and requestId in the JSON body. HTTP202 returns saved background intent; requestId is the retry identity. |
GET /v1/internal-links/scans | list_internal_link_scans | 200 | Supply projectId in the query. Returns retained background scans without enqueueing work. |
GET /v1/internal-links/scans/{scanId} | get_internal_link_scan | 200 | The path sets scanId; projectId goes in the query. Reads saved progress. |
POST /v1/internal-links/scans/{scanId}/control | control_internal_link_scan | 200 | The path sets scanId. Supply projectId, action and current controlRevision as revision in the JSON body. |
GET /v1/internal-links/scans/{scanId}/query | query_internal_link_scan | 200 | The path sets scanId. Supply projectId and optional view, numeric limit, cursor, pageUrl and contextualOnly in the query. contextualOnly accepts true or false. Cursors bind the evidence revision. |
POST /v1/internal-links/changes | save_internal_link_change | 200 | Supply projectId, requestId and action in the JSON body, with scanId and subjectId to select or dismiss a scan subject, or changeId and revision to update a saved change. requestId is the retry identity. |
GET /v1/internal-links/changes | list_internal_link_changes | 200 | Supply projectId and optional state, numeric limit and cursor in the query. Reading never checks a page. |
POST /v1/internal-links/changes/{changeId}/verify | verify_internal_link_change | 200 | The path sets changeId. Supply projectId and requestId in the JSON body. One check per change every 10 minutes; HTTP429 carries Retry-After. |
GET /v1/internal-links/report | get_internal_link_report | 200 | Supply projectId and optional scanId and baselineScanId in the query. A read of saved reports; it never starts a scan. |
preview_resource_deletion and delete_resource use the generic command endpoint. They have no additional resource-route alias. Anonymous checks use POST /free/check and GET /free/check/{resultId}; their quotas and result retention are separate from authenticated commands. GET /healthz is a public process-health probe. GET /config exposes the selected environment’s public client configuration and capability flags.
Check the selected environment and workspace access before calling hosted operations. See capability status.