Skip to main content
import_backlinks Store a backlink export the user already owns (Ahrefs, Search Console, Semrush, Majestic, Moz, DataForSEO, Linkody or generic CSV) as unverified discovery candidates. Buys nothing; the supplier and its dates stay in provenance, separate from any check we run. Never claims complete coverage. Rejected rows return by position, none dropped; re-importing the same rows returns the same run. Rows are not verified, not monitored and never enter a shared corpus.
Available in the deployed MCP and HTTP bundle. Confirm access and inputs with your connected catalog. Workspace scopes and enabled providers 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

Illustrative data validated against the documented response schema. IDs and dates are examples, not a live account capture. 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): Identifier of the project returned by its create or list operation. 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. target_url is the row destination; the outer target defines the import scope. Optional fields are shown in the row schema. 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}$“

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): must equal 1
  • id (string, required): Resource identifier returned by the operation. minLength: 1; maxLength: 128; pattern: ”^[a-zA-Z0-9_-]+$”
  • workspace_id (string, required): Workspace that owns this record. minLength: 1; maxLength: 128; pattern: ”^[a-zA-Z0-9_-]+$”
  • project_id (string, required): Project that owns this record. minLength: 1; maxLength: 128; pattern: ”^[a-zA-Z0-9_-]+$”
  • provider (string, required): values: “linktrail_corpus”, “dataforseo”, “imported”
  • data_mode (string, required): values: “synthetic”, “owned_corpus”, “provider_index”, “imported”
  • query (object, required): additional fields rejected
  • status (string, required): Resource lifecycle status. values: “queued”, “running”, “succeeded”, “partial”, “failed”, “reconciliation_required”
  • created_at (string, required): UTC timestamp when the record was created. format: “date-time”; pattern: ”^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d\.\d{3}(?:Z))$”
  • started_at (string / null, required).
  • finished_at (string / null, required).
  • coverage (string, required): Dataset scope and completeness, including limits on what these results establish. values: “pending”, “complete_for_query”, “capped”, “partial”, “unknown”
  • coverage_reason (string / null, required).
  • provider_total_count (integer / null, required).
  • usage (object, required): additional fields rejected
  • operation (string, required): must equal “backlinks”
  • coverage_scope (string, required): values: “customer_import”, “corpus_subset”, “provider_query”
  • whole_web_coverage (boolean, required): False: these results do not measure the whole web. must equal false
  • 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).
Download input schema · Download output schema

Errors and retries

The command is annotated idempotent. Reuse an accepted idempotency key when the input provides one; changing the 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, inspect capability status, or return to the command index.