Skip to main content
A takedown sends abuse reports about a look-alike domain to the organizations that can remove it. You choose the domain’s registrar, the hosting provider of its IP address, or both, and you can also report the domain to blacklists. The domain must come from one of your domain scans, such as acme-login.com found by a scan of acme.com. The flow has five steps. You authorize takedowns once with a signed power of attorney. Then, for each domain, you create a draft, wait while its evidence is prepared, send it, and track the replies. The takedown endpoints sit under the SpoofGuard tag in the API reference. Availability: Domain Takedowns. You also need Domain Monitoring, because a takedown starts from a domain your scan found. Cost: 1 unit of your yearly Domain Takedowns allowance for each takedown you send. Drafts, previews, edits, retries, deletes and power-of-attorney calls use no units. A send that returns any status other than 2xx is refunded. The allowance runs per contract year: it resets at 00:00 UTC on each anniversary of your license’s start date. Each call also counts toward the per-second rate limit and, when it succeeds, uses one unit of your monthly API Calls allowance. Without Domain Takedowns, or when your license is not active, every endpoint on this page returns 403:
When the year’s allowance is spent, send returns 429 and nothing is sent:
limit is your organization’s takedowns for the year. This 429 has no Retry-After header, and retries fail until the allowance resets. Plans and quotas explains allowances. No endpoint on this page holds a capacity slot, so none returns the capacity 409. Two other kinds of 429 can come back from any endpoint on this page:
  • "message": "Rate limit exceeded" is the per-second rate limit or your API Calls allowance. See Rate limits.
  • "detail": "Request was throttled. Expected available in 12 seconds." is the domain monitoring service’s own limit of 180 requests a minute. Every API key and dashboard user of your organization shares it. Wait the seconds the message gives. The response has no Retry-After header.

How a takedown moves

Preparation captures a screenshot of your website and one of the look-alike, and looks up the abuse contacts of each authority you chose. A draft becomes ready only when both screenshots exist and every chosen authority has at least one abuse email address.

Authorize takedowns

A takedown acts on your organization’s behalf, so the authorities receive a signed power of attorney with each report. Upload one before your first draft. Every later takedown can reuse it.
1

Download the template

spoofguard_powers_of_attorney_template returns the blank template as an ODT file named blank_takedown_power.odt.
2

Fill it in and sign it

Complete the template for your organization and sign it.
3

Upload the signed file

spoofguard_powers_of_attorney_create takes multipart/form-data with name (up to 100 characters, unique within your organization) and signed_power_file (a PDF, ODT or DOCX file).
The call returns 201 with the file’s id, name, signed_power_file_link and timestamps. Keep the id: drafts take it as power_of_attorney_id.
The unchanged template is refused. An ODT upload is converted to PDF. To rename a power of attorney or replace its file, send spoofguard_powers_of_attorney_update as multipart/form-data. Both upload calls refuse a JSON body with 415.

Create a draft

spoofguard_takedowns_create takes a JSON body:
The call returns 201 with the draft. This shortened example shows the fields you act on:
Set reply_email_recipient. That address receives an email when the draft’s preparation finishes, when each request is sent, when the website or domain is taken down, and when the takedown completes. Without it, the emails go to an internal address that no one reads. You cannot change it after the draft is created.
The draft is checked before it is saved. Each check that fails returns 400 with a details message:
  • registrar or hosting is true.
  • The power of attorney and the scan exist in your organization.
  • Every blacklist code is valid.
  • domain is one of the scan’s results.
  • domain resolves to an IP address, and port 80 or 443 is open on it.
  • Your scanned domain, acme.com, resolves to an IP address.

Wait for preparation

Poll spoofguard_takedowns_detail until preparation_status is ready or failed.
When the draft is ready, review what will be sent:
  • original_screenshot_link and malicious_screenshot_link: the two screenshots attached to every report.
  • authority_takedown_requests: one entry per chosen authority, with authority_type (Domain Registrar or Hosting Provider), abuse_name, abuse_emails and email_preview_link, an image of the email.

Edit a draft

spoofguard_takedowns_update accepts multipart/form-data only. A JSON body returns 415. You can edit a draft that is ready or failed, but not one that is still queued or preparing, and not one already sent.
Send registrar and hosting with every screenshot upload. In a request that carries a file, a missing registrar or hosting counts as false. One missing value drops that authority from the draft, and two missing values refuse the request.
The call returns the updated draft.

Retry a failed preparation

A draft fails when a screenshot cannot be captured, or when no abuse email address is found for an authority you chose. Fix the cause, then start the preparation again:
1

Find what is missing

An empty original_screenshot_link or malicious_screenshot_link is a missing screenshot. An entry in authority_takedown_requests with an empty abuse_emails list is a missing contact. So is an authority you chose, registrar or hosting set to true, that has no entry in authority_takedown_requests.
2

Fix the draft

Upload the missing screenshot, or turn off the authority that has no contact. Both are edits.
3

Retry

Call spoofguard_takedowns_retry_preparation. It returns 202 with an empty body, and the draft goes back to queued. Poll the draft again. Screenshots and contacts already stored are reused.
A retry returns 409 when the draft cannot be retried yet:
You can retry a failed draft at any time. A draft that has stayed queued or preparing for 15 minutes without changing can be retried too. A ready draft or a sent takedown cannot.

Send the takedown

spoofguard_takedowns_send takes no body and uses one unit of your yearly allowance.
Each chosen authority receives an abuse report by email, with your signed power of attorney and both screenshots attached. The domain is also reported to the blacklists you chose. The call returns 200 with the takedown. status is In Progress once at least one report is sent. A status still at Draft means no report went out. Check status and logs in the response. A 200 uses the unit either way. A send is refused, and its unit refunded, in two cases:
  • The draft is not ready: {"details": "The takedown draft preparation is not ready."}
  • It was already sent: {"details": "The takedown request has already been sent to the authorities for this domain."}

Track progress

Read one takedown with spoofguard_takedowns_detail, or all of them with spoofguard_takedowns_list. Takedowns also set the triage status of the domain in the scan’s results: td_in_progress once sent, and td_completed when complete. The list returns every takedown of your organization in one array, newest first. It takes these filters: Leave out date_sort: the default order is newest first.

Delete a takedown

spoofguard_takedowns_delete returns 204 and removes the takedown from your list. It does not withdraw reports already sent, and it does not return the allowance unit. The domain’s triage status in the scan returns to reviewed.

Errors

Errors from the API itself carry detail. Errors from the domain monitoring service carry details, except its own 429, which carries detail. The per-second rate limit and the API Calls allowance carry message. Read the first of detail, details and message that the body contains. Every status is explained once in Handle API errors.

Endpoints