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.