Identisure Python Client
API client for the Identisure REST API. Supports both synchronous and async usage via httpx and Pydantic models.
Documentation: identisure.github.io/api-client-py
Requirements
Python 3.10 or later.
Supported providers
- BankID SE: auth, sign, phone auth and sign, QR verify, age verification
- BankID NO: auth, backchannel auth, sign, age verification
- Freja eID: auth, backchannel auth, sign, backchannel sign, age verification
- MitID: auth, backchannel auth, sign, age verification
- FTN (Finnish Trust Network): auth, age verification
- Vipps MobilePay: auth, backchannel auth
- Documents: upload and download documents for signing
Installation
pip install identisure-client
Usage
Synchronous
from identisure_client import IdentisureClientBuilder, BankIdSeAuthRequest, PollOptions
with IdentisureClientBuilder("client_id", "client_secret").environment("staging").build() as client:
session = client.bankid_se().auth(BankIdSeAuthRequest())
result = client.bankid_se().wait_for_auth(session.id, PollOptions())
print(result)
Async
import asyncio
from identisure_client import IdentisureClientBuilder, BankIdSeAuthRequest, PollOptions
async def main():
async with (
IdentisureClientBuilder("client_id", "client_secret")
.environment("staging")
.build_async() as client
):
session = await client.bankid_se().auth(BankIdSeAuthRequest())
result = await client.bankid_se().wait_for_auth(session.id, PollOptions())
print(result)
asyncio.run(main())
Verifying callbacks
Pass the raw request body exactly as received, before parsing it.
from identisure_client import verify_callback_signature
valid = verify_callback_signature(raw_body, headers["X-Signature-SHA256"], hmac_secret)
Development
Prerequisites
Clone
The test fixtures live in a git submodule, so clone with --recurse-submodules (or run git submodule update --init in an existing clone).
git clone --recurse-submodules https://github.com/identisure/api-client-py.git
Install dependencies
uv sync --extra dev
Build, test and lint
just build
just test
just check
Release
Set the version in pyproject.toml and identisure_client/_client.py and commit. Then push a tag:
git tag v0.1.0
git push origin v0.1.0
The release workflow checks that the tag matches the version, runs CI, publishes to PyPI and creates a GitHub release.
Other languages
C#, Dart, Go, TypeScript/JavaScript, Java/Kotlin, PHP, Ruby, Rust, Swift
Metadata
Release files for identisure-client 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| identisure_client-0.1.0.tar.gz | 10.3 kB | Without provenance | Details for identisure_client-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| identisure_client-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for identisure_client-0.1.0-py3-none-any.whl |
Total release size: 31.7 kB
Release files / identisure_client-0.1.0.tar.gz
| Download URL | identisure_client-0.1.0.tar.gz |
|---|---|
| Size | 10.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12538717f065b7676f4af6d1c7c70a512d81c8e9c255e8b6b9b765a039c4f2ab
|
|
BLAKE2b-256 checksum How to use checksums |
fc11a7acd851aad91ed4bfde52eb8fe90353d7604d918d9a8886873c7f814083
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / identisure_client-0.1.0-py3-none-any.whl
| Download URL | identisure_client-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f593debbc249765397d84d94a0b5e17fdfcc22957a6d402c77ec2e877ce9a79
|
|
BLAKE2b-256 checksum How to use checksums |
13d5d96ee1a5472bd3a8d341e9efff28fa1d5f973f1d528107eb0873066233c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for identisure-client 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.