Skip to main content

Deeproof API Reference

API Overview

The Deeproof Backend API allows external developers, partner protocols, and integrators to interact with the Deeproof identity and KYC system. It provides capabilities to:

  • Bind a wallet to a Deeproof identity.
  • Submit ZK-KYC proofs.
  • Check the verification status of a user.
  • Integrate with protocol hooks.

Base URL & Versioning

Base URL: http://localhost:3001

Versioning: Not specified in api.md.


Endpoints Documentation

Identity

Bind Identity

Associates a wallet address with a Deeproof identity.

  • Method: POST
  • Path: /identity/bind

Request Body

FieldTypeDescriptionRequired
walletAddressstring40-character hex string (Ethereum address)Yes
identityCommitmentstringThe identity commitment stringNo

Request Example

{
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
"identityCommitment": "123456789..."
}

Success Response (200/201) Response body structure not specified in api.md.


Get Identity

Retrieves identity information for a specific wallet.

  • Method: GET
  • Path: /identity/:walletAddress
  • Authentication: Not specified in api.md.

Path Parameters

ParameterTypeDescriptionRequired
walletAddressstringEthereum wallet address (0x...)Yes

Success Response (200)

{
...identityData
}

KYC

Submit KYC Proof

Submits ZK-KYC proof metadata and commitment.

  • Method: POST
  • Path: /kyc/submit
  • Authentication: Not specified in api.md.

Request Body

FieldTypeDescriptionRequired
walletAddressstringEthereum wallet addressYes
proofReferencestringReference to the ZK proofYes
commitmentstringThe proof commitmentYes
providerstringIdentity provider (e.g., 'binance')No
txHashstringTransaction hashNo
kycScorenumberScore between 0-100No
solidityParamsobjectParameters for on-chain verificationNo

solidityParams Object

FieldTypeDescription
aarrayProof parameter A
barrayProof parameter B
carrayProof parameter C
inputarrayPublic inputs

Request Example

{
"walletAddress": "0x1234...",
"proofReference": "proof-uuid-123",
"commitment": "commitment-hash",
"provider": "binance",
"txHash": "0xabc...",
"kycScore": 100,
"solidityParams": {
"a": ["..."],
"b": [["..."]],
"c": ["..."],
"input": ["..."]
}
}

Success Response Not specified in api.md.


Get KYC Status

Checks the current KYC status of a wallet.

  • Method: GET
  • Path: /kyc/status/:walletAddress
  • Authentication: Not specified in api.md.

Path Parameters

ParameterTypeDescriptionRequired
walletAddressstringEthereum wallet addressYes

Success Response (200)

{
"status": "PENDING",
"updatedAt": "2023-10-27T10:00:00Z"
}

Note: status can be "PENDING", "VERIFIED", or "REJECTED".


Check Verification (Boolean)

Simple check if a wallet is verified.

  • Method: GET
  • Path: /kyc/verified/:walletAddress
  • Authentication: Not specified in api.md.

Path Parameters

ParameterTypeDescriptionRequired
walletAddressstringEthereum wallet addressYes

Success Response (200)

{
"verified": true
}

Update KYC Status (Internal)

Updates the status of a KYC record.

  • Method: PATCH
  • Path: /kyc/status/:walletAddress
  • Authentication: Internal check (specifics not specified in api.md).

Path Parameters

ParameterTypeDescriptionRequired
walletAddressstringEthereum wallet addressYes

Request Body

FieldTypeDescriptionRequired
statusstring"PENDING" | "VERIFIED" | "REJECTED"Yes
txHashstringTransaction hashNo

Request Example

{
"status": "VERIFIED",
"txHash": "0xdef..."
}

Success Response Not specified in api.md.


Protocol API (Partner Integration)

Designed for third-party applications (DeFi protocols, RWA platforms, etc.) to validate if a user has completed KYC on Deeproof without accessing sensitive PII.

Check KYC Status

Partners can use this endpoint to gate access or provide tiered services based on a user's Deeproof KYC status.

  • URL: /protocol/check/:walletAddress
  • Method: GET
  • URL Params:
    • walletAddress: Ethereum wallet address to check (e.g., 0x123...)
  • Success Response:
    • Code: 200
    • Content:
      {
      "walletAddress": "0x71C...",
      "isVerified": true, // Main indicator. true = KYC verified, false = pending/rejected/not found
      "kycScore": 100, // Reputation score (0-100)
      "verifiedAt": "2024-03-20T10:00:00.000Z" // Timestamp of verification (or null)
      }
  • Example Usage:
    curl https://api.deeproof.xyz/protocol/check/0xYourWalletAddress
    (Note: Replace domain with actual production URL)

Data Models

Identity Data

Structure not fully specified in api.md.

KYC Status Response

FieldTypeDescription
statusstringOne of "PENDING", "VERIFIED", "REJECTED"
updatedAtstringTimestamp of the last update

Verification Check Response

FieldTypeDescription
verifiedbooleanTrue if the wallet is verified, false otherwise

Error Handling

The API uses standard HTTP status codes.

CodeDescription
200OK - Success
201Created - Resource successfully created

Specific error codes (400, 401, 404, 500) and error response formats are not specified in api.md.

Rate Limiting & Constraints

Rate limits and size restrictions are not specified in api.md.