nomiDocumentation
SupportBack to site
  • Getting started

    • Introduction
    • What is Nomi?
    • Quick start
    • Concepts
    • Authentication
  • Credentials

    • Create a credential
    • Issue a credential
    • Credential lifecycle
    • Revoke a credential
    • Verify a credential
    • QR verification
  • Distribution

    • Apple Wallet
    • Google Wallet
    • Email
    • Credential delivery
    • Bulk issuance
  • API

    • API overview
    • Authentication
    • Credentials API
    • Recipients
    • Verification
    • Revocation
    • Webhooks
    • Errors
  • Integrations

    • Moodle
    • WordPress
    • REST API
    • Webhooks
  • Security

    • Authentication
    • API keys
    • Webhook security
    • Data protection
    • Best practices
  • Resources

    • FAQ
    • Glossary
    • Changelog
  1. Documentation
  2. /
  3. Getting started
  4. /
  5. Quick start

Quick start

From an API key to a credential on a phone, in four requests.

Four requests: create a key, upsert a person, define what they get, issue it. Everything below is a real endpoint with its real body — see Authentication first if you do not have a key yet.

  1. 1

    Create an API key

    In the console, under Settings. The key is shown once, starts with nomi_sk_live_, and belongs to one organisation.

  2. 2

    Upsert the person

    Subjects are keyed by your own identifier, so the same call can run twice without creating two people.

  3. 3

    Define the credential

    A template says what the credential shows and where each value comes from on the subject. Publish a version before issuing against it.

  4. 4

    Issue it

    The credential is created and moved to issued; the wallets come back pending while they render.

1. Upsert a subject

PUT /v1/subjects

curl -X PUT https://api.nomi-tech.com/v1/subjects \
  -H "Authorization: Bearer nomi_sk_live_EXAMPLE" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "crm_example_001",
    "displayName": "Alex Morgan",
    "email": "alex@example.com",
    "attributes": { "tier": "Platinum", "memberSince": "2021-03-04" }
  }'

The response carries the subject's id — sub_… — which is what the next call needs. PUT is idempotent on externalId: running your sync twice produces one subject, not two.

2. Issue a credential

POST /v1/credentials

curl -X POST https://api.nomi-tech.com/v1/credentials \
  -H "Authorization: Bearer nomi_sk_live_EXAMPLE" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order_example_12345" \
  -d '{
    "subjectId": "sub_…",
    "templateKey": "membership_platinum",
    "channels": ["apple_wallet", "google_wallet"]
  }'
There is no fields object on this call, and that is the design rather than an omission: what a credential says is decided by the template, which reads each value from a path on the subject. Change the person's record and every credential they hold follows.

3. Hand it over

POST /v1/distributions

curl -X POST https://api.nomi-tech.com/v1/distributions \
  -H "Authorization: Bearer nomi_sk_live_EXAMPLE" \
  -H "Content-Type: application/json" \
  -d '{
    "credentialId": "cred_…",
    "channel": "email",
    "wallet": "apple_wallet",
    "recipientEmail": "alex@example.com"
  }'

The response carries a url. That link is the whole delivery — printed as a QR code, written to an NFC tag or put inside an email, it is the same link.

4. Verify it

GET /public/credentials/{code}

curl https://api.nomi-tech.com/public/credentials/AB12-CD34

No key on that one. Public verification is what a third party uses, and requiring an account would defeat it.

Issue a credential

The full request and response.

API overview

Base URL, pagination, idempotency.

PreviousWhat is Nomi?NextConcepts

Still stuck?

If this page did not answer it, the Help Center has the operational side of the same question — and a person reads what you send.

Go to the Help Center →

On this page

  • 1. Upsert a subject
  • 2. Issue a credential
  • 3. Hand it over
  • 4. Verify it
nomi

Digital credential infrastructure. Create, issue and manage credentials from the systems you already use.

Operated by

Country and currency

Platform

  • How it works
  • Templates
  • Lifecycle
  • Developers
  • Pricing
  • FAQ
  • Nomi Academic

Credentials

  • Memberships
  • Employee IDs
  • Student IDs
  • Events & loyalty

Developers

  • Documentation
  • Quick start
  • API reference
  • Webhooks
  • Integrations

Support

  • Help Center
  • Apple & Google Wallet
  • Verification
  • Contact support

Company

  • Request a demo
  • Talk to Nomi
  • Legal
  • Codingraph
PrivacyTermsCookiesSecurityContact

© 2026 Codingraph S.A. All rights reserved.

Nomi is a registered trademark used by Codingraph S.A. under licence.

Billed in USD

Apple Wallet and Google Wallet are trademarks of their respective owners.