Developer Platform

Ship verified trust
in an afternoon.

The downloadable Website Integration Kit for any non-WordPress site, the WordPress plugin, platform REST APIs, SDKs and webhooks, all behind scoped credentials and one audit trail. Working integrations are marked as such; platform-level examples are labelled clearly.

Authentication & credentials

Each registered application receives two credentials. The App ID (ca_live_…) identifies your registered application and domain. The App Secret (sk_live_…) is the secret your server-side integration uses to perform privileged operations. The App ID alone is not a bearer secret and does not authorise privileged calls.

The App Secret must remain on your server. Never place it in HTML, browser JavaScript, mobile application code, public source control, public logs, screenshots or public support tickets. In WordPress, credentials are entered once in the Confrmo settings screen and the plugin keeps them server-side. In the Website Integration Kit below, they live in a protected server environment file read only by the Node.js proxy.

Server-side .env
# Issued per registered production domain. Server-side only.
CONFRMO_APP_ID=ca_live_…      # identifies the application
CONFRMO_APP_SECRET=sk_live_…  # privileged secret, never in the browser

Sandbox equivalents (ca_test_) exercise the full flow against test identities without touching production. Credentials are scoped per environment and revocable.

REST API

Platform-level example. The endpoint below illustrates the shape of the Confrmo verification API and is not the installation method for the downloadable Website Integration Kit; the kit ships its own server proxy and same-origin routes, documented in the Website Integration Kit section.

Verify the human at the moment of action with a single call. The response is a decision, the contributing signals and a signed proof token you can store or forward.

REST
POST https://api.confrmo.com/v1/verify
{
  "action": "payment.release",
  "policy": "step-up",
  "user_ref": "usr_8842"
}

// 200 OK
{
  "decision": "approved",
  "proof": "cfp_…",       // signed, verifiable
  "audit_ref": "aud_19x2"
}

SDKs

Platform-level example. The snippet below illustrates the planned @confrmo/web SDK surface. It is not included in, and is not the installation method for, the downloadable Website Integration Kit. To add Confrmo Connect or Confrmo: It’s You to a non-WordPress website today, use the Website Integration Kit below, which contains the working browser assets and server proxy. Native iOS and Android SDKs embed capture, liveness and the VCode scanner inside your own apps.

JavaScriptiOSAndroid
import { Confrmo } from '@confrmo/web';

const confrmo = new Confrmo({ appId: 'ca_live_…' });

const result = await confrmo.verify({
  action: 'checkout',
  policy: 'step-up'
});

if (result.status === 'approved') proceed();

Website Integration Kit

Add Confrmo Connect and Confrmo: It’s You to any website without WordPress.

Confrmo Connect provides passwordless sign-in through a secure VCode and approval in the Confrmo app. Confrmo: It’s You allows a customer to approve a temporary live view of a verified document. The document is not transferred to or retained by the integrating website.

The integration kit includes browser assets, a secure Node.js server proxy, nginx and PM2 examples, deployment instructions, security requirements and acceptance tests. Your organisation receives a domain-specific App ID and App Secret. The App Secret remains on your server and is never placed in browser code.

  • WordPress not required
  • Secure server-side credential handling
  • Confrmo Connect passwordless authentication
  • Confrmo: It’s You temporary document viewing
  • Node.js reference server
  • nginx and PM2 examples
  • Security checklist
  • Acceptance-testing guide

Download the kit

  • Version 1.0.0
  • Node.js 20+
  • HTTPS required
  • WordPress not required
Request App Credentials

Each production domain receives its own App ID and App Secret. Confrmo: It’s You must also be enabled for the registered application.

The full step-by-step installation walkthrough is published as the Website Integration Guide and is also included inside the kit.

Confrmo Connect

Confrmo Connect enables passwordless website authentication.

The website creates a short-lived login session through its server. The browser displays a Confrmo VCode. The user scans the VCode and approves the request in the Confrmo app.

After approval, the customer’s server consumes the session once and receives a pairwise user handle. The customer maps that pairwise handle to its own local account and creates its normal authenticated session.

The browser must never receive the Confrmo App Secret or the underlying Confrmo session ID.

  1. Website
  2. Customer server
  3. Confrmo login session
  4. VCode displayed
  5. User scans the VCode
  6. Confrmo app approval
  7. Customer server consumes approval once
  8. Pairwise user handle
  9. Local authenticated account

The pairwise user handle must only be trusted when returned by the server-side consume operation. A browser-supplied handle must never be treated as authenticated.

The supplied reference demonstration uses short-lived in-process session storage. Production deployments using multiple application instances must replace this with Redis or an equivalent expiring shared store.

Confrmo: It’s You

Confrmo: It’s You enables a customer-approved temporary view of a verified document.

The website starts a viewing session through its server. The customer scans the session VCode and receives the document request in the Confrmo app. The customer explicitly approves or declines access.

When approved, the server claims the one-time viewing token and the browser displays the temporary verified view. The integrating website must not download, cache, persist, analyse or silently copy the document. The view must be removed immediately when either party ends the session.

  1. Website starts viewing session
  2. Customer scans the VCode
  3. Website requests a document
  4. Customer approves or declines
  5. Temporary verified view appears
  6. Either party ends the session
  7. Displayed data is immediately removed

Confrmo: It’s You must be enabled for the customer’s registered App ID before document viewing sessions can be created.

Privacy. The document remains under the customer’s control. It is displayed only after explicit approval and only for the duration of the active session. Screenshot-risk reporting, where present, is a risk signal, not proof of prevention and not guaranteed blocking.

Security requirements

Keep your App Secret server-side

Your sk_live App Secret must be stored in a protected server environment or secret manager. Never include it in HTML, browser JavaScript, a mobile application, source control or public logs.

The browser should communicate only with same-origin routes provided by the customer’s server. The customer’s server then performs privileged Confrmo API operations using protected credentials.

Integration requirements

  • Node.js 20 or later
  • HTTPS-enabled production domain
  • Server-side environment configuration
  • Domain-specific Confrmo App ID and App Secret
  • Confrmo: It’s You permission when document viewing is required
  • Persistent shared session storage for multi-instance production deployments
  • nginx or an equivalent HTTPS reverse proxy
  • A local customer-account mapping strategy for Confrmo Connect

The supplied reference demonstration uses short-lived in-process session storage. A production deployment using multiple application instances should use Redis or an equivalent expiring shared store.

Try the Live Demos

To test these demonstrations, install and sign in to the Confrmo app, then use the Scanner tab to scan the displayed VCode.

WordPress WordPress Integration Demos

These demonstrations show Confrmo operating through the production WordPress integrations on confrmo.com.

WordPress

Confrmo Connect — WordPress

Experience passwordless website sign-in through the Confrmo WordPress integration. Display the VCode, scan it using the Confrmo app and approve the sign-in.

Try WordPress Connect
WordPress

Confrmo: It’s You — WordPress

Start a secure session, scan the VCode and request a customer-approved temporary view of a verified document.

Try WordPress It’s You

Standalone Standalone Website Integration Demos

These demonstrations use the downloadable non-WordPress website integration, with credentials and privileged API operations protected by a standalone server-side proxy. They are not WordPress plugins.

Standalone

Confrmo Connect — Standalone Website

Experience passwordless sign-in using the standalone website integration. No WordPress installation is involved.

Try Standalone Connect
Standalone

Confrmo: It’s You — Standalone Website

Experience customer-approved temporary document viewing using the standalone website integration. No WordPress installation is involved.

Try Standalone It’s You

View all standalone demos

WordPress plugin

Site owners configure everything from the admin, see Confrmo for WordPress. For developers, shortcodes expose each flow directly in templates and page builders.

WordPress
<!-- Verified human login (replaces wp-login) -->
[confrmo_login]

<!-- Gate paid or restricted content -->
[confrmo_protect role="member"] … [/confrmo_protect]

<!-- Verify before a sensitive action -->
[confrmo_verify action="checkout"] … [/confrmo_verify]

<!-- Display a VCode anywhere -->
[confrmo_vcode]

Webhooks

Subscribe to decision and ownership events for flows that resolve out of band. Every delivery is signed; verify the signature header before trusting the payload.

Webhook
// POST to your endpoint
{
  "event": "verification.approved",
  "action": "payment.release",
  "proof": "cfp_…",
  "occurred_at": "2026-07-08T12:04:11Z"
}
// Also: verification.blocked, verification.step_up,
// ownership.assigned, ownership.confirmed, ownership.transferred

VCode

Generate a VCode for any record: a login session, an asset, a certificate or a document. The VCode resolves to the live record; the register code is its human-readable fallback.

REST
POST https://api.confrmo.com/v1/vcodes
{ "subject": "asset", "asset_ref": "ast_2210" }

// 200 OK
{
  "vcode_number": "VC-8842-1907",
  "register_code": "3F8N-KX2VQ7-TD",
  "image_url": "https://…/vcode.png"
}

// Lookup: resolve any VCode or register code to its live record
GET https://api.confrmo.com/v1/lookup/3F8N-KX2VQ7-TD

Ledger APIs

Register assets, issue certificates and read live records on the Confrmo Ledger. Every write is signed and appended to the record's audit trail; public verification is free at ledger.confrmo.com.

REST
POST https://api.confrmo.com/v1/ledger/assets
{
  "name": "1962 Omega Seamaster",
  "category": "watch_jewellery",
  "serial_number": "145.022-69"
}

// The response seals the record: register code,
// VCode, signature and an empty audit trail.

Ownership APIs

Assign ownership at issuance, create transfer offers addressed to a verified user and trigger live ownership checks that the owner answers from the Confrmo app.

REST
// Offer an asset to a verified user
POST https://api.confrmo.com/v1/items/offers
{ "asset_ref": "ast_2210", "offered_by": "Northbank Auctions" }

// Ask the owner to confirm, live
POST https://api.confrmo.com/v1/items/pings
{ "asset_ref": "ast_2210" }
// The certificate shows the response and time,
// e.g. "Owner confirmed in 4.2s"

Error handling

Errors are ordinary JSON with a stable code, an HTTP status that means what it says and a human-readable message. Retry 429 and 5xx with backoff; treat 4xx as yours to fix. Verification declines are not errors: a blocked decision arrives as a 200 with the reasons in the payload.

REST
// 401 unauthorized
{ "error": { "code": "invalid_api_key", "message": "Unknown or revoked key." } }

// 429 too many requests, includes Retry-After header
{ "error": { "code": "rate_limited", "message": "Slow down." } }

// 422 unprocessable
{ "error": { "code": "unknown_action", "message": "Action not defined in policy." } }

Security model

Your systems never touch biometrics. Enrolment and matching happen within Confrmo and on the user's trusted device; your integration receives decisions and signed proof tokens. Every proof and webhook delivery is signed, so authenticity is verifiable independently of transport. API keys are scoped per environment and capability and are revocable instantly. Ledger records are tamper-evident: every write is signed and appended to the audit trail, and a record that fails signature validation is flagged on its public certificate. Read the full architecture on the Security & Compliance page.