Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
description: This is Evrotrust Vendor callback server API
version: 1.0.22
title: Evrotrust Signing via App/SDK (Hash) API
contact:
name: Evrotrust
email: technical_support@evrotrust.com
servers:
- url: https://api.sandbox.evrotrust.com/vendor
description: Testing
- url: https://v.evrotrust.com/vendor
description: Production
tags:
- name: Signing via App/SDK (Hash)
paths:
/document/group/hash/online:
post:
description: /document/group/hash/online
responses:
'200':
description: Document added success
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'439':
description: User not found
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'442':
description: Certificate not found
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'454':
description: Incorrect coverage
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'468':
description: Certificate expired
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: Authorization value.
requestBody:
content:
application/json:
schema:
type: object
properties:
documents:
type: object
properties:
hash:
type: string
description: max chars 100
description:
type: string
description: max chars 4000
description: Maximum documents in group 20.
signInfo:
type: object
properties:
algorithm:
type: string
description: '"SHA256"'
user:
type: object
properties:
identificationNumber:
type: string
description: Personal identification number.
country:
type: string
description: Optional with default value "BG". Valid values are the ISO 3166-1 alpha-2 codes.
email:
type: string
description: E-mail address.
phone:
type: string
description: Should match the following pattern "+[0-9]"
automatedSignCertID:
type: string
description: Should match the following pattern "[a-zA-Z0-9-]{1,36}"
automatedSignSealID:
type: string
description: Should match the following pattern "[a-zA-Z0-9-]{1,36}"
description: 'The following user identifiers have to be provided:
- "identificationNumber" and "country" for manual signing;
- "email" for manual signing;
- "phone" for manual signing;
- "automatedSignCertID" for automated signing;
- "automatedSignSealID" for automated signing.'
dateExpire:
type: number
description: timestamp
groupDescription:
type: string
certificateSerialNumber:
type: string
description: Serial number of the user certificate. Parameter has to be provided if the user identifier is "identificationNumber", "phone" or "email".
BIOrequired:
type: string
description: 0/1 Optional parameter. Default value 0.
vendorNumber:
type: string
urlCallback:
type: string
description: Optional parameter. Only https:// is allowed. It has to be sent a host name if Evrotrust Vendor callback API is used.
publicKey:
type: string
description: base64 encoded string of public key, necessary for encryption process
required:
- vendorNumber
- user
- documents
examples:
default:
summary: Example request
value:
documents:
hash: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
description: Contract for signature
signInfo:
algorithm: <algorithm>
user:
identificationNumber: '1234567890'
country: BG
email: user@example.com
phone: '+359123456789'
automatedSignCertID: <automatedSignCertID>
automatedSignSealID: <automatedSignSealID>
dateExpire: '2026-12-31T23:59:59Z'
groupDescription: Contract for signature
certificateSerialNumber: 1A2B3C4D5E6F
BIOrequired: <BIOrequired>
vendorNumber: YOUR_VENDOR_NUMBER
urlCallback: https://your-server.example.com/callback
publicKey: <publicKey>
summary: eSign Group Hash
x-readme:
code-samples:
- language: python
name: Python
code: "import hashlib, hmac, requests\n\nVENDOR_API_KEY = 'xxx'\nURL = 'https://api.sandbox.evrotrust.com/vendor/document/group/hash/online'\n\n# Up to 20 hashes per group. The HMAC is computed over this exact string.\nbody = \"\"\"{\n \"documents\": [\n {\n \"hash\": \"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\",\n \"description\": \"Service agreement\"\n },\n {\n \"hash\": \"60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752\",\n \"description\": \"Annex A - pricing\"\n }\n ],\n \"signInfo\": {\n \"algorithm\": \"SHA256\"\n },\n \"user\": {\n \"identificationNumber\": \"1234567890\",\n \"country\": \"BG\"\n },\n \"dateExpire\": 1798761599,\n \"groupDescription\": \"Service agreement and annex\",\n \"certificateSerialNumber\": \"1A2B3C4D5E6F\",\n \"BIOrequired\": \"0\",\n \"vendorNumber\": \"YOUR_VENDOR_NUMBER\",\n \"urlCallback\": \"https://your-server.example.com/evrotrust/callback\",\n \"publicKey\": \"BASE64_ENCODED_PUBLIC_KEY\"\n}\"\"\"\n\nkey = hashlib.sha256(VENDOR_API_KEY.encode()).digest()\nauthorization = hmac.new(key, body.encode('utf-8'), hashlib.sha256).hexdigest()\n\nresponse = requests.post(\n URL,\n headers={'Content-Type': 'application/json',\n 'Authorization': authorization},\n data=body.encode('utf-8'),\n timeout=30,\n)\n\nprint(response.status_code, response.text)\n"
- language: node
name: Node.js
code: "const crypto = require('crypto');\n\nconst VENDOR_API_KEY = 'xxx';\nconst URL = 'https://api.sandbox.evrotrust.com/vendor/document/group/hash/online';\n\n// Up to 20 hashes per group.\nconst body = JSON.stringify({\n \"documents\": [\n {\n \"hash\": \"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\",\n \"description\": \"Service agreement\"\n },\n {\n \"hash\": \"60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752\",\n \"description\": \"Annex A - pricing\"\n }\n ],\n \"signInfo\": { \"algorithm\": \"SHA256\" },\n \"user\": {\n \"identificationNumber\": \"1234567890\",\n \"country\": \"BG\"\n },\n \"dateExpire\": 1798761599,\n \"groupDescription\": \"Service agreement and annex\",\n \"certificateSerialNumber\": \"1A2B3C4D5E6F\",\n \"BIOrequired\": \"0\",\n \"vendorNumber\": \"YOUR_VENDOR_NUMBER\",\n \"urlCallback\": \"https://your-server.example.com/evrotrust/callback\",\n \"publicKey\": \"BASE64_ENCODED_PUBLIC_KEY\"\n});\n\nconst key = crypto.createHash('sha256').update(VENDOR_API_KEY).digest();\nconst authorization = crypto.createHmac('sha256', key).update(body).digest('hex');\n\nconst response = await fetch(URL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: authorization,\n },\n body,\n});\n\nconsole.log(response.status, await response.text());\n"
operationId: post_document-group-hash-online
tags:
- Signing via App/SDK (Hash)
/document/hash/online:
post:
description: /document/hash/online
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: '{
"transactionID":"string",
"threadID":"string"
}'
required:
- name
'400':
description: Invalid data supplied
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'439':
description: User not found
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'442':
description: Certificate not found
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
'468':
description: Certificate expired
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: Authorization value.
summary: eSign Hash
operationId: post_document-hash-online
tags:
- Signing via App/SDK (Hash)
x-readme:
code-samples:
- language: python
name: Python
code: "import hashlib, hmac, requests\n\nVENDOR_API_KEY = 'xxx'\nURL = 'https://api.sandbox.evrotrust.com/vendor/document/hash/online'\n\nbody = \"\"\"{\n \"document\": {\n \"hash\": \"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\",\n \"description\": \"Contract for signature\",\n \"dateExpire\": 12345678\n },\n \"signInfo\": {\n \"algorithm\": \"SHA-256\"\n },\n \"user\": {\n \"identificationNumber\": \"1234567890\",\n \"country\": \"BG\",\n //\"email\": \"user@example.com\",\n //\"phone\": \"+359123456789\",\n //\"automatedSignCertID\": \"<automatedSignCertID>\",\n //\"automatedSignSealID\": \"<automatedSignSealID>\"\n },\n \"certificateSerialNumber\": \"1A2B3C4D5E6F\",\n \"BIOrequired\": 0,\n \"vendorNumber\": \"YOUR_VENDOR_NUMBER\",\n \"urlCallback\": \"https://your-server.example.com/callback\",\n \"publicKey\": \"<publicKey>\"\n}\"\"\"\n\n# Authorization: HMAC-SHA256 over the exact body bytes,\n# keyed by the raw SHA-256 digest of the API key\nkey = hashlib.sha256(VENDOR_API_KEY.encode()).digest()\nauthorization = hmac.new(key, body.encode('utf-8'), hashlib.sha256).hexdigest()\n\nresponse = requests.post(\n URL,\n headers={'Content-Type': 'application/json',\n 'Authorization': authorization},\n data=body.encode('utf-8'),\n timeout=30,\n)\n\nprint(response.status_code, response.text)\n"
- language: node
name: Node.js
code: "const crypto = require('crypto');\n\nconst VENDOR_API_KEY = 'xxx';\nconst URL = 'https://api.sandbox.evrotrust.com/vendor/document/hash/online';\n\nconst body = JSON.stringify({\n \"document\": {\n \"hash\": \"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\",\n \"description\": \"Contract for signature\",\n \"dateExpire\": 12345678\n },\n \"signInfo\": {\n \"algorithm\": \"SHA-256\"\n },\n \"user\": {\n \"identificationNumber\": \"1234567890\",\n \"country\": \"BG\",\n //\"email\": \"user@example.com\",\n //\"phone\": \"+359123456789\",\n //\"automatedSignCertID\": \"<automatedSignCertID>\",\n //\"automatedSignSealID\": \"<automatedSignSealID>\"\n },\n \"certificateSerialNumber\": \"1A2B3C4D5E6F\",\n \"BIOrequired\": 0,\n \"vendorNumber\": \"YOUR_VENDOR_NUMBER\",\n \"urlCallback\": \"https://your-server.example.com/callback\",\n \"publicKey\": \"<publicKey>\"\n});\n\n// Authorization: HMAC-SHA256 over the body, keyed by the raw SHA-256 of the API key\nconst key = crypto.createHash('sha256').update(VENDOR_API_KEY).digest();\nconst authorization = crypto.createHmac('sha256', key).update(body).digest('hex');\n\nconst response = await fetch(URL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: authorization,\n },\n body,\n});\n\nconsole.log(response.status, await response.text());\n"
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: "{\n \"document\": {\n \"hash\": \"\",\n \"description\": \"\",\n \"dateExpire\":\"\"\n },\n \"signInfo\": {\n \"algorithm\": \"\"\n },\n \"user\": {\n \"identificationNumber\": \"1234567890\",\n \"country\": \"BG\",\n //\"email\": \"user@example.com\",\n //\"phone\": \"+359123456789\",\n //\"automatedSignCertID\": \"<automatedSignCertID>\",\n //\"automatedSignSealID\": \"<automatedSignSealID>\"\n },\n \"certificateSerialNumber\": \"\",\n \"BIOrequired\": 0,\n \"vendorNumber\": \"YOUR_VENDOR_NUMBER\",\n \"urlCallback\": \"https://your-server.example.com/callback\",\n \"publicKey\": \"<publicKey>\"\n}"
required:
- name
x-provenance:
method: searched
source: https://docs.evrotrust.com/reference
harvested: '2026-10-18'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://docs.evrotrust.com/reference/delivery-online.md
- https://docs.evrotrust.com/reference/delivery-receipts-download.md
- https://docs.evrotrust.com/reference/delivery-receipts-status.md
- https://docs.evrotrust.com/reference/document-auth-online.md
- https://docs.evrotrust.com/reference/document-doc-identification-lpis.md
- https://docs.evrotrust.com/reference/document-doc-identification.md
- https://docs.evrotrust.com/reference/document-doc-offline-activate-resend.md
- https://docs.evrotrust.com/reference/document-doc-offline-activate.md
- https://docs.evrotrust.com/reference/document-doc-offline-file.md
- https://docs.evrotrust.com/reference/document-doc-offline-refid.md
- https://docs.evrotrust.com/reference/document-doc-offline.md
- https://docs.evrotrust.com/reference/document-doc-online.md
- https://docs.evrotrust.com/reference/document-group-download.md
- https://docs.evrotrust.com/reference/document-group-hash-online.md
- https://docs.evrotrust.com/reference/document-group-offline-activate-resend.md
- https://docs.evrotrust.com/reference/document-group-offline-activate.md
- https://docs.evrotrust.com/reference/document-group-offline-file.md
- https://docs.evrotrust.com/reference/document-group-offline-refid.md
- https://docs.evrotrust.com/reference/document-group-offline.md
- https://docs.evrotrust.com/reference/document-group-online.md
- https://docs.evrotrust.com/reference/document-group-status.md
- https://docs.evrotrust.com/reference/document-group-terms-offline-download.md
- https://docs.evrotrust.com/reference/document-hash-online.md
- https://docs.evrotrust.com/reference/document-offline-withdraw.md
- https://docs.evrotrust.com/reference/document-status.md
- https://docs.evrotrust.com/reference/document-terms-offline-download.md
- https://docs.evrotrust.com/reference/document-thread-status.md
- https://docs.evrotrust.com/reference/document-threads-status.md
- https://docs.evrotrust.com/reference/document-withdraw.md
- https://docs.evrotrust.com/reference/hash-certificate-check.md
- https://docs.evrotrust.com/reference/hash-certificate-get.md
- https://docs.evrotrust.com/reference/hash-group-certificate-check.md
- https://docs.evrotrust.com/reference/hash-group-certificate-get.md
- https://docs.evrotrust.com/reference/hash-group-offline-activate-resend.md
- https://docs.evrotrust.com/reference/hash-group-offline-activate.md
- https://docs.evrotrust.com/reference/hash-group-offline-check.md
- https://docs.evrotrust.com/reference/hash-group-offline-file-init.md
- https://docs.evrotrust.com/reference/hash-group-offline-init.md
- https://docs.evrotrust.com/reference/hash-group-offline-send.md
- https://docs.evrotrust.com/reference/hash-offline-activate-resend.md
- https://docs.evrotrust.com/reference/hash-offline-activate.md
- https://docs.evrotrust.com/reference/hash-offline-check.md
- https://docs.evrotrust.com/reference/hash-offline-download.md
- https://docs.evrotrust.com/reference/hash-offline-file-init.md
- https://docs.evrotrust.com/reference/hash-offline-init.md
- https://docs.evrotrust.com/reference/hash-offline-send.md
- https://docs.evrotrust.com/reference/onetimeidentification-getdata.md
- https://docs.evrotrust.com/reference/onetimeidentification-mobilesdk-getdatajwt.md
- https://docs.evrotrust.com/reference/onetimeidentification-mobilesdk-status.md
- https://docs.evrotrust.com/reference/onetimeidentification-status.md
- https://docs.evrotrust.com/reference/onetimeidentification-validaterefid.md
- https://docs.evrotrust.com/reference/post_document-doc-offline-activate-1.md
- https://docs.evrotrust.com/reference/post_document-doc-offline-activate-resend-1.md
- https://docs.evrotrust.com/reference/post_document-download-1.md
- https://docs.evrotrust.com/reference/post_document-download-2.md
- https://docs.evrotrust.com/reference/post_document-download-3.md
- https://docs.evrotrust.com/reference/post_document-download.md
- https://docs.evrotrust.com/reference/post_document-group-download-1.md
- https://docs.evrotrust.com/reference/post_document-group-download-2.md
- https://docs.evrotrust.com/reference/post_document-group-download-3-1.md
- https://docs.evrotrust.com/reference/post_document-group-download-3.md
- https://docs.evrotrust.com/reference/post_document-group-offline-activate-1.md
- https://docs.evrotrust.com/reference/post_document-group-offline-activate-resend-1.md
- https://docs.evrotrust.com/reference/post_document-group-status-1.md
- https://docs.evrotrust.com/reference/post_document-group-status-2.md
- https://docs.evrotrust.com/reference/post_document-group-status-3.md
- https://docs.evrotrust.com/reference/post_document-group-status-4.md
- https://docs.evrotrust.com/reference/post_document-group-status-5.md
- https://docs.evrotrust.com/reference/post_document-offline-withdraw-1-1-1-1-1.md
- https://docs.evrotrust.com/reference/post_document-offline-withdraw-1-1-1-1.md
- https://docs.evrotrust.com/reference/post_document-offline-withdraw-1-1-1.md
- https://docs.evrotrust.com/reference/post_document-offline-withdraw-1-1.md
- https://docs.evrotrust.com/reference/post_document-offline-withdraw-1.md
- https://docs.evrotrust.com/reference/post_document-status-1.md
- https://docs.evrotrust.com/reference/post_document-status-2.md
- https://docs.evrotrust.com/reference/post_document-status-3.md
- https://docs.evrotrust.com/reference/post_document-status-4.md
- https://docs.evrotrust.com/reference/post_document-status-5.md
- https://docs.evrotrust.com/reference/post_hash-certificate-check-1.md
- https://docs.evrotrust.com/reference/post_hash-certificate-get-1.md
- https://docs.evrotrust.com/reference/post_hash-group-certificate-check-1.md
- https://docs.evrotrust.com/reference/post_hash-group-certificate-get-1.md
- https://docs.evrotrust.com/reference/post_hash-group-offline-activate-1.md
- https://docs.evrotrust.com/reference/post_hash-group-offline-activate-resend-1.md
- https://docs.evrotrust.com/reference/post_hash-group-offline-check-1.md
- https://docs.evrotrust.com/reference/post_hash-group-offline-send-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-activate-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-activate-resend-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-check-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-download-1-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-download-1-2-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-download-1-2.md
- https://docs.evrotrust.com/reference/post_hash-offline-download-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-download-2-1.md
- https://docs.evrotrust.com/reference/post_hash-offline-download-2.md
- https://docs.evrotrust.com/reference/post_hash-offline-send-1.md
- https://docs.evrotrust.com/reference/readydocument.md
- https://docs.evrotrust.com/reference/readydocumentoffline.md
- https://docs.evrotrust.com/reference/readygroupdocument.md
- https://docs.evrotrust.com/reference/readygroupofflinedocument.md
- https://docs.evrotrust.com/reference/readyofflinehashcertificate.md
- https://docs.evrotrust.com/reference/user-certificate-get.md
- https://docs.evrotrust.com/reference/user-check-extended.md
- https://docs.evrotrust.com/reference/user-identification-status.md
merge:
pages: 104
deduped: 0
conflicts_kept_first: 0