openapi: 3.1.0 info: title: Coincover API version: '2026-10-09' description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-09: 9 operation(s) read from 10 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; Coincover has published no machine-readable contract that the pipeline could find. Engine: local.' x-evidence-tiers: code-example: 1 documentation: 8 pages-with-code: 1 pages-read: 10 x-generated-from: documentation x-provenance: generated x-authored-by: API Evangelist x-generated: '2026-10-09' x-generator: generate-contract-from-docs.py x-engine: local x-sources: - https://developer.coincover.com/wallet-provider-recovery/api-integration-guide.md - https://developer.coincover.com/partner-guides/bitgo.md - https://developer.coincover.com/retail-recovery/testing.md - https://developer.coincover.com/retail-recovery/ui-components.md - https://developer.coincover.com/institutional-recovery/testing.md - https://developer.coincover.com/wallet-provider-recovery/testing.md - https://developer.coincover.com/retail-recovery/integration-guide.md - https://developer.coincover.com/institutional-recovery/add-a-backup-key.md - https://developer.coincover.com/institutional-recovery/back-up-key-material.md - https://developer.coincover.com/api-reference/keys/partner--assign-a-new-key-with-environment-specification servers: - url: https://service.uat-keys.coincover.com paths: /v1/backup/{backupid}: post: operationId: post_v1_backup_backupid tags: - Backup summary: Once the inquiry status is approved, call POST /v1/backup/recover to retrieve the encrypted backup. x-source: https://developer.coincover.com/retail-recovery/integration-guide.md parameters: - name: backupid in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1BackupBackupidRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1BackupBackupidResponse' x-evidence: kind: documentation collapsed_from: 2 example path(s) differing only at backupId /v1/key/generate: post: operationId: post_v1_key_generate tags: - Key summary: Call POST /v1/key/generate to obtain the public key your customer will use for client-side encryption. x-source: https://developer.coincover.com/retail-recovery/integration-guide.md requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1KeyGenerateRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1KeyGenerateResponse' x-evidence: kind: documentation /v1/keys: post: operationId: post_v1_keys tags: - Keys summary: Assign a signer key via the CoinCover API to act as a backup key for BitGo multi‑sig wallets. x-source: https://developer.coincover.com/partner-guides/bitgo.md requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1KeysRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1KeysResponse' x-evidence: kind: documentation /v1/partner/keys: get: operationId: get_v1_partner_keys tags: - Partner summary: GET /v1/partner/keys x-source: https://developer.coincover.com/api-reference/keys/partner--assign-a-new-key-with-environment-specification responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1PartnerKeysResponse' x-evidence: kind: code-example language: curl snippet: "curl);\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n} package main\nimport (\n \"fmt\"\n \"strings\"\ \n \"net/http\"\n \"io\"\n)\nfunc main() {\n url := \"https://service.uat-keys.coincover.com/v1/partner/keys\"\n payload := strings.NewReader(\"\ {\\n \\\"user_identifier\\\": \\\"\\\",\\n \\\"organisation\\\": {\\n \\\"customer_id\\\": \\\"\\\",\\n \\\"customer_name\\\ \": \\\"\\\"\\n },\\n \\\"package\\\": {\\n \\" post: operationId: post_v1_partner_keys tags: - Partner summary: Assign a key to a customer description: Call POST /v1/partner/keys with an identifier for your customer and your tenant structure. Returns a stable key_id and the public key. x-source: https://developer.coincover.com/wallet-provider-recovery/api-integration-guide.md requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1PartnerKeysRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1PartnerKeysResponse' x-evidence: kind: documentation /v1/partner/secure/{secureid}: post: operationId: post_v1_partner_secure_secureid tags: - Partner summary: Store encrypted data description: Send the ciphertext, the plaintext checksum, and the public key to POST /v1/partner/secure/data. x-source: https://developer.coincover.com/wallet-provider-recovery/api-integration-guide.md parameters: - name: secureid in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1PartnerSecureSecureidRequest' responses: '201': description: Success (status as documented) x-evidence: kind: documentation collapsed_from: 2 example path(s) differing only at secureId /v1/secure/{secureid}: post: operationId: post_v1_secure_secureid tags: - Secure summary: Store the ciphertext description: POST /v1/secure/data with the ciphertext and plaintext checksum. Keeps the returned backup_id for later reference. x-source: https://developer.coincover.com/institutional-recovery/add-a-backup-key.md parameters: - name: secureid in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1SecureSecureidRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1SecureSecureidResponse' x-evidence: kind: documentation collapsed_from: 2 example path(s) differing only at secureId /v1/verification/status: get: operationId: get_v1_verification_status tags: - Verification summary: Monitor the status via your configured webhook, or poll GET /v1/verification/status if you need a synchronous read. x-source: https://developer.coincover.com/retail-recovery/integration-guide.md responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/GetV1VerificationStatusResponse' x-evidence: kind: documentation /v1/verification/{verificationid}: post: operationId: post_v1_verification_verificationid tags: - Verification summary: Simulating outcomes x-source: https://developer.coincover.com/retail-recovery/testing.md parameters: - name: verificationid in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1VerificationVerificationidRequest' responses: '201': description: Success (status as documented) x-evidence: kind: documentation collapsed_from: 2 example path(s) differing only at verificationId components: schemas: PostV1BackupBackupidRequest: type: object properties: user_identifier: type: string verification_id: type: string gpg_public_key: type: string required: - user_identifier - verification_id - gpg_public_key PostV1BackupBackupidResponse: type: object properties: backup: type: array description: Each object includes backup_id, backup_item_key, recovery_id, recovery_package (algorithm and base64 data), original_filename, content_type, original_size, metadata, and optionally error. PostV1KeyGenerateRequest: type: object properties: user_identifier: type: string verification_id: type: string sign_with: type: array required: - user_identifier - verification_id PostV1KeyGenerateResponse: type: object properties: key_id: type: string public_key: type: string signature: type: string signed_payload: type: string description: Present only when sign_with is provided signed_fields: type: array description: Present only when sign_with is provided PostV1KeysRequest: type: object properties: key_type: type: string description: The type of key to generate, e.g., "secp256k1" or "ed25519". required: - key_type PostV1KeysResponse: type: object properties: public_key: type: string description: The compressed public key generated by CoinCover. GetV1PartnerKeysResponse: type: object properties: key_id: type: string public_key: type: string signature: type: string signed_payload: type: string signed_fields: type: array items: type: string customer_id: type: string package_id: type: string metadata: type: object properties: customer_name: type: string package_name: type: string PostV1PartnerKeysRequest: type: object properties: user_identifier: type: string key_type: type: string description: e.g. rsa4096 key_environment: type: string description: '`HOT` or `COLD`' organisation: type: object description: Customer context organisation.customer_id: type: string organisation.customer_name: type: string package: type: object description: Package context package.package_id: type: string package.package_name: type: string sign_with: type: array description: Array of field names to bind in the signature required: - user_identifier - key_type - key_environment - organisation - organisation.customer_id - organisation.customer_name - package - package.package_id - package.package_name PostV1PartnerKeysResponse: type: object properties: key_id: type: string public_key: type: string description: hex‑encoded public key signature: type: string description: base64 signature over the public key (and optional fields) signed_payload: type: string description: JCS‑canonical JSON string when `sign_with` is used signed_fields: type: array description: Echo of the fields requested in `sign_with` PostV1PartnerSecureSecureidRequest: type: object properties: public_key: type: string description: hex‑encoded public key identifying the storage location checksum: type: string description: SHA‑256 hex of the plaintext data: type: string description: Base64‑encoded ciphertext padding_type: type: string description: '`OAEP`' metadata: type: object metadata.description: type: string metadata.content_type: type: string metadata.original_filename: type: string required: - public_key - checksum - data PostV1SecureSecureidRequest: type: object properties: ciphertext: type: string description: RSA‑OAEP encrypted payload containing the chain code and related metadata. checksum: type: string description: Checksum of the plaintext payload for integrity verification. required: - ciphertext - checksum PostV1SecureSecureidResponse: type: object properties: backup_id: type: string description: Identifier for the stored backup, to be used later for verification and recovery. GetV1VerificationStatusResponse: type: object properties: verification_id: type: string status: type: string description: One of pending, approved, declined, review updated_at: type: string PostV1VerificationVerificationidRequest: type: object properties: verification_id: type: string action: type: string description: see table below required: - verification_id - action securitySchemes: bearer: type: http scheme: bearer security: - bearer: [] tags: - name: Backup - name: Key - name: Keys - name: Partner - name: Secure - name: Verification