---
title: "verify_discovery_candidate"
method: POST
path: "/v1/discovery/runs/{runId}/candidates/{candidateId}/verify"
---

# verify_discovery_candidate

`POST /v1/discovery/runs/{runId}/candidates/{candidateId}/verify`

## Request

- Base URL: `https://app.agentlinkops.com`
- URL: `https://app.agentlinkops.com/v1/discovery/runs/{runId}/candidates/{candidateId}/verify`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route.

## Path parameters

- `runId` string, required: run ID from create/list.
- `candidateId` string, required: candidate ID from create/list.

## Headers

- `Idempotency-Key` string, required: Caller-generated key reused only for retries of the same operation and arguments in this workspace.
- `X-Workspace-ID` string

## Request body

- object
  - `localReference` string: Local ledger reference.

## Response `202`

Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route.

- object
  - `schema_version` 1, required
  - `workspace_id` string, required: Workspace that owns this record.
  - `project_id` string, required: Project that owns this record.
  - `run_id` string, required
  - `candidate_id` string, required
  - `watch_id` string, required
  - `job_id` string, required
  - `local_reference` string, nullable, required: Customer reference for joining this record to a local ledger entry.
  - `created_at` string, required: UTC timestamp when the record was created.
  - `candidate` object, required
    - `v` 1, required
    - `id` string, required: Resource identifier returned by the operation.
    - `workspace_id` string, required: Workspace that owns this record.
    - `project_id` string, required: Project that owns this record.
    - `discovery_run_id` string, required
    - `source_url` string, required: Publisher page URL recorded in this evidence.
    - `target_url` string, required: Destination URL recorded in this evidence.
    - `provider` 'linktrail_corpus' | 'dataforseo' | 'imported', required
    - `data_mode` 'synthetic' | 'owned_corpus' | 'provider_index' | 'imported', required
    - `provider_retrieved_at` string, date-time, required: Timestamp when the upstream evidence was retrieved.
    - `provider_first_seen` string, date-time, nullable, required
    - `provider_prev_seen` string, date-time, nullable, required
    - `provider_last_seen` string, date-time, nullable, required
    - `provider_status` object, required
      - `is_lost` boolean, nullable, required
      - `is_broken` boolean, nullable, required
      - `is_new` boolean, nullable, required
    - `anchor` string, nullable, required
    - `rel` string[], nullable, required
    - `dofollow` boolean, nullable, required
    - `link_type` string, nullable, required
    - `source_http_status` integer, nullable, required
    - `target_http_status` integer, nullable, required
    - `links_count` integer, nullable, required
    - `provider_metrics` union, required
      - object
        - `dataforseo` object, required
          - `rank` integer, nullable, required
          - `page_from_rank` integer, nullable, required
          - `domain_from` string
          - `domain_from_rank` integer, nullable, required
          - `backlink_spam_score` integer, nullable, required
          - `rank_scale` 'one_thousand', required
      - object
        - `imported` object, required
          - `supplier` 'ahrefs' | 'google_search_console' | 'bing_webmaster_tools' | 'semrush' | 'majestic' | 'moz' | 'dataforseo' | 'linkody' | 'csv', required
          - `supplier_row_id` string, nullable, required
          - `target_basis` 'supplier_observed' | 'user_supplied_target_expectation'
          - `supplier_generated_at` string, date-time, nullable, required
          - `supplier_metrics` object, nullable, required
      - object
        - `linktrail_corpus` object, required
          - `source_outlink_count` integer, nullable, required
          - `source_external_outlink_count` integer, nullable, required
          - `fetch_kind` 'direct' | 'rendered' | 'proxied', required
          - `extraction_complete` boolean, required
    - `verification_status` 'not_checked' | 'present' | 'absent' | 'unknown' | 'source_unavailable', required: AgentLinkOps check state, independent of supplier flags. not_checked means no AgentLinkOps check is recorded.
    - `verified_at` string, date-time, nullable, required: Timestamp of the AgentLinkOps check; null until checked.
    - `observation_id` string, nullable, required
  - `job` object, required
    - `id` string, required: Resource identifier returned by the operation.
    - `state` string, required: Saved lifecycle or evidence state, as enumerated for this record.
    - `execution_mode` string, required
    - `error_code` string, nullable, required: Latest delivery detail code; null when no failure or retry has been recorded.
    - `created_at` string, required: UTC timestamp when the record was created.
    - `completed_at` string, nullable, required
    - `usage` object, required
      - `unit` 'source_check', required
      - `units` number
      - `state` string: Saved lifecycle or evidence state, as enumerated for this record.
      - `period` string
  - `observation` object, nullable, required
    - `id` string, required: Resource identifier returned by the operation.
    - `state` string, required: Saved lifecycle or evidence state, as enumerated for this record.
    - `reason` string, nullable, required: Recorded explanation; null when no explanation applies.
    - `checked_at` string, required: UTC timestamp of the saved check.
  - `watch` object, required
    - `id` string, required: Resource identifier returned by the operation.
    - `status` string, required: Resource lifecycle status.
    - `local_reference` string, nullable, required: Customer reference for joining this record to a local ledger entry.
  - `recurring_monitoring_created` false, required: Whether this operation enrolled recurring monitoring.
  - `replayed` boolean: True when the response reuses an earlier request with the same idempotency value.

## Other responses

- `429`: Request-rate or usage refusal. Inspect error.code and recovery details before retrying.
- `default`: Error envelope. Non-configuration 5xx messages are masked and details omitted; allowlisted configuration errors retain static operator recovery.

---

[API](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api.md) · [All operations](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api/revisions/1bf30c2912b2?raw)
