About the Abuse API
View as MarkdownReference for the Abuse API, a REST API for reporting phishing, malware, and child abuse content hosted or registered with GoDaddy brands, and for tracking the outcome of reports you submit.
Access requires onboarding
The Abuse API is not open to self-service signup. Access is granted per
reporter identity, and requests are rejected with 403 until yours is
enabled. Contact
abuseapisupport@godaddy.com to start
onboarding.
This API supports Classic Developer
Keys only. Only submit reports through the API. Don't email phishing@godaddy.com, malware@godaddy.com, netabuse@godaddy.com,
or spam@godaddy.com. Email submissions are deprioritized and Customer
Support can't help with abuse reports or expedite review.
Overview
The Abuse API lets you submit abuse reports programmatically and follow what happens to them, instead of emailing an abuse alias and waiting. You report a single URL or IP per ticket, and the API returns a ticket ID you can use to track that report to a resolution.
Three operations are public, in two versions. The API is deliberately narrow: you can create a report, list the reports you have submitted, and read one report. Nothing in the public API changes or closes a ticket. That happens through GoDaddy's internal review process.
Reports you submit are reviewed against the GoDaddy Universal Terms of Service and the policies for the brand that hosts or registers the reported content. Submitting a report does not guarantee action.
Authentication
Every request carries a Classic Developer Key (a key and secret pair) in the
Authorization header:
Authorization: sso-key $ABUSE_API_KEY:$ABUSE_API_SECRETYour reporter identity comes from the key. There is no reporter field to
send. Every report is attributed to whoever the key belongs to, and the list
and retrieve operations return only your own tickets. Requesting a ticket
that belongs to someone else returns 404, not 403.
A valid credential is not sufficient on its own. Your identity also has to be enabled for the API, which happens during onboarding.
Choose a version
Use v2 for new integrations. Both versions accept reports and read from the same records, so a ticket created through v1 is visible through v2 and the reverse. The following table compares the two versions:
| v1 (Legacy) | v2 (Recommended) | |
|---|---|---|
| Close reason on retrieve | Not returned | closeReason once the ticket closes |
proxy | Free text | Fixed set of region codes |
useragent | Not accepted | DESKTOP, MOBILE, OTHER, NOT_APPLICABLE |
intentional | Accepted | Removed |
| Create and list rate limit | 750 requests per minute | 60 requests per minute |
The closeReason field is the main reason to prefer v2: on v1 you can tell that
a ticket closed, but not whether it closed because the content was actioned or
because the report was rejected.
v1 remains supported and its behaviour is unchanged. If you run a high-volume v1 integration, size your submission rate against the v2 limit before you move.
Operations
The following table lists the three public operations, with the v1 and v2 page for each:
| Operation | v1 (Legacy) | v2 (Recommended) |
|---|---|---|
Report abuse (POST /abuse/tickets). Returns 201 with the new ticket ID, plus a link header pointing at it. | create-ticket | create-ticket-v2 |
List your tickets (GET /abuse/tickets). Filter by type, target, source domain or IP, creation date, and open or closed state. | get-tickets | get-tickets-v2 |
Retrieve a ticket (GET /abuse/tickets/{ticketId}). Includes the close reason once the ticket has closed. | get-ticket-info | get-ticket-info-v2 |
Typical flow
A typical integration creates a ticket, then polls the retrieve operation until the ticket closes:
POST /v2/abuse/tickets → 201, {"u_number": "DCU12345678"}
link header points at the new ticket
GET /v2/abuse/tickets/DCU12345678 → 200, ticket with closed: false
poll periodically; closeReason appears once closed
GET /v2/abuse/tickets?closed=true → 200, {"ticket_ids": [...], "pagination": {...}}
reconcile your own recordsReports are reviewed asynchronously and there is no callback or webhook. Poll the retrieve operation for the tickets you care about rather than listing everything repeatedly. Listing is subject to the same rate limit as creating.
What to report
Every reporter can submit PHISHING, MALWARE, and CHILD_ABUSE. Further
types exist for specific reporting programs and are granted per reporter
during onboarding.
Categorise accurately. Reports that do not match the abuse type you select are marked as false positives. If your false-positive rate exceeds 40% of total submissions, GoDaddy can deprioritise your subsequent reports.
Trademark, copyright, and content complaints are not handled by this API. Send
those to trademarkclaims@godaddy.com, copyrightclaims@godaddy.com, or
contentcomplaints@godaddy.com respectively. For other scenarios not covered
by this API, go to
legalportal.godaddy.com/abuse.
Conventions
The following table describes the conventions that apply to all Abuse API requests:
| Convention | Detail |
|---|---|
| Base URL | https://api.godaddy.com (production) |
| Auth | Classic Developer Key, sent as Authorization: sso-key {key}:{secret}. Access is granted per reporter identity during onboarding. |
| Ticket ID | Returned from create as u_number, and used as {ticketId} on retrieve. |
| One source per ticket | Each report covers a single URL or IP. More than five URLs for one domain counts as a duplicate submission. Reporters with a duplicate rate above 20% can have reports deprioritized. |
| Duplicate reports | Reporting a source you already have an open ticket for returns 422 rather than creating a second ticket. |
| Shared records | v1 and v2 read the same tickets, so you can migrate reading and writing independently. |
| Rate limits | Enforced at the API gateway, per reporter. v2 create and list allow 60 requests per minute; v1 allows 750. Retrieve allows 60 on both. |
| Errors | 401 for a missing or invalid credential, 403 for an identity that is not enabled, 404 for a ticket that is not yours, 422 for validation failures and duplicates. |
Related
API References
Last updated on
How is this guide?