> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentlinkops.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import and verify backlink candidates

> Preserve an export as candidates, select up to fifty rows for an asynchronous batch, and explicitly enroll completed present results for monitoring.

Import a backlink export you already hold, then choose the rows worth checking. Imported candidates retain supplier provenance and dates. An import does not establish current presence, complete coverage or recurring monitoring.

## Preserve and inspect the import

Use [import\_backlinks](/reference/commands/import_backlinks) for a hosted import. Its reference defines the supported supplier values and row format. Inspect every rejected row returned by the operation and keep the run identifier. Read [get\_discovery\_run](/reference/commands/get_discovery_run), then page through [list\_discovery\_candidates](/reference/commands/list_discovery_candidates).

For a local CSV instead:

```bash theme={null}
node /path/to/linktrail/cli/linktrail.mjs import ahrefs.csv   --from ahrefs --target example.com
```

The [ledger guide](/ledger) describes local candidate files. A local import does not create a hosted discovery run.

## Verify fifty selected candidates

<Note>
  Batch verification and explicit candidate enrollment require their matching hosted release and database migrations. [Availability](/capability-status) records the boundary. Where only single verification is available, use [verify\_discovery\_candidate](/reference/commands/verify_discovery_candidate) for each selected row.
</Note>

1. Select one to fifty stored candidates from the same run. Keep their actual identifiers and optional local references.
2. Submit [verify\_discovery\_candidates](/reference/commands/verify_discovery_candidates) with `runId`, an `items` array of candidate identifiers, and an `idempotencyKey`.
3. Save the returned batch identifier and each item's outcome. Budget rejection can affect individual items; inspect the reservation and counts.
4. Read [get\_candidate\_verification\_batch](/reference/commands/get_candidate_verification_batch) until the selected jobs finish. Read each observation separately: `succeeded` is job completion, while `present`, `absent` or `unknown` describes evidence.

After a lost response, replay the same payload and idempotency value. Changing the selection creates a different intended request and needs a new value.

## Start monitoring deliberately

For a completed present candidate verification, call [monitor\_discovery\_candidate](/reference/commands/monitor_discovery_candidate). This preserves the candidate's lineage and local reference. Check the returned watch; replay does not reactivate a watch someone later paused.

Keep rejected or unknown rows with their reason for review. Follow [monitoring](/guides/monitor-changes) for enrolled watches and [troubleshooting](/guides/troubleshooting) for unavailable batches or expired evidence.
