Build identity into anything.
Integrate passwordless auth, verify credentials via zero-knowledge proofs, or become a verified issuer in minutes.
import { solidusAuth } from '@solidus/auth'; const session = await solidusAuth.request({ domain: 'yourapp.com', require: ['kyc_l2', 'age>18'] });
Sign in with Solidus
For web apps wanting passwordless auth. Drop-in SDKs for React, Vue, and vanilla JS. Get started in under 5 minutes.
Issue Credentials
For organizations wanting to issue verifiable credentials to their users. Use the Issuer Node API to mint and deliver directly to wallets.
Verify Credentials
For services wanting to verify incoming credentials. Use the Verifier SDK, REST API, and webhook delivery to validate ZK proofs.
Become a Verified Issuer.
Issue W3C Verifiable Credentials directly to users' Solidus wallets. From employment records to educational degrees — any credential type is supported.
Register as Issuer
Apply for a Verified Issuer DID. Provide org details, credential types you'll issue, and your preferred verification method. Takes 2–5 business days.
Define Your Schema
Use the Schema Registry to define your credential type's fields and data types. Schemas are published on-chain for discoverability.
Issue via SDK
Use @solidus/issuer-sdk to issue credentials. One API call signs the credential with your issuer DID and delivers it to the user's inbox.
import { SolidusIssuer } from '@solidus/issuer-sdk'; const issuer = new SolidusIssuer({ apiKey: process.env.SOLIDUS_KEY });\n\n'await issuer.issue({ recipient: 'did:solidus:mainnet:5dK3fP7vLm8Qw2xNz9Rb4YcJ6tHgAs', schema: 'solidus:schema:professional-license:v1', attributes: { name, employer, role, validUntil }, });
KYC Level 2
full_name, date_of_birth, nationality, document_type, document_expiry
Professional License
name, employer, role, license_number, valid_until
Education Degree
name, institution, degree, field_of_study, graduation_date
Issue credentials your users can carry across the Solidus network.
Verify presentations in your stack.
import { verifyPresentation } from '@solidus/auth/server'; // Receives the presentation from your frontend const handleVerify = async (req, res) => { const { proof, presentation } = req.body; const result = await verifyPresentation({ presentation, proof, expectedDomain: 'yourapp.com', requiredCredentials: ['kyc_l2'] }); if (!result.isValid) return res.status(401).send('Invalid proof'); // Create session for user DID const session = createSession(result.did); return res.json({ session }); };
The full Sign in with Solidus flow.
5 steps. Zero passwords. Cryptographically verified.
{ "event": "presentation.verified", "did": "did:solidus:mainnet:5dK3fP7vLm8Qw2xNz9Rb4YcJ6tHgAs", "credentials": [{ "type": "KYC_L2", "verified": true }], "disclosed": { "country": "US" }, "proofHash": "0x4f2e8a1b9c3d7e6f...", "timestamp": "2026-03-17T14:32:08Z" }
SDKs & Libraries
| Package | Language | Install Command | Latest Version |
|---|---|---|---|
| @solidus/auth | JavaScript | npm i @solidus/auth | v2.4.1 |
| @solidus/jwt | Node.js backend | npm i @solidus/jwt | v1.8.0 |
| solidus-python | Python | pip install solidus | v1.3.0 |
| solidus-go | Go | go get solidus.network/sdk | v0.9.2 |

