Evrotrust Signing via App/SDK (Hash) API

The Signing via App/SDK (Hash) API from Evrotrust — 2 operation(s) for signing via app/sdk (hash).

Business capability
Qualified Electronic Signatures & Trust Services AE-160.80

Operations 2

POST /document/group/hash/online eSign Group Hash #
POST /document/hash/online eSign Hash #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/evrotrust:evrotrust-signing-via-app-sdk-hash-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

evrotrust-signing-via-app-sdk-hash-api-openapi.yml Raw ↑
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