Digio KYC API
DigiKYC - template-driven identity verification workflows spanning CKYC, KRA, DigiLocker, ID-proof capture, offline Aadhaar, and Video KYC.
DigiKYC - template-driven identity verification workflows spanning CKYC, KRA, DigiLocker, ID-proof capture, offline Aadhaar, and Video KYC.
# Provenance: modeled-from-docs (2026-07-17).
# Digio does not publish a downloadable first-party OpenAPI/Swagger file. This
# document was MODELED from Digio's public product documentation at
# https://documentation.digio.in/ and widely-published integration guides.
# Hosts are live-verified: production https://api.digio.in (HTTP 404 at root =
# API host, AWS/Amazon RSA TLS) and sandbox https://ext.digio.in (HTTP 200).
# Authentication is HTTP Basic using Base64(client_id:client_secret), confirmed
# across Digio docs and third-party integration references. Exact endpoint
# paths, versions, and request/response schemas should be re-verified against
# documentation.digio.in before production use.
openapi: 3.0.3
info:
title: Digio API
description: >-
Digio is an India-based digital trust and paperwork automation platform
offering legally-valid Aadhaar/OTP eSign, eStamping, KYC (CKYC, KRA,
DigiLocker, offline Aadhaar, Video KYC), eNACH/NACH eMandates, UPI Autopay,
AML/CFT screening, and document/agreement management over a REST API.
All requests use HTTPS with HTTP Basic authentication
(Base64 of client_id:client_secret). Asynchronous status updates are
delivered via HTTP webhooks; there is no WebSocket surface.
version: '1.0'
contact:
name: Digio Developer Support
url: https://documentation.digio.in/
email: tech@digio.in
termsOfService: https://www.digio.in/
servers:
- url: https://api.digio.in
description: Production
- url: https://ext.digio.in
description: Sandbox / Test
security:
- basicAuth: []
tags:
- name: eSign
description: DigiSign - Aadhaar and OTP based legally-valid electronic signatures.
- name: eMandate
description: DigiCollect - eNACH / NACH electronic mandates for recurring debit.
- name: KYC
description: DigiKYC - identity verification via CKYC, KRA, DigiLocker, and offline Aadhaar.
- name: Documents
description: DigiDocs - template-based document and agreement creation with eStamp.
paths:
/v2/client/document/upload:
post:
operationId: uploadDocumentForSign
tags:
- eSign
summary: Upload a document and create an eSign request
description: >-
Uploads a PDF file and creates a signature request for one or more
signers (identified by a single email or phone number). Returns a
document id prefixed with DID.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadDocumentRequest'
responses:
'200':
description: Sign request created
content:
application/json:
schema:
$ref: '#/components/schemas/SignDocument'
'401':
$ref: '#/components/responses/Unauthorized'
/v2/client/document/uploadpdf:
post:
operationId: uploadPdfForSign
tags:
- eSign
summary: Create an eSign request from a base64 PDF
description: >-
Creates a signature request from a base64-encoded PDF payload rather
than a multipart file upload.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadPdfRequest'
responses:
'200':
description: Sign request created
content:
application/json:
schema:
$ref: '#/components/schemas/SignDocument'
'401':
$ref: '#/components/responses/Unauthorized'
/v2/client/document/{document_id}:
get:
operationId: getDocument
tags:
- eSign
summary: Get eSign request details
description: Retrieves the current status and signer details of a signature request.
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Document details
content:
application/json:
schema:
$ref: '#/components/schemas/SignDocument'
'401':
$ref: '#/components/responses/Unauthorized'
/v2/client/document/download/{document_id}:
get:
operationId: downloadSignedDocument
tags:
- eSign
summary: Download a signed document
description: Downloads the completed, signed PDF for a signature request.
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Signed PDF
content:
application/pdf:
schema:
type: string
format: binary
'401':
$ref: '#/components/responses/Unauthorized'
/v2/client/template/multi_templates/create_sign_request:
post:
operationId: createSignRequestFromTemplate
tags:
- Documents
summary: Create a sign request from a template
description: >-
Generates a document from a pre-configured DigiDocs template (with
optional eStamp) and creates an eSign request in one call.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateSignRequest'
responses:
'200':
description: Sign request created from template
content:
application/json:
schema:
$ref: '#/components/schemas/SignDocument'
'401':
$ref: '#/components/responses/Unauthorized'
/v3/client/mandate/create:
post:
operationId: createMandate
tags:
- eMandate
summary: Create an eNACH / NACH mandate
description: >-
Creates an electronic mandate (eNACH via NPCI, UPI Autopay, or physical
NACH) authorizing recurring debit from a customer bank account. Returns
a mandate id prefixed with NACH/MANDATE.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMandateRequest'
responses:
'200':
description: Mandate created
content:
application/json:
schema:
$ref: '#/components/schemas/Mandate'
'401':
$ref: '#/components/responses/Unauthorized'
/v3/client/mandate/{mandate_id}:
get:
operationId: getMandate
tags:
- eMandate
summary: Get mandate details
description: Retrieves the status and details of an eNACH / NACH mandate.
parameters:
- $ref: '#/components/parameters/MandateId'
responses:
'200':
description: Mandate details
content:
application/json:
schema:
$ref: '#/components/schemas/Mandate'
'401':
$ref: '#/components/responses/Unauthorized'
/v3/client/mandate/{mandate_id}/cancel:
post:
operationId: cancelMandate
tags:
- eMandate
summary: Cancel a mandate
description: Cancels an active eNACH / NACH mandate.
parameters:
- $ref: '#/components/parameters/MandateId'
responses:
'200':
description: Mandate cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/Mandate'
'401':
$ref: '#/components/responses/Unauthorized'
/client/kyc/v2/request/with_template:
post:
operationId: createKycRequest
tags:
- KYC
summary: Create a KYC request with a template
description: >-
Initiates a KYC verification workflow using a pre-configured DigiKYC
template (Aadhaar offline, DigiLocker, ID proof, CKYC, KRA, Video KYC).
Returns a request id prefixed with KID.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/KycRequest'
responses:
'200':
description: KYC request created
content:
application/json:
schema:
$ref: '#/components/schemas/KycResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/client/kyc/v2/{request_id}/response:
get:
operationId: getKycResponse
tags:
- KYC
summary: Get KYC request response
description: >-
Fetches the collected identity data, extracted fields, and verification
result for a completed KYC request.
parameters:
- name: request_id
in: path
required: true
description: KYC request identifier (KID...).
schema:
type: string
responses:
'200':
description: KYC response
content:
application/json:
schema:
$ref: '#/components/schemas/KycResponse'
'401':
$ref: '#/components/responses/Unauthorized'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
HTTP Basic authentication. Send the header
Authorization: Basic Base64(client_id:client_secret).
parameters:
DocumentId:
name: document_id
in: path
required: true
description: Signature request identifier (DID...).
schema:
type: string
MandateId:
name: mandate_id
in: path
required: true
description: Mandate identifier.
schema:
type: string
responses:
Unauthorized:
description: Missing or invalid Basic authentication credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Signer:
type: object
properties:
identifier:
type: string
description: A single signer identifier - either an email address or a phone number.
name:
type: string
reason:
type: string
description: Reason for signing.
sign_type:
type: string
description: Signature type.
enum:
- aadhaar
- electronic
- dsc
required:
- identifier
UploadDocumentRequest:
type: object
properties:
signers:
type: array
items:
$ref: '#/components/schemas/Signer'
expire_in_days:
type: integer
display_on_page:
type: string
enum:
- first
- last
- all
- custom
notify_signers:
type: boolean
send_sign_link:
type: boolean
file_name:
type: string
file_data:
type: string
description: Base64-encoded PDF content.
required:
- signers
- file_name
UploadPdfRequest:
allOf:
- $ref: '#/components/schemas/UploadDocumentRequest'
TemplateSignRequest:
type: object
properties:
template_values:
type: object
additionalProperties: true
template_id:
type: string
signers:
type: array
items:
$ref: '#/components/schemas/Signer'
required:
- template_id
- signers
SignDocument:
type: object
properties:
id:
type: string
description: Document identifier (DID...).
is_agreement:
type: boolean
agreement_type:
type: string
signing_parties:
type: array
items:
type: object
properties:
name:
type: string
identifier:
type: string
status:
type: string
enum:
- requested
- signed
- expired
file_name:
type: string
created_at:
type: string
format: date-time
agreement_status:
type: string
enum:
- requested
- completed
- expired
CreateMandateRequest:
type: object
properties:
customer_identifier:
type: string
description: Customer email or phone number.
auth_mode:
type: string
description: Mandate authentication mode.
enum:
- netbanking
- debit_card
- aadhaar
- upi
mandate_type:
type: string
enum:
- create
- modify
- cancel
maximum_amount:
type: number
first_collection_date:
type: string
format: date
final_collection_date:
type: string
format: date
frequency:
type: string
enum:
- Adhoc
- Monthly
- Quarterly
- Yearly
destination_bank_id:
type: string
required:
- customer_identifier
- maximum_amount
Mandate:
type: object
properties:
mandate_id:
type: string
state:
type: string
enum:
- register_initiated
- register_success
- register_failed
- cancelled
npci_txn_id:
type: string
umrn:
type: string
description: Unique Mandate Reference Number issued by NPCI.
maximum_amount:
type: number
created_at:
type: string
format: date-time
KycRequest:
type: object
properties:
customer_identifier:
type: string
description: Customer email or phone number.
customer_name:
type: string
template_name:
type: string
description: DigiKYC workflow template name.
notify_customer:
type: boolean
generate_access_token:
type: boolean
required:
- customer_identifier
- template_name
KycResponse:
type: object
properties:
id:
type: string
description: KYC request identifier (KID...).
status:
type: string
enum:
- requested
- approval_pending
- approved
- rejected
customer_identifier:
type: string
actions:
type: array
items:
type: object
properties:
type:
type: string
status:
type: string
details:
type: object
additionalProperties: true
created_at:
type: string
format: date-time
Error:
type: object
properties:
code:
type: integer
message:
type: string
details:
type: string