AllowID for developers
People carry AllowID in an app on their phone. With an API key and a few lines of code, your own software can recognise them. No AllowID hardware is needed.
Any QR reader
A visitor shows the QR in the AllowID app. Your reader, kiosk, turnstile or tablet reads it; AllowID tells you who it is. Works with a €30 USB scanner as well as a phone camera.
Read the guide →
Sign in on your website
Your page shows a QR code. The person scans it with the app and approves; your server learns who signed in. No passwords to store, reset or leak.
Read the guide →
How it works§
- Get a key. An owner or administrator of your company creates one in the company console, under API. It is shown once.
- Add an SDK to your server: JavaScript/TypeScript, Python, C#/.NET, Java, PHP, Go or C/C++. They are free, open source and have no dependencies. Or call the HTTP API directly.
- Call it.
scan(text)for a QR read by a reader, orcreate_session()+get_session()for a website sign-in.
import allowid
client = allowid.Client() # reads ALLOWID_API_KEY
answer = client.scan(text_from_reader)
if answer.resolved:
print("Hello", answer.subject)
import { AllowID } from "@allowid/sdk";
const allowid = new AllowID(); // reads ALLOWID_API_KEY
const answer = await allowid.scan(textFromReader);
if (answer.result === "resolved") console.log("Hello", answer.subject);
using AllowID;
using var allowid = new AllowIDClient(); // reads ALLOWID_API_KEY
var answer = await allowid.ScanAsync(textFromReader);
if (answer.Resolved) Console.WriteLine($"Hello {answer.Subject}");
import eu.allowid.sdk.AllowID;
AllowID allowid = new AllowID(); // reads ALLOWID_API_KEY
AllowID.ScanResult answer = allowid.scan(textFromReader);
if (answer.resolved()) System.out.println("Hello " + answer.subject());
$allowid = new \AllowID\Client(); // reads ALLOWID_API_KEY
$answer = $allowid->scan($textFromReader);
if ($answer['result'] === 'resolved') echo 'Hello ', $answer['subject'];
client := allowid.New("", "") // reads ALLOWID_API_KEY
answer, err := client.Scan(ctx, textFromReader)
if err == nil && answer.Resolved() {
fmt.Println("Hello", answer.Subject)
}
allowid::Client client; // reads ALLOWID_API_KEY
auto answer = client.scan(text_from_reader);
if (answer.resolved()) std::cout << "Hello " << answer.subject << "\n";
curl https://api.allowid.eu/v1/scans \
-H "Authorization: Bearer $ALLOWID_API_KEY" \
-d '{"code": "PIMDH42NFG2E"}'What you learn about a person§
Every recognised person comes with a subject: an identifier that is the same every time that person comes back to your company, and different at every other company. Use it as the key in your own user table.
Their email, and anything else they choose to share, comes with it once they have signed in to your company with the app and approved it. Until then you know it is the same person as last time, but not who they are. That is deliberate: a QR code on someone's phone should not hand their email to anyone with a scanner. See Privacy and security.
Pricing§
You pay per answer: a QR code AllowID recognised, or a sign-in the person approved. The first 1,000 answers every month are free. Failed scans, polling and starting a sign-in cost nothing. Above your allowance there is 20 % grace, then the API pauses until the 1st unless you have a licence. Details in Pricing, limits, errors.