Skip to main content

Verify before parsing

Your public HTTPS endpoint receives the three headers below. Use the endpoint signing secret to compute HMAC-SHA256 over:
Skinloop-Timestamp is the current Unix timestamp in seconds, encoded as a decimal string. Compare the lowercase hexadecimal digest with Skinloop-Signature: v1=... using a constant-time comparison:
Use the timestamp to enforce a freshness window configured by your receiver. Reject malformed headers, stale timestamps, unknown secrets, and altered bodies. Read the request body as raw bytes first; never parse and reserialize it before verification. Store the event ID only after authentication. Next: return 2xx after durable storage and deduplicate using the stable event ID. See retries.