Get your first authenticated call working in a few minutes.
Authentication is delegated to DeepCloud's IdP (Keycloak) — there is no DeepCredentials portal step to mint credentials. Before continuing, you need:
- A partner client (
Partner-Service-Client-ID+Partner-Service-Client-Secret) — request one from development@deepcloud.swiss. - A service user under that partner client, authorized by the owner of the end-client organization you want to act on. You receive a
service_account_username+service_account_passwordper end client. - The organization UUID (
X-Org-Id) the service user is a member of.
Full walkthrough: Authentication — Service Users.
Exchange the credentials for a Bearer JWT against the DeepCloud SSO realm. Test environment uses int.deepcloud.swiss; production uses deepcloud.swiss.
curl -X POST "https://deepcloud.swiss/auth/realms/sso/protocol/openid-connect/token" \
--data-urlencode "grant_type=password" \
--data-urlencode "username=<service_account_username>" \
--data-urlencode "password=<service_account_password>" \
--data-urlencode "client_id=<Partner-Service-Client-ID>" \
--data-urlencode "client_secret=<Partner-Service-Client-Secret>" \
--data-urlencode "scope=deepcredentials.verify"Scope depends on the pillar you use. Use
deepcredentials.verifyfor verification,deepcredentials.issuefor issuance, anddeepcredentials.self-servicefor self-service. Pass multiple scopes space-separated — for examplescope=deepcredentials.verify deepcredentials.issue— if your integration spans more than one pillar.
The response includes access_token (valid 15 min) and refresh_token. Cache the access token and reuse until near expiry.
Confirm your token works against the API:
- Developmenthttps://api.dev.deepcredentials.swiss/b2b/v1/health
- Integrationhttps://api.int.deepcredentials.swiss/b2b/v1/health
curl -i -X GET \
https://api.dev.deepcredentials.swiss/b2b/v1/health \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'X-Environment: beta' \
-H 'X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08'Every B2B request needs three headers:
| Header | Value |
|---|---|
Authorization | Bearer <access_token> |
X-Org-Id | UUID of the organization the call acts on |
X-Environment | beta or production |
Environment scoping the call (from X-Environment).
Human-readable label sourced from the JWT (e.g. preferred_username for service accounts).
UUID v4 identifier.
Scopes granted to this service user (from the JWT scope claim).
UUID v4 identifier.
Always "ok" when the request is authenticated.
Response time in RFC3339 UTC (for client logging and skew checks).
You're ready. Your credentials are valid and your integration can reach the API.
- Authentication — Service Users — Full reference for the auth model and scopes.
- Verification Flow — Create sessions, display QR codes, and retrieve results.
- Credential Issuance Flow — Create and deliver credential offers.
- Self-Service — Decide on end-user-initiated requests via webhook.
- Webhooks — Receive real-time events.