{"openapi":"3.1.0","info":{"title":"AntiVamp Partner API","version":"2026-07-16","description":"Cross-chain token identity protection. Public identity checks require no key; partner endpoints use sandbox or production Bearer keys. Validation decisions are HMAC-SHA256 signed with your per-key signing secret and expire after 5 minutes."},"servers":[{"url":"https://antivamp.io/api"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"Sandbox keys: av_sbx_…  Production keys: av_live_… (manual provisioning)."}},"schemas":{"IdentityCheckResult":{"type":"object","properties":{"normalizedName":{"type":"string"},"normalizedTicker":{"type":"string"},"identityKey":{"type":"string","example":"GREENROBIN::ROBIN"},"status":{"type":"string","enum":["available","reserved","protected","authorized","blocked","expired","launched","cleared","unknown","delayed"]},"decision":{"type":"string","enum":["allow","allow_authorized_only","block","recheck_required","unavailable"]},"chain":{"type":"string"},"authorizedLauncher":{"type":"string","nullable":true},"protectedUntil":{"type":"string","format":"date-time","nullable":true},"reason":{"type":"string"},"launcherAuthorized":{"type":"boolean","nullable":true},"adapter":{"type":"string","enum":["index","chain","indexer","mock","unavailable"]},"dataAsOf":{"type":"string","format":"date-time","nullable":true},"message":{"type":"string"}}},"ApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}}}},"paths":{"/v1/identity/check":{"get":{"summary":"Check a name + ticker pair (public)","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"}},{"name":"ticker","in":"query","required":true,"schema":{"type":"string"}},{"name":"chain","in":"query","schema":{"type":"string"}},{"name":"launcher","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Check result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityCheckResult"}}}}}},"post":{"summary":"Check a name + ticker pair (public)","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","ticker"],"properties":{"name":{"type":"string"},"ticker":{"type":"string"},"chain":{"type":"string"},"launcher":{"type":"string"}}}}}},"responses":{"200":{"description":"Check result"}}}},"/v1/identity/status":{"get":{"summary":"Identity detail + timeline by identity key (public)","parameters":[{"name":"key","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Identity record"},"404":{"description":"Not found"}}}},"/v1/protected-identities":{"get":{"summary":"List protected identities (public, cursor pagination)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"chain","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":50}}],"responses":{"200":{"description":"Rows + nextCursor"}}}},"/v1/launches/validate":{"post":{"summary":"Validate a launch (partner)","security":[{"apiKey":[]}],"description":"Returns a signed decision. Verify the HMAC-SHA256 signature with your signing secret over the documented canonical payload. Decisions expire after 5 minutes; supply a nonce or Idempotency-Key header for replay-safe retries.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chain","name","ticker","launcher"],"properties":{"chain":{"type":"string","example":"hyperliquid"},"launchpad":{"type":"string"},"name":{"type":"string"},"ticker":{"type":"string"},"launcher":{"type":"string"},"logoHash":{"type":"string"},"intendedContract":{"type":"string"},"nonce":{"type":"string"}}}}}},"responses":{"200":{"description":"Signed validation decision"},"401":{"description":"Missing/invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limited"}}}},"/v1/launches/report":{"post":{"summary":"Report a completed launch (partner, sandbox)","security":[{"apiKey":[]}],"responses":{"200":{"description":"Recorded"},"403":{"description":"Production restricted"}}}},"/v1/events/bonded":{"post":{"summary":"Report a bonding event (partner, sandbox)","security":[{"apiKey":[]}],"description":"Applies longest-lock semantics: 60d reserved / 48h unreserved.","responses":{"200":{"description":"Recorded with previous/new expiry"}}}},"/v1/events/milestone":{"post":{"summary":"Report a verified market-cap milestone (partner, sandbox)","security":[{"apiKey":[]}],"description":"Applies longest-lock semantics: 90d reserved / 7d unreserved.","responses":{"200":{"description":"Recorded with previous/new expiry"}}}},"/v1/sandbox/keys":{"post":{"summary":"Create a sandbox API key (self-serve)","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["organization","email"],"properties":{"organization":{"type":"string"},"email":{"type":"string","format":"email"},"label":{"type":"string"}}}}}},"responses":{"201":{"description":"Raw key + signing secret (shown once)"}}},"get":{"summary":"Introspect the calling key","security":[{"apiKey":[]}],"responses":{"200":{"description":"Key info + usage"}}},"delete":{"summary":"Revoke the calling key","security":[{"apiKey":[]}],"responses":{"200":{"description":"Revoked"}}}},"/v1/sandbox/logs":{"get":{"summary":"Recent request logs for the calling key","security":[{"apiKey":[]}],"responses":{"200":{"description":"Logs"}}}},"/v1/webhooks":{"get":{"summary":"List webhook endpoints","security":[{"apiKey":[]}],"responses":{"200":{"description":"Endpoints"}}},"post":{"summary":"Register a webhook endpoint","security":[{"apiKey":[]}],"description":"Signed with X-AntiVamp-Signature (t=<unix>,v1=<hmac-sha256 hex over \"<t>.<body>\">). Events: reservation.created, reservation.expiring, reservation.expired, identity.protected, identity.extended, identity.blocked_attempt, launch.authorized, launch.blocked, launch.reported, token.bonded, token.graduated, milestone.verified, identity.cleared, chain.degraded","responses":{"201":{"description":"Endpoint + signing secret (shown once)"}}}},"/v1/webhooks/{id}":{"patch":{"summary":"Toggle / rotate a webhook","security":[{"apiKey":[]}],"responses":{"200":{"description":"Updated"}}},"delete":{"summary":"Delete a webhook","security":[{"apiKey":[]}],"responses":{"200":{"description":"Deleted"}}}},"/v1/webhooks/deliveries":{"get":{"summary":"Delivery history","security":[{"apiKey":[]}],"responses":{"200":{"description":"Deliveries"}}}},"/v1/webhooks/deliveries/{id}/replay":{"post":{"summary":"Replay a delivery","security":[{"apiKey":[]}],"responses":{"200":{"description":"Replay result"}}}},"/v1/webhooks/test":{"post":{"summary":"Send a signed test event","security":[{"apiKey":[]}],"responses":{"200":{"description":"Dispatched"}}}},"/v1/chains":{"get":{"summary":"Chain registry + live health (public)","responses":{"200":{"description":"Chains"}}}},"/v1/health":{"get":{"summary":"Service + chain telemetry (public)","responses":{"200":{"description":"Health"}}}}}}