[{"data":1,"prerenderedAt":123},["ShallowReactive",2],{"doc:\u002Freference\u002Fwebhooks\u002Fidentification-refused":3},{"page":4,"toc":119,"updated":122},{"path":5,"title":6,"seoTitle":7,"description":8,"blocks":9,"examples":103},"\u002Freference\u002Fwebhooks\u002Fidentification-refused","identification.refused","Webhook: identification.refused","Sent when an identify request is refused: an expired or revoked key, an origin that is not allowed, billing, rate limiting or no credit.",[10,15,18,22,27,70,73,101],{"type":11,"method":12,"path":13,"auth":14},"endpoint","POST","https:\u002F\u002Fyour-server.example.com\u002Fwebhooks\u002Ffingerly","signature",{"type":16,"text":17},"p","Sent for each identify request Fingerly refuses for a reason you can fix. Visitors whose requests are refused are not identified, so this is the event to alert on.",{"type":19,"tone":20,"text":21},"callout","note","Verify the signature before you parse the body, and answer `2xx` within 10 seconds. See [webhooks](\u002Fdocs\u002Fwebhooks#verify-the-signature).",{"type":23,"level":24,"text":25,"id":26},"heading",2,"Body","body",{"type":28,"fields":29},"fields",[30,34,37,41,44,47,50],{"name":31,"type":32,"text":33},"id","string","The event's ID, a UUIDv7. The same on every retry: deduplicate on it. Also sent as `X-Fingerly-Event-ID`.",{"name":35,"type":32,"text":36},"type","Always `identification.refused`.",{"name":38,"type":39,"text":40},"version","integer","The envelope version, `1`.",{"name":42,"type":32,"text":43},"organization_id","Your organization.",{"name":45,"type":32,"text":46},"environment","`live` for production traffic, `test` for staging and development.",{"name":48,"type":32,"text":49},"created_at","When the underlying fact happened, RFC 3339 in UTC. Not when it was delivered.",{"name":51,"type":52,"text":53,"children":54},"data","object","The refusal.",[55,58,61,64,67],{"name":56,"type":32,"text":57},"request_id","An ID for the refused request.",{"name":59,"type":32,"text":60},"sdk_key_id","The key that was used.",{"name":62,"type":32,"text":63},"reason","Why it was refused. See below.",{"name":65,"type":39,"text":66},"status","The HTTP status the client received.",{"name":68,"type":39,"text":69},"retry_after_seconds","For `rate_limited`: seconds until the client may retry. Omitted otherwise.",{"type":23,"level":24,"text":71,"id":72},"Reasons","reasons",{"type":74,"columns":75,"rows":79},"table",[76,77,78],"`reason`","`status`","What to do",[80,84,87,90,94,97],[81,82,83],"`expired_key`","`401`","Issue a new key and deploy it.",[85,82,86],"`revoked_key`","A revoked key is still in use somewhere. Deploy its replacement.",[88,82,89],"`origin_not_allowed`","Add the site to the key's allowed origins, or find who is using your key.",[91,92,93],"`billing_blocked`","`402`","Resolve billing in the dashboard.",[95,92,96],"`no_credit`","Add funds, or turn on auto top-up.",[98,99,100],"`rate_limited`","`429`","Traffic exceeded your rate limit. Contact support if it is expected.",{"type":19,"tone":20,"text":102},"Requests with a key Fingerly does not recognise at all are not attributable to an organization, so they send no webhook.",{"titles":104,"request":107,"response":111},{"request":105,"response":106},"Headers","Payload",[108],{"label":105,"lang":109,"code":110},"http","POST \u002Fwebhooks\u002Ffingerly HTTP\u002F1.1\nContent-Type: application\u002Fjson\nUser-Agent: Fingerly-Webhooks\u002F1.0\nX-Fingerly-Event-ID: 01a0a851-0c4e-7f23-b8d1-6e2f94c0a7b5\nX-Fingerly-Event-Type: identification.refused\nX-Fingerly-Timestamp: 1789551672\nX-Fingerly-Signature: sha256=6f1c0a3e9b…",[112,116],{"label":113,"lang":114,"code":115},"origin_not_allowed","json","{\n  \"id\": \"01a0a851-0c4e-7f23-b8d1-6e2f94c0a7b5\",\n  \"type\": \"identification.refused\",\n  \"version\": 1,\n  \"organization_id\": \"01a0a7f2-3c18-7b40-8d2e-5f6a9b1c0d37\",\n  \"environment\": \"live\",\n  \"created_at\": \"2026-09-16T09:41:12Z\",\n  \"data\": {\n    \"request_id\": \"01a0a852-77d0-7b1c-a3e4-5f60718293a4\",\n    \"sdk_key_id\": \"01a0a7f3-9e05-7a61-b4c7-2d8e0f3a6b19\",\n    \"reason\": \"origin_not_allowed\",\n    \"status\": 401\n  }\n}",{"label":117,"lang":114,"code":118},"rate_limited","{\n  \"id\": \"01a0a851-0c4e-7f23-b8d1-6e2f94c0a7b5\",\n  \"type\": \"identification.refused\",\n  \"version\": 1,\n  \"organization_id\": \"01a0a7f2-3c18-7b40-8d2e-5f6a9b1c0d37\",\n  \"environment\": \"live\",\n  \"created_at\": \"2026-09-16T09:41:12Z\",\n  \"data\": {\n    \"request_id\": \"01a0a852-77d0-7b1c-a3e4-5f60718293a5\",\n    \"sdk_key_id\": \"01a0a7f3-9e05-7a61-b4c7-2d8e0f3a6b19\",\n    \"reason\": \"rate_limited\",\n    \"status\": 429,\n    \"retry_after_seconds\": 2\n  }\n}",[120,121],{"id":26,"text":25,"level":24},{"id":72,"text":71,"level":24},"2026-09-17T08:28:36.000Z",1789667797989]