Who links to a target, and how much of it is broken or spam
Summarises who links to a target. It returns the authority score, how many links point at it and from how many distinct sites, how many of those are…
POST /v1/seo/backlinks
| Address | https://api.hanzo.ai/v1/seo/backlinks |
| Method | POST |
| Operation | seoBacklink |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Summarises who links to a target.
It returns the authority score, how many links point at it and from how many distinct sites, how many of those are broken, and how much of the profile reads as spam. Distinct sites is the number to read: a thousand links from one domain is one endorsement, and a profile that grew fast in links and not in domains is usually a profile somebody bought.
The target can be a whole domain, a subdomain, or one page URL — the summary is scoped to whatever is named. It is priced per request, so a domain with ten million links costs the same as one with ten.
Request
1 field, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
target | body | string | — | Target is a domain, a subdomain or a single page URL. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | seoBacklinkOut | ok |
200 body — 9 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
backlinks | body | integer | — | Backlinks is how many links point at it. |
broken | body | integer | — | Broken is how many of those links point at something that no longer answers. |
cost | body | string | — | Cost is what this call cost, in USD, as an exact decimal string. |
domains | body | integer | — | Domains is how many distinct sites those links come from — the number that matters, since a thousand links from one site is one site. |
firstSeen | body | string | — | FirstSeen is when the upstream first saw a link to this target, RFC 3339. |
pages | body | integer | — | Pages is how many distinct pages link in. |
rank | body | integer | — | Rank is the upstream's authority score for the target, 0 to 1000. |
spam | body | integer | — | Spam is the share of the profile judged spam, 0 to 100. |
target | body | string | — | Target is the target as the upstream resolved it. |
Failure carries the platform error shape — see Errors.
Examples
hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.
import { Configuration, SeoApi } from 'hanzoai';
const api = new SeoApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.seoBacklink({ target: "<target>" });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import SeoApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = SeoApi(client).seo_backlink(target="<target>")cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.SeoAPI.SeoBacklink(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, seo_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = seo_api::seo_backlink(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.SeoApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new SeoApi(client).seoBacklink();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl -X POST https://api.hanzo.ai/v1/seo/backlinks \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "<target>"
}'The door declares no tool for seo — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.
How is this guide?