Verify students, faculty and staff with their university login.
Studid confirms academic affiliation through the university’s own single sign-on. No documents to upload, no manual review — just a verified result your app can use.
- No documents
- No manual review
- 2 API calls to integrate
- $0 forever
Technische Universität Berlin
Authenticated via institutional SSO
- Verified as
- student, member
- Stable user ID
- MCE6NXEQ3FC3PU7XQ2WJ5ZKAB4YHT2RD
- Institution
- TU Berlin
Trusted by teams at
Your users verify with the university they already log into — thousands of institutions across 70+ national federations.
How it works
One login instead of a stack of documents.
Studid sits between your app and the university. Your user logs in at their own institution, and the university confirms who they are.
- 1
Create a verification
One API call — no SAML, no certificates, no metadata.
- 2
Your user logs in at their university
The same account and MFA they use every day.
- 3
Get a verified result in seconds
A stable user ID and their institution — no document review.
AI integration
Let your AI assistant build it
Studid is built to be implemented by coding agents. Two endpoints, a machine-readable OpenAPI spec, an llms.txt and a plain-markdown guide — everything an assistant needs to write a correct integration on the first pass.
- OpenAPI 3.0 specapi.studid.io/openapi.json
- llms.txt for AI crawlersstudid.io/llms.txt
- Markdown integration guidestudid.io/guide
Copy this prompt into Cursor, Claude Code, Copilot or any coding assistant.
Read https://studid.io/llms.txt and add academic verification with Studid.
1. On signup, POST https://api.studid.io/v2/auth/verification with { secretToken, redirectUrl, serviceName } and redirect the user to the returned link.
2. After they return to redirectUrl, poll GET https://api.studid.io/v2/auth/verification/{id} with header "Authorization: Bearer <secretToken>" and use session.authIdentifier as the user's ID.
3. Reject session.test === true in production.The integration
Two calls, and you're done
No SAML certificates, no metadata, no protocol. The institution signs the login; the API hands you a verified result.
$ curl -X POST https://api.studid.io/v2/auth/verification \
-H "Content-Type: application/json" \
-d '{"secretToken":"...","redirectUrl":"...","serviceName":"My App"}'201 Created
- authIdentifier
- MCE6NXEQ3FC3PU7XQ2WJ5ZKAB4YHT2RD
- authIdentifierType
- pairwise-id
- entityId
- https://idp.tu-berlin.de/shibboleth
- affiliations
- ["student", "member"]
What you get back
Reliable where it matters
Three fields, documented honestly. entityId is always present; authIdentifier when the institution provides it.
- authIdentifier
- A privacy-safe, stable ID for the user’s account — a per-service pseudonym or a persistent identifier. null when the institution only issues a transient ID.
- entityId
- The institution the user authenticated at. Always present — this alone proves affiliation, even when no stable user ID is available.
- affiliations
- Their role when the institution releases it. Often empty — we tell you instead of guessing.
No persistent ID? The verification still counts.
A null authIdentifier doesn’t mean the login failed — the user still authenticated at a real institution. Use entityId for eligibility decisions (discounts, gated access, signup) and bind the result to your own session token for continuity.
The difference
Documents vs. a university login
The old way asks users to prove who they are. Studid asks the institution instead.
The old way
Uploading documents
- Ask users for a transcript or student ID
- Wait days for someone to review it
- Documents can be forged or edited
- You store sensitive personal files
With Studid
One university login
- One login at the university they already use
- A verified result in seconds
- Signed and confirmed by the institution
- You store nothing sensitive
Live demo
See it work in under a minute
Search for your university and sign in with your own account. No signup, no install — just the same flow your users will see.
- No account required
- Runs against the live API
- The same flow your users see