Skip to main content
import_backlinks Import user-owned Ahrefs, Search Console, Semrush, Majestic, Moz, DataForSEO, Linkody or generic CSV rows as unchecked candidates. Retains supplier/date provenance separately from checks; no spending or complete-coverage claim. Returns every rejection by position; identical rows reuse the run. No monitoring or shared-corpus entry.
Name recorded in the 2026-10-17 deployment. This page describes current source; verify inputs and access in your connected catalog. Provider configuration and workspace access still apply.
This operation changes saved state. Review its inputs and retry behavior before calling.

Example request

Connect through MCP, CLI, or HTTP. Replace example identifiers with records from your workspace.

Returned result

Schema-validated example; IDs and dates are illustrative. MCP returns this data in structuredContent and in a text content block; generic HTTP and CLI return the JSON result directly.

Input fields

Omit optional fields when you do not want to supply them. Null is accepted only where listed. Unknown input properties are rejected.
  • projectId (string, required): project ID from create/list. pattern: "^[a-zA-Z0-9_-]{1,128}$"
  • supplier (string, required): Source of imported candidate evidence, retained as provenance. values: "ahrefs", "google_search_console", "bing_webmaster_tools", "semrush", "majestic", "moz", "dataforseo", "linkody", "csv"
  • targetKind (string, required): Whether target identifies an exact URL or a domain. values: "domain", "exact_url"
  • target (string, required): Exact URL or domain to query, interpreted according to targetKind. minLength: 1; maxLength: 4096
  • includeSubdomains (boolean, required): Include subdomains of the selected domain in this query.
  • backlinksStatus (string, required): Supplier-reported backlink status filter; this is not AgentLinkOps verification. values: "live", "lost", "all"
  • rows (array, required): Each row requires source_url and target_url. The outer target defines the import scope. target_url names the destination. Checks match that URL exactly by default. For a source-only Google Search Console export, set target_basis=user_supplied_target_expectation. Set target_url to the confirmed site root URL for a domain import, or the selected URL for an exact URL import. For declared expectations, checks use the saved website scope or selected exact URL. Invalid rows return positional errors without rejecting valid neighbors. Example: {“source_url”:“https://publisher.example/article”,“target_url”:“https://example.com/”,“anchor”:“Example”}. minItems: 1; maxItems: 1000
  • supplierGeneratedAt (string / null, optional): Supplier export generation timestamp, distinct from import time. default: null
  • idempotencyKey (string, optional): Caller-generated key reused only for retries of the same operation and arguments in this workspace. pattern: "^[\\x21-\\x7e]{1,200}$"
Types, allowed values, limits and nested fields:

Validation and omitted values

includeSubdomains and backlinksStatus are required import scope choices. Omitted supplierGeneratedAt remains null, rather than using the import date as a supplier date. Omitted idempotencyKey uses deterministic content-based import identity. Re-importing the same scope, supplier and rows as supplied reuses the run. Imported order remains as_supplied. Every row requires source_url and target_url. Optional supplier metadata retains its provenance; invalid rows are returned with their positions while valid neighbors continue.

Defaults when omitted

Output fields

Fields inside optional or nullable parents apply only when that parent exists. Common schema conventions explain evidence states, empty lists and extensions.
  • v (number, 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.
  • provider (string, required).
  • data_mode (string, required).
  • query (object, required).
  • status (string, required): Resource lifecycle status.
  • created_at (string, required): UTC timestamp when the record was created.
  • started_at (string / null, required).
  • finished_at (string / null, required).
  • coverage (string, required): Dataset scope and completeness, including limits on what these results establish.
  • coverage_reason (string / null, required).
  • provider_total_count (integer / null, required).
  • usage (object, required).
  • operation (string, required).
  • coverage_scope (string, required).
  • whole_web_coverage (boolean, required): False: these results do not measure the whole web.
  • replayed (boolean, optional): True when the response reuses an earlier request with the same idempotency value.
  • admission (object / null, optional).
  • rejected (array, required).
  • duplicates (array, required).
  • rejected_total (number, required).
  • duplicates_total (number, required).
Types, allowed values, limits and nested fields:
Download input schema · Download output schema

Errors and retries

When retrying with idempotencyKey, reuse the original value and the same arguments; preserve originally omitted optional fields. Generic HTTP puts idempotencyKey in the JSON body, while resource routes use the header where listed below. A changed payload under a reused key can conflict. See error recovery for status, scope, cooldown, cursor and retry handling. Unknown observations are result data and do not establish loss.

HTTP resource routes

These existing resource routes share the operation’s domain behavior. Their parameter placement, status and response envelope can differ from generic invocation. See HTTP route details.

Continue

get_discovery_run · list_discovery_candidates Follow the related workflow. See capability status for availability or the command index for another operation.