The hosted catalog returned HTTP 404 on 2026-09-14T01:46:46.905Z. Generic command calls and the CLI tools/call surface require a release that serves these endpoints. The contract below describes current source; use a released resource route or MCP operation where available. See capability status.
| Method and path | Shared operation | Status | Resource-route differences |
|---|---|---|---|
GET /v1/commands | HTTP transport/account | 200 | Authenticated command catalog. No query parameters. |
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. |
POST /v1/workspaces | HTTP transport/account | 201 | Human session; JSON name creates a workspace. |
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; returns keys and grants metadata, at most 100 each. |
POST /v1/access/keys | HTTP transport/account | 201 | Human session; creates a scoped API credential within the creator permission ceiling and returns secret once. |
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 | Remaining read arguments go in query parameters. |
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_link_history | 200 | Remaining read arguments go in query parameters. |
GET /v1/watches/{watchId}/contacts | get_public_contacts | 200 | Remaining read arguments go in query parameters. |
POST /v1/watches/{watchId}/recheck | request_link_check | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
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_link_events | 200 | Remaining read arguments go in query parameters. |
GET /v1/exports/watches | export_link_watches | 200 | Remaining read arguments go in query parameters. |
GET /v1/observations/{observationId}/locate | locate_link | 200 | Remaining read arguments go in query parameters. |
GET /v1/observations/{observationId}/evidence | get_link_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. |
GET /v1/reports/links | get_link_reports | 200 | Remaining read arguments go in query parameters. |
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_target_history | 200 | Remaining read arguments go in query parameters. |
GET /v1/targets/{targetId}/placements | get_target_placements | 200 | Remaining read arguments go in query parameters. |
POST /v1/targets/{targetId}/recheck | request_target_check | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
GET /v1/target-jobs/{jobId} | get_target_job | 200 | Remaining read arguments go in query parameters. |
GET /v1/target-events | list_target_events | 200 | Remaining read arguments go in query parameters. |
GET /v1/target-observations/{observationId}/evidence | get_target_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. |
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. |
POST /v1/discovery/runs | discover_backlinks | 202 | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |
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. |
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/webhooks | list_webhooks | 200 | Remaining read arguments go in query parameters. |
POST /v1/webhooks | create_webhook | 201 | Remaining arguments go in a JSON object body. |
GET /v1/webhooks/{endpointId}/deliveries | list_webhook_deliveries | 200 | Remaining read arguments go in query parameters. |
POST /v1/webhooks/{endpointId}/secrets | rotate_webhook_secret | 201 | Remaining arguments go in a JSON object body. Empty or unreadable body is treated as {} by this resource handler; use {retire:true} to retire the older secret. |
PATCH /v1/webhooks/{endpointId} | set_webhook_state | 200 | Remaining arguments go in a JSON object body. |
DELETE /v1/webhooks/{endpointId} | delete_webhook | 200 | Remaining arguments go in a JSON object body. |
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.
Reference follows the current development CLI and HTTP contracts. Hosted availability depends on the selected environment. See capability status.