Skip to content

Endpoints (API Honeypots)

An endpoint decoy is a fake API endpoint that captures detailed information about attackers probing your APIs for vulnerabilities. Unlike simple decoy links, endpoints can accept POST, PUT, DELETE, and PATCH requests, capturing request bodies and detecting attack patterns.

FeatureDecoy LinkEndpoint Decoy
HTTP MethodsGET onlyGET, POST, PUT, DELETE, PATCH
Body CaptureNoYes
Attack SignaturesBasicSQL injection, XSS, XXE, etc.
Content-TypeN/AConfigurable
Use CaseCrawlers, scannersAPI attacks, vulnerability probing
Attacker → POST /api/admin/users
{"username": "admin", "password": "' OR '1'='1"}
Endpoint Decoy receives request
Attack signature detected: SQL Injection
Detection created with full request details
MITRE mapped: TA0001 (Initial Access)

  1. Navigate to Decoys

    • Click Decoys in the sidebar
  2. Click “New Decoy”

    • The create decoy dialog opens
  3. Select Decoy Type: Endpoint

    • Switch from “Link” to “Endpoint” type
  4. Configure the Endpoint

    FieldDescriptionExample
    NameInternal name”Admin API Honeypot”
    DomainYour custom domainapi.yoursite.com
    PathAPI endpoint path/api/v1/admin/users
    MethodsHTTP methods to acceptPOST, PUT, DELETE
    Capture BodyStore request bodiesYes
    Content-TypeExpected content typeapplication/json
  5. Click “Create”

    • Your endpoint decoy is active immediately
Name: Admin API Honeypot
Domain: api.yoursite.com
Path: /api/v1/admin/users
Methods: GET, POST, PUT, DELETE
Capture Body: Yes
Content-Type: application/json
Action: Log

This creates a fake admin API that captures any requests to:

  • GET /api/v1/admin/users - List users attempt
  • POST /api/v1/admin/users - Create user attempt
  • PUT /api/v1/admin/users - Update user attempt
  • DELETE /api/v1/admin/users - Delete user attempt

Select which HTTP methods your endpoint should accept:

MethodTypical AttackDetection Value
GETInformation disclosureLow - common crawling
POSTData injection, authentication bypassHigh - active attack
PUTFile upload, data modificationHigh - active attack
DELETEData destruction attemptsHigh - active attack
PATCHPartial data modificationMedium - targeted attack

Recommendation: Enable POST, PUT, and DELETE for API honeypots to catch actual attack attempts.

When enabled, the full request body is stored in the detection:

{
"captured_body": {
"username": "admin",
"password": "' OR '1'='1",
"role": "superadmin"
},
"body_size": 89,
"content_type": "application/json"
}

Privacy Note: Body capture may contain sensitive data. Review your data retention policies.

Configure what content type the endpoint expects:

Content-TypeUse Case
application/jsonREST API honeypot
application/xmlXML/SOAP API honeypot
application/x-www-form-urlencodedForm submission honeypot
multipart/form-dataFile upload honeypot
text/plainGeneric text endpoint

Configure what your endpoint returns:

SettingDescription
Status CodeHTTP response code (default: 200)
Response BodyCustom response content
HeadersCustom response headers

Example Response (Fake API):

{
"status": "success",
"message": "User created",
"user_id": "fake-uuid-12345"
}

Endpoint decoys automatically detect common attack patterns in request data.

Attack TypePatternMITRE Tactic
SQL Injection' OR '1'='1, UNION SELECT, DROP TABLET1190
XSS<script>, javascript:, onerror=T1059
Command Injection; ls, `cat, `` whoami` “
Path Traversal../, ..\\, /etc/passwdT1083
XXE<!ENTITY, SYSTEM, file://T1059
LDAP Injection)(, *)(uid=, admin)(T1190
NoSQL Injection$gt, $ne, $whereT1190

When an attack is detected, your detection includes:

{
"attack_signatures": [
{
"type": "sql_injection",
"pattern": "' OR '1'='1",
"location": "body.password",
"confidence": "high"
}
],
"threat_score": 85,
"mitre_tactic": {
"id": "TA0001",
"name": "Initial Access",
"confidence": "high"
}
}

Attack signatures increase the threat score:

SignatureScore Impact
SQL Injection+30-40 points
XSS+25-35 points
Command Injection+35-45 points
Path Traversal+20-30 points
XXE+30-40 points

Multiple attack types compound the score.


These paths are commonly targeted by API attackers:

CategoryExample Paths
Authentication/api/auth/login, /api/token, /oauth/token
Admin/api/admin/*, /api/v1/admin/*, /admin/api/*
User Management/api/users, /api/users/admin, /api/users/delete
GraphQL/graphql, /api/graphql, /v1/graphql
Debug/api/debug, /api/health/debug, /api/config
File Operations/api/upload, /api/files, /api/download
Database/api/query, /api/sql, /api/export

Create decoys that mirror your real API structure:

Real API: /api/v1/users
Decoy: /api/v1/admin/users ← Looks like admin version
Decoy: /api/v2/users ← Looks like new version
Decoy: /api/users/export ← Looks like data export

Create endpoints attackers commonly probe:

/api/graphql ← GraphQL introspection attacks
/api/debug ← Debug information leakage
/api/config ← Configuration exposure
/api/admin/sql ← Direct database access
/.well-known/admin ← Admin discovery

If you have API documentation, add undocumented “internal” endpoints:

Documented: /api/v1/products (real)
Documented: /api/v1/orders (real)
Undocumented: /api/v1/internal/audit (decoy)
Undocumented: /api/v1/admin/impersonate (decoy)

Make your endpoint responses look realistic:

Bad (obvious fake):

{"error": "honeypot"}

Good (realistic API response):

{
"status": "error",
"code": "AUTH_REQUIRED",
"message": "Authentication required for this endpoint"
}

Even Better (enticing response):

{
"status": "success",
"data": {
"users": [
{"id": 1, "email": "admin@example.com", "role": "admin"},
{"id": 2, "email": "user@example.com", "role": "user"}
]
},
"total": 2,
"page": 1
}

  1. Go to Detections in the sidebar
  2. Filter by Source: Endpoint
  3. View endpoint-specific details:
    • Request method (POST, PUT, DELETE)
    • Request body content
    • Attack signatures detected
    • Content-Type header
MetricDescription
Trigger CountTotal requests to the endpoint
Unique IPsNumber of distinct attackers
Attack TypesBreakdown by attack signature
MethodsDistribution of HTTP methods

Set up alerts for endpoint detections:

  1. Go to Integrations → Webhooks or Slack
  2. Configure notifications for:
    • High-severity attack signatures
    • Multiple attempts from same IP
    • Specific endpoint triggers

Create a suite of endpoint decoys:

EndpointPathMethodsPurpose
Auth Honeypot/api/auth/adminPOSTCatch credential stuffing
User Export/api/users/exportGETCatch data exfiltration
Bulk Delete/api/orders/bulk-deleteDELETECatch destructive attacks
GraphQL Admin/graphql/adminPOSTCatch GraphQL attacks
SQL Query/api/internal/queryPOSTCatch SQL injection
  1. Create each endpoint in WebDecoy
  2. Add realistic responses
  3. Monitor for:
    • Authentication bypass attempts
    • SQL injection in query endpoint
    • GraphQL introspection
    • Bulk data operations

Add client-side bot detection: