Verifiable credentials, signed by you.
Issue standards-based credentials signed by your organisation. Compatible with the EU Architecture & Reference Framework and any SD-JWT-VC wallet.
Read the issuance docsWhat you get
Each is independently deployable. Use them together for a complete identity stack, or pick one to slot into the system you already have.
Issue standards-based credentials signed by your organisation. Compatible with the EU Architecture & Reference Framework and any SD-JWT-VC wallet.
Read the issuance docsCompose new verification flows from a library of primitives. Age, residency, accreditation, membership, without writing cryptography yourself.
Read the verification docsAdapters for the EU Digital Identity Wallet and the SD-JWT-VC standard. Optional: bring your own wallet, or skip the wallet layer entirely.
Read the wallet integration docsDeploy
Managed by us, in the region you choose.
A single image. Bring your own Kubernetes.
Inside your VPC. No Partisia servers in the data path.
Control plane in cloud, data plane on-prem. Documented.
Examples
Two SDK calls cover most of what the APIs do. Full reference and language-specific examples on docs.partisia.com .
import { issue } from '@partisia/sdk';
const credential = await issue({
subject: '[subject_id]',
claims: { age: 19, country: 'DK' },
signer: process.env.PARTISIA_SIGNER,
});
// Hand the credential to the user's wallet,
// or store it under your own custody. import com.partisia.sdk.Partisia;
import com.partisia.sdk.Credential;
import java.util.Map;
Credential credential = Partisia.issue()
.subject("[subject_id]")
.claims(Map.of("age", 19, "country", "DK"))
.signer(System.getenv("PARTISIA_SIGNER"))
.execute();
// Hand the credential to the user's wallet,
// or store it under your own custody. import "github.com/partisia/sdk-go"
credential, err := partisia.Issue(ctx, partisia.IssueRequest{
Subject: "[subject_id]",
Claims: map[string]any{"age": 19, "country": "DK"},
Signer: os.Getenv("PARTISIA_SIGNER"),
})
// Hand the credential to the user's wallet,
// or store it under your own custody. from partisia import issue
import os
credential = issue(
subject="[subject_id]",
claims={"age": 19, "country": "DK"},
signer=os.environ["PARTISIA_SIGNER"],
)
# Hand the credential to the user's wallet,
# or store it under your own custody. import { verify } from '@partisia/sdk';
const result = await verify({
proof: request.body.proof,
require: { ageAbove: 18 },
issuer: '[trusted_issuer_id]',
});
if (result.ok) grantAccess();
else denyWithReason(result.reason); import com.partisia.sdk.Partisia;
import com.partisia.sdk.VerifyResult;
import java.util.Map;
VerifyResult result = Partisia.verify()
.proof(request.body().proof())
.require(Map.of("ageAbove", 18))
.issuer("[trusted_issuer_id]")
.execute();
if (result.ok()) grantAccess();
else denyWithReason(result.reason()); result, err := partisia.Verify(ctx, partisia.VerifyRequest{
Proof: req.Body.Proof,
Require: partisia.Requirements{AgeAbove: 18},
Issuer: "[trusted_issuer_id]",
})
if result.Ok {
grantAccess()
} else {
denyWithReason(result.Reason)
} from partisia import verify
result = verify(
proof=request.json["proof"],
require={"age_above": 18},
issuer="[trusted_issuer_id]",
)
if result.ok:
grant_access()
else:
deny_with_reason(result.reason) What teams build
Accreditation, residency, professional licensing, membership, workforce access, custom regulatory checks. Same primitives, your shape, inside your own infrastructure.
Talk to usTwo flows we productised on these APIs. Start there when the use case matches and skip the build.
See applications