links
POST /v1/link-edits
Change or remove a target's links across the network.
認証
ベアラー トークンとして API キーを送信します。このエンドポイントでは仕様に特定の権限が記載されていないため、キーに必要な最小限の権限を付与し、推測するのではなくレスポンスを確認してください。
このエンドポイントは組織IDを受け付けません。お使いのキーによって所属する組織がすでに特定されており、レスポンスはその組織にスコープされます。
試してみる
アングルブラケット内のすべてをご自身の値に置き換え、キーのプレースホルダーをご利用中のダッシュボードのキーに置き換えてください。
curl -X POST https://api.zinndigital.com/v1/link-edits \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "target_id": <string>, "action": <string<rewrite, unlink>> }'ログインしていますか?ダッシュボード内のAPIコンソールでは、実際の組織IDやお客様ご自身のキーが自動入力され、ライブAPIに対してリクエストが実行されるため、実際のレスポンスを確認することができます。 API コンソールでこのエンドポイントを開く
詳細
The one write in this feature, and the most consequential single action in the customer surface: it rewrites published content on every site that links to the target. It is therefore gated on its own permission, links.edit, which links.view does not imply and which the read_only role does not hold. Returns 202, never the result. Two hundred sites is minutes of work on the boxes; holding the request open is the uncached hot-path work CLAUDE.md 2.16 forbids. Poll getLinkEdit and read each site's outcome from items. How the change is made. Each item is one exact <a> tag on one site, replaced by a whole-site string replacement. That is what makes the edit idempotent (the second run finds nothing), reversible (undoLinkEdit swaps the two strings) and cheap on a large site (no post content is ever read back). Only the href — and the text, if you supply one — changes: rel="nofollow", target and the theme's classes are carried through byte for byte, because for a PBN operator dropping a rel across two hundred sites is a change to what the link does. unlink keeps the words. The tag is replaced by its inner HTML, so an image link leaves the image and a bold anchor leaves the bold. A host with no managed command is unsupported, not failed. this platform exposes no shell, so those sites report that per item and the rest of the network still changes.
リクエスト本文
| 名前 | タイプ | 必須 | これがその内容です |
|---|---|---|---|
target_id | string | はい | — |
action | string<rewrite, unlink> | はい | — |
href | string | いいえ | Where the links should point, for a rewrite. http/https or a site-relative path only — a scheme-relative //host form is refused with a message telling the operator to… |
anchor_text | string | いいえ | New visible text. Omit to keep whatever each link already says. |
site_ids | string[] | いいえ | Narrow the edit to these sites. Omit the field entirely to change every site; an empty array is refused, because it is a UI that failed to send a selection rather than a… |
返信
| 名前 | タイプ | 必須 | これがその内容です |
|---|---|---|---|
id | string | はい | — |
target_id | string | いいえ | — |
target_host | string | はい | The host as it read when the edit was made. Kept as a string as well as a key, because a rewrite can empty a target of its last link and an audit line reading "edited (deleted… |
action | string<rewrite, unlink> | はい | — |
new_href | string | いいえ | — |
new_text | string | いいえ | New visible text. Empty means keep whatever each link already says — which is the common case, because one target's links carry many different anchors and flattening them all to… |
status | string<pending, running, applied, partial, failed> | はい | partial is the honest answer when some sites succeeded and some did not, and it exists because the other two are lies in that case: an operator's next action depends entirely on… |
expected_links | integer | はい | What the operator was told would change, recorded when they confirmed it rather than recomputed later. The whole value of a confirmation is that it can be held up against the… |
expected_posts | integer | はい | — |
expected_sites | integer | はい | — |
undo_of | string | いいえ | The edit this one reverses, if any. |
undone_by | string | いいえ | The edit that has already reversed this one. Present so the screen offers undo once — two undos of one edit put the original change back. |
created_at | string | はい | — |
finished_at | string | いいえ | — |
items | LinkEditItem[] | いいえ | — |
このエンドポイントが返すエラー
401 · 403 · 404 · 422 · 503