Skip to main content
A check asks the registry whether any member reported a user. Send it when a user signs up, before the account is active. You can also check at login and in a periodic re-check of existing users.

Send a check

POST /api/v1/registry/check needs a key with the registry:check scope. sha256 is the lowercase hexadecimal digest from Hash an email. Send more than one identifier when the user gave you more than one email, for example a login email and a recovery email. The registry ignores repeated identifiers.
Send identifiers for one user per request. Do not combine several users in one check: the result cannot tell you which of them matched.

Read the result

Each signal combines every member’s report in that category. See What a check returns for the fields. Your own reports count too: if you reported the user, your check matches your report.

Act on a match

A match is information for your own decision. Use the signals to choose an action: You can use reporter_count and the dates to weigh a signal. For example, a recent report from several members is stronger than one old report. This example implements the check and the decision for a sign-up handler:

What to tell the user

  • Do not tell the user that they are in the registry, which category matched, or how many platforms reported them. Use your normal message for a refused or held account.
  • If you refuse or hold an account, give the user your usual route to contest the decision. If the user wants to know what the registry holds about them, refer them to Disputes.
  • You do not know which member reported the user, so you cannot pass that on.

When the registry cannot answer

The registry is one signal among your own controls. If a check fails, by a timeout, a 5xx or a 429, continue the sign-up as if there was no match, and check the user again later with context periodic. Do not retry a failed check in a tight loop: it counts against your quota and your rate limit. See Errors.

Check at login and periodically

  • login: Check when an existing user logs in, if you want to find users that another member reported after they signed up with you.
  • periodic: Re-check existing users on a schedule, for example accounts that signed up while the registry was unreachable.
The check request and the result are the same in every context. Choose the context that describes why you check: Omnifence monitors the mix of contexts for each member.

Daily check quota

Your membership has a daily check quota, sized to your sign-up volume. Each check request counts once, whatever number of identifiers it carries. The count resets at 00:00 UTC. A check over the quota returns 429 RATE_LIMITED with the message Daily Shared Registry check quota of <quota> reached, and does no lookup. If your volume grows, contact support@omnifence.ai to raise the quota. Registry keys also follow your account’s rate limits: by default, 60 requests per minute and 6 per second. A 429 from the rate limit carries a retry-after header; the quota 429 does not.