---
title: "Get Disavow File"
method: GET
path: "/sites/{site_id}/backlinks/disavow-file"
tags: ["sites"]
---

# Get Disavow File

`GET /sites/{site_id}/backlinks/disavow-file`

## Request

- Base URL: `https://api.xeorank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xeorank.com/sites/{site_id}/backlinks/disavow-file`
- Auth: API key in header `X-Agent-Key`

Generate and download a Google Search Console disavow file.

Built from ``disavow_candidates()`` — the same filtered, scored list the
backlink profile shows — so every ``domain:`` line here corresponds to a
link the user can see (with its reasons) under ``suspect`` in
``GET /backlinks``. Flagged domains (score >= ``threshold``) are formatted
as Google's plain-text disavow format (``domain:example.com`` lines).

Returns a ``text/plain`` file attachment. This never triggers a DataForSEO
call, even on a cache miss — unlike ``get_backlink_profile(force_refresh=False)``,
which falls back to a live (paid) fetch when no snapshot exists yet. That
fallback is appropriate for the /backlinks endpoint, but not for a
read-only export that a client could hit repeatedly.

## Path parameters

- `site_id` string, required

## Query parameters

- `email` string, nullable
- `threshold` number

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/xeorank/apis/seo-intelligence-engine.md) · [All operations](https://skmtc.dev/xeorank/apis/seo-intelligence-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/xeorank/apis/seo-intelligence-engine/revisions/449a3fd73454?raw)
