Learn more about the latest security and privacy threats
Back

KYC API Integration: How to Add Identity Verification to Your App in 15 Minutes

Michelangelo FrigoMichelangelo Frigo(Co-Founder at Zyphe)Published May 13, 2026Updated May 4, 2026
Code curly braces with a verified KYC API response and 15-minute setup label

KYC API integration done right ships in 15 minutes: REST, signed webhooks, pre-built UI, sandbox on sign-up. No compliance expertise required.

Table of contents

TL;DR

Zyphe is a KYC and identity verification API that ships a working document-and-selfie flow in under fifteen minutes through REST endpoints, signed webhooks, and pre-built UI components. Juniper Research counted more than 70 billion identity checks globally in 2024, and developer-led adoption is now outpacing procurement-led buying. The integration friction your vendor advertises is your real switching cost. Read this if you are an engineer picking a KYC stack and tired of NDAs arriving before sandbox keys.

Your KYC vendor should take days to evaluate and minutes to integrate. If it is the other way around, find a new vendor.

The compliance industry inverted this for fifteen years. Procurement led, sales engineers gatekept sandbox access, and the developer who actually had to ship the integration met the API on day twenty-three of a forty-five-day pilot. That pattern worked when KYC was an annual checkbox. It stops working when onboarding is a competitive surface and your CAC math depends on every percentage point of conversion.

This post is for the engineer who has been told to add identity verification by a CCO or a VP of risk, and now needs to find a vendor that will not eat the sprint. KYC API integration is a one-afternoon job when the vendor has built for developers, and a three-week migration when the vendor has built for procurement. The difference is what this piece is about.

What does modern KYC API integration require, and what do most vendors miss?

Modern KYC API integration is built on four primitives, and most vendors only ship two. Most legacy KYC products were built as portals first and APIs second. The seams show. Before evaluating any vendor, check that the developer surface area covers all four primitives below. Missing one of them quietly adds days, sometimes weeks, of integration work.

REST endpoints documented to OpenAPI 3.1

The verification lifecycle has four stable nouns: sessions, documents, checks, decisions. A modern KYC API integration exposes each as a resource with predictable JSON shapes, idempotency keys on every POST, and OpenAPI 3.1 schemas you can drop into a code generator. Zyphe publishes its OpenAPI spec at docs.zyphe.com/openapi.json. Sumsub publishes a Swagger UI but not a downloadable spec, which means autogenerated clients get rebuilt on every release. The shape of the docs is the shape of the integration.

Webhooks signed with HMAC, not optional polling

Identity verification is asynchronous. Document review, sanctions screening, and PEP matching can take milliseconds or minutes depending on edge cases. Polling the API every thirty seconds is how teams burn rate limits and miss state transitions. Real KYC API integration carries an HMAC-SHA256 signature header, retries on non-2xx responses with exponential backoff, and emits a documented event for every status change. The TD Bank settlement order (FinCEN, October 2024, USD 1.3 billion penalty) is the BSA-program counterpart to webhook gaps in product code: state transitions nobody listens to are the failure mode that scales.

iframe and SDK embeds for the front-end

Pre-built UI components matter because the alternative is rebuilding camera access, document edge detection, retake flows, and accessibility states from scratch. Zyphe ships a vanilla JS SDK, a React component, and an iframe option. Persona's flow is iframe-only, which works until you need to A/B test copy on the consent screen. Choose the abstraction that fits the framework you already use, not the one your vendor's website foregrounds. KYC API integration is an architecture decision before it is a vendor decision.

Sandbox access on sign-up, not after a sales call

If you cannot generate a working API key without scheduling a demo, the vendor is selling a contract, not a product. Self-serve sandbox is the cheapest possible integrity test of how your developer experience will go in production. Didit publishes its pricing and gives sandbox access on sign-up. Onfido does not. That decision shapes every downstream onboarding call. Sandbox-on-signup is the strongest single signal that a KYC API integration will fit in an afternoon rather than a sprint.

How does a 15-minute KYC API integration actually work?

A working KYC API integration takes four calls, not forty. The full integration covers four operations: create a verification session, hand the user to the verification UI, listen for completion via webhook, and store the decision. Below is a working flow using Zyphe's homepage examples. Drop this into a clean repo and you have a real verified user record by the end of lunch.

Step 1: Create a verification session from your backend

After a user signs up, your backend creates a Zyphe verification session and gets back a hosted URL plus an expiring client token. Use a server-side call so your secret key never touches the browser.

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

Same call in Python:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

The response includes session_id, verification_url, and an expiring client_token. Persist session_id against your user record. You will match it back when the webhook fires.

Step 2: Mount the verification UI on the front-end

You have three options for the second leg of the KYC API integration: redirect the user to verification_url, embed an iframe, or mount the Zyphe SDK as a React or vanilla component. The SDK is the smoothest path for SPAs because the user stays on your domain and your analytics tracking holds together.

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

The onComplete callback fires when the user submits their documents. Do not treat that as approval. The decision arrives at your webhook in a few seconds to a few minutes, depending on review path.

Step 3: Verify the webhook signature and handle every status

This is the step most teams underbuild. The webhook payload is signed with HMAC-SHA256 in the X-Zyphe-Signature header. Reject any request that fails verification, even in development.

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

Step 4: Store the decision and gate access

Persist the verification status, the session ID, and the timestamp on the user record. Gate sensitive actions (deposits, transfers, high-value purchases) on the status. This is the row your auditor will request three months from now, and it should already exist when they ask.

A working approval-path KYC API integration through these four steps takes roughly fifteen minutes against the Zyphe sandbox. Production hardening (retries, dead-letter queues, status reconciliation) is another half-day. That fits inside one engineer's afternoon.

How do non-technical teams launch KYC API integration without engineering?

Not every team that needs KYC API integration has an engineer to spare. Founders running pre-seed compliance audits, ops teams stood up before product, and growth marketers pushing paid acquisition into a regulated funnel all need a verification flow before they have a backend.

Zyphe's no-code option generates a hosted verification page tied to a unique URL and a webhook destination. You configure the flow in the dashboard, choose the document types you accept, set the rejection thresholds, and copy a link. Drop the link into an email, a Notion page, a Typeform, a Calendly confirmation, or a paid landing page. Results land in the dashboard and, if you have connected one, in your CRM through Zapier.

This is the path Revolut's 2024 FCA Final Notice (GBP 3.1M) did not have available. Compliance gaps that grew during fast scaling were partly tooling-shaped: the team built faster than the controls. A no-code KYC API integration option lets the compliance lead stand up an evidence-collecting funnel before the engineering team picks up the integration ticket. Charlene Wang, Zyphe's CRO, framed this on a customer call in March: "the no-code option is not a downgrade. It is the path that lets compliance ship faster than engineering, which is the inversion regulated startups have wanted for years."

What are the five most common KYC API integration mistakes?

Most KYC API integration delays do not come from the API. They come from the same five product decisions, in roughly this order. Each maps to a real pattern we have seen in production at customers who switched to Zyphe from a legacy vendor.

Treating onComplete as approval instead of submission

The front-end callback fires when the user submits documents. The decision arrives later by webhook. Teams that ship "thanks, you're verified" on the callback get a flood of support tickets when 8% of users land in needs_resubmission and the UI has already promised them they are done. The right pattern is "submission received, decision pending" on the callback, then a webhook-driven state transition.

Skipping sandbox testing on the rejection path

The happy path takes one approved document and works on the first try. The rejection path takes a flipped image, a glare-blocked MRZ, an expired ID, a name mismatch on the selfie, and a politically exposed person hit. Every Zyphe sandbox account ships with five seeded test profiles covering each rejection type. Teams that test only the approval path discover their re-verification flow at 2am the day of launch.

Missing the verification_status webhook handler

Webhook handlers that only listen for approved will silently drop rejected, needs_resubmission, expired, and manual_review_required. Each is a real state your users land in. Each requires its own UX response. The Binance Holdings settlement (US Treasury, November 2023, USD 4.3 billion) was the regulatory consequence of state-transition gaps at scale: 1,667,153 apparent sanctions violations resolved on transactions whose status was effectively unmonitored. Webhook gaps in your KYC API integration are the product-engineering analog.

Not signing webhook calls in development

Teams skip HMAC verification "for now" in dev environments and forget to add it before launch. The result is a webhook endpoint any IP can hit with arbitrary status payloads. This is a real security incident waiting to happen and a real audit finding when discovered. Wire signature verification on day one, not week three.

Hard-coding rejection reasons in user-facing copy

Zyphe returns a structured rejection_reasons array: document_expired, face_mismatch, document_unsupported, pep_match, and so on. Mapping these to user-facing copy belongs in a translation table, not concatenated strings. When new reason codes are added (and they are added every quarter as fraud patterns shift), a translation table absorbs the change. String concatenation breaks.

How does Zyphe's KYC API integration compare to Jumio, Sumsub, and Onfido?

Time-to-production is the metric KYC vendors avoid publishing. The numbers below come from each vendor's own documentation, integration guides, and developer-community reports as of April 2026. The comparison is the closest thing to an objective KYC API integration benchmark publicly available.

Three observations sit underneath the numbers. First, vendors with self-serve sandbox sign-up consistently ship faster KYC API integrations because their developer experience has been pressure-tested by people who were not in a contract negotiation. Second, "production-hardened" means signed webhooks, retry handlers, and the rejection path tested, not just the approval path. Third, KYC API integration time predicts long-run support load: the harder the vendor was to wire up, the more brittle the wiring tends to be when their schema changes.

A senior engineering lead at a fintech we work with described the Sumsub-to-Zyphe migration this way on a customer call: "we burned three weeks integrating Sumsub the first time. The Zyphe migration took half a day. The schema was clean enough that we wrote less wrapper code than we'd written for Sumsub's first version, two years prior." That is not a Zyphe-specific result. It is what happens when KYC API integration gets built for the engineer rather than the procurement deck.

How should you choose a KYC API integration this quarter?

If you are a developer evaluating vendors, run the same drill on each one. Generate an API key without speaking to sales. Wire up the four-step KYC API integration above against their sandbox. Test the rejection path with their seeded profiles. Verify the webhook signatures. Time the whole exercise. The number you get is the cost of switching, the cost of every future schema change, and a signal of how much the vendor respects your time.

Five evaluation criteria, ordered by how often they are the procurement-decision regret in year two:

  1. Sandbox-on-signup or NDA-on-signup. This single signal predicts the entire rest of the developer experience.
  2. OpenAPI 3.1 spec downloadable, not just Swagger UI hosted. Code generators depend on it. Schema diffs depend on it.
  3. Signed webhook delivery with documented retry semantics. Polling-based vendors are selling a 2018 architecture.
  4. Embeddable UI in the framework you already use. Iframe-only locks you out of A/B testing the consent screen and the camera capture flow.
  5. Pricing visible without a call. A vendor that hides pricing is a vendor that prices opaquely.

For the broader vendor evaluation framework, see our top compliance tools evaluation guide and our KYC software product page.

The bottom line

Vendor evaluation should be the slow, expensive part. KYC API integration should be the cheap, fast part. If you are an engineer or a compliance lead picking a KYC stack this quarter and you would rather not have those reversed, Zyphe gives you sandbox access on sign-up, OpenAPI 3.1 docs, signed webhooks, and a no-code option for the parts of your team that do not write code.

Start your free integration, sandbox access on sign-up or book a demo.

  1. KYC software product, Zyphe KYC software overview
  2. Decentralised KYC primer, What it is, how it works in 2026
  3. KYB software guide, How to verify businesses without the manual overhead
  4. Perpetual KYC, Why one-time KYC fails
  5. Top compliance tools, The 10-question vendor evaluation scorecard
  6. Are KYC providers safe, The identity-breach epidemic
  7. Decentralised PII storage product, How sharded storage works
Michelangelo FrigoMichelangelo Frigo(Co-Founder at Zyphe)Michelangelo Frigo is a privacy and identity infrastructure expert and co-founder of Zyphe.

Frequently Asked Questions

Against Zyphe's sandbox, a working approval-path KYC API integration covering session creation, hosted UI, webhook handling, and decision storage takes roughly fifteen minutes. Production-hardening (retries, dead-letter queues, full rejection-path coverage) adds about half a day. Comparable integrations against Jumio and Onfido typically run two to six weeks because of sales-gated sandbox access and lower-quality OpenAPI documentation.

No. The compliance configuration (which document types you accept, rejection thresholds, jurisdictional rules) lives in the Zyphe dashboard, owned by your compliance lead. The KYC API integration work is a standard REST plus webhook pattern. The two roles can move in parallel: compliance configures policy in the dashboard while engineering wires the API, and policy changes flow through without redeploys.

The API is the server-side surface: create sessions, fetch decisions, manage users. The SDK is the front-end surface: render the verification UI, handle camera access, manage retake flows. Most production KYC API integrations use both: a server-side API call to create the session, then an SDK or hosted-page handoff to capture the documents. Mobile apps use the iOS and Android SDKs in place of the JS SDK.

Verify the HMAC-SHA256 signature on every incoming webhook before trusting any payload field. Handle every documented status, not just `approved`. Persist the session ID, status, and timestamp on the user record for audit. Return 200 within five seconds; if your downstream processing is slow, queue the event and ack the webhook fast. Zyphe retries non-2xx responses with exponential backoff for 24 hours.

Yes. Zyphe's no-code option generates a hosted verification page tied to a unique URL. The compliance lead or operator configures accepted document types and rejection thresholds in the dashboard, copies the link, and drops it into Notion, an email, a Typeform, or a Calendly confirmation. Results land in the dashboard and can sync to a CRM through Zapier. This unblocks compliance work before engineering capacity opens.

Zyphe ships an idempotency key on every verification creation request, retries on transient errors, and exposes a status page at [status.zyphe.com](https://status.zyphe.com). For production-grade KYC API integration, queue verification creation requests through a durable job queue (BullMQ, Sidekiq, Celery) so a vendor outage does not block user sign-ups. Webhook delivery failures are auto-retried for 24 hours.

Source documents are sharded across [60,000+ decentralised storage nodes](/product/decentralized-pii-storage) using a 29-of-100 threshold scheme, with the customer holding the encryption key. Verifications produce signed attestations rather than reconstructable PII records on Zyphe infrastructure. GDPR Article 5(1)(c) data minimisation is satisfied by architecture, not policy. See our [decentralised KYC primer](/resources/blog/decentralised-kyc-what-it-is-how-it-works) for the full architecture.

Verifiable credentials carry expiry dates and revocation references. Zyphe re-screens verified users against sanctions, PEP, and adverse media feeds on a defined cadence and updates the credential status if anything changes. Operators check the credential status at each presentation through the same `/v1/verifications/{id}` endpoint. Continuous monitoring runs at the credential layer, not against duplicated PII. See [our perpetual KYC piece](/resources/blog/perpetual-kyc-photograph-video).