---
title: "Submit user decryption."
method: POST
path: "/v2/user-decrypt"
tags: ["User Decrypt"]
deprecated: true
---

# Submit user decryption.

`POST /v2/user-decrypt`

> **Deprecated.**

**Deprecated.** Superseded by `POST /v3/user-decrypt` (unified EIP-712
user-decryption). The v2 surface remains available throughout the
deprecation window.

## Request body

- UserDecryptRequestJson
  - `contractAddresses` string[], required
  - `contractsChainId` union, required — Chain Id It does support an ID as an integer or a 0x prefixed hex string
    - string
    - integer
  - `extraData` string, required — Extra data forwarded verbatim to the gateway contract. Accepts `"0x00"`, version `0x01` (`0x01` + 32-byte contextId), or version `0x02` (`0x02` + 32-byte contextId + 32-byte epochId). contextId must be 0x07-tagged and epochId must be 0x08-tagged (first byte of each).
  - `handleContractPairs` HandleContractPairJson[], required
    - `contractAddress` string, required — Address of the contract that produced this ciphertext handle. `0x` + 40 hex chars.
    - `handle` string, required — Ciphertext handle from an on-chain FHE operation. `0x` + 64 hex chars.
  - `publicKey` string, required — User's public key for re-encryption. Raw hex, no `0x` prefix, minimum 2 chars.
  - `requestValidity` RequestValidityJson, required
    - `durationDays` string, required — Number of days the request remains valid. Decimal string.
    - `startTimestamp` string, required — Unix timestamp (seconds) when this request becomes valid. Decimal string.
  - `signature` string, required — EIP-712 signature over the decryption request, signed by the user. Raw hex, 130 chars, no `0x` prefix.
  - `userAddress` string, required — Ethereum address of the user requesting decryption. `0x` + 40 hex chars.

## Response `202`

Request accepted for processing.

- UserDecryptPostResponseJson
  - `requestId` string, required
  - `result` UserDecryptQueuedResult, required
    - `jobId` string, required
  - `status` string, required

## Other responses

- `400` — Invalid request. Error label is one of: `malformed_json`, `missing_fields`, `validation_failed`, `request_error`, `host_chain_id_not_supported`
- `429` — Rate limited. Error label: `rate_limited`
- `500` — Internal server error. Error label: `internal_server_error`

## Changes

- **2026-06-01** `a7216daccabe` — 1 info
  - endpoint deprecated
- **2026-03-26** `10eb1d6af6bc` — 1 info
  - endpoint reactivated

[Change history](https://skmtc.dev/zama-ai/apis/relayer-api/changes/v2/user-decrypt/post.md)

---

[API](https://skmtc.dev/zama-ai/apis/relayer-api.md) · [All operations](https://skmtc.dev/zama-ai/apis/relayer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zama-ai/relayer-api/revisions/23ec7991ea5e/schema)
