Skip to main content
Production-ready API • SHA-256, SHA-384, SHA-512 • eIDAS qualified option

Documentation

Get started with the Anchorify API

ConnectRPC

The Anchorify API is built with ConnectRPC, providing both gRPC and HTTP/JSON support. We recommend using the gRPC protocol for better performance.

Client Libraries

More Languages

Kotlin, Dart, Web and more available at
connectrpc.com/docs

Quickstart

The Anchorify API allows you to create tamper-proof evidence by anchoring hashes on public blockchains. Here's how to get started:

1

1. Get your API key

Sign up for an account and generate an API key from the console.

2

2. Hash your data locally

Generate a hash of your file or data. The original data never needs to leave your system.

# Using OpenSSL (hex output)
openssl dgst -sha256 document.pdf

# Convert hex to base64 for the API
echo -n "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | xxd -r -p | base64

# Output (use the base64 string)
47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
3

3. Submit the hash

Send the hash to our API to create a notarization. You'll receive a notarization ID for tracking.

cURL
NotarizeHash
curl -X POST https://api.anchorify.cloud/anchorify.notarization.v1.AnchorifyNotarizationService/NotarizeHash \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "algorithm": "HASH_ALGORITHM_SHA256",
    "hash": "IDjvWFSjiseUZTqUGy7DYVSh/NCqaM0oWS9LgTk/ayk=",
    "name": "document.pdf"
  }'
Go
NotarizeHash
package main

import (
    "context"
    "log"
    "net/http"

    "connectrpc.com/connect"
    notarizationv1 "github.com/anchorify/platform/gen/proto/go/anchorify/notarization/v1"
    "github.com/anchorify/platform/gen/proto/go/anchorify/notarization/v1/notarizationv1connect"
)

func main() {
    client := notarizationv1connect.NewAnchorifyNotarizationServiceClient(
        http.DefaultClient,
        "https://api.anchorify.cloud",
        connect.WithGRPC(), // Recommended: use gRPC protocol
    )

    hash := []byte{...} // Your SHA-256 hash (32 bytes)
    name := "document.pdf"

    resp, err := client.NotarizeHash(context.Background(), connect.NewRequest(&notarizationv1.NotarizeHashRequest{
        Algorithm: notarizationv1.HashAlgorithm_HASH_ALGORITHM_SHA256,
        Hash:      hash,
        Name:      &name,
    }))
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("Notarization ID: %s", resp.Msg.Notarization.Id)
}
Response
{
  "notarization": {
    "id": "019c0e1a-d891-7f1f-ab6e-5588c46c2a4b",
    "algorithm": "HASH_ALGORITHM_SHA256",
    "hash": "IDjvWFSjiseUZTqUGy7DYVSh/NCqaM0oWS9LgTk/ayk=",
    "status": "NOTARIZATION_STATUS_PENDING",
    "createdAt": "2026-01-30T08:52:46.353991Z",
    "name": "document.pdf"
  }
}
4

4. Poll for status

Check the proof status. Once anchored on the blockchain, you can export your signed proof document.

cURL
GetNotarization
curl -X POST https://api.anchorify.cloud/anchorify.notarization.v1.AnchorifyNotarizationService/GetNotarization \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "notarization_id": "019c0e1a-d891-7f1f-ab6e-5588c46c2a4b"
  }'
Go
GetNotarization
resp, err := client.GetNotarization(context.Background(), connect.NewRequest(&notarizationv1.GetNotarizationRequest{
    NotarizationId: "019c0e1a-d891-7f1f-ab6e-5588c46c2a4b",
}))
if err != nil {
    log.Fatal(err)
}

log.Printf("Status: %s", resp.Msg.Notarization.Status)
Response (completed)
{
  "notarization": {
    "id": "019c0e1a-d891-7f1f-ab6e-5588c46c2a4b",
    "algorithm": "HASH_ALGORITHM_SHA256",
    "hash": "IDjvWFSjiseUZTqUGy7DYVSh/NCqaM0oWS9LgTk/ayk=",
    "status": "NOTARIZATION_STATUS_COMPLETED",
    "timestampProof": { ... },
    "blockchainProof": { ... },
    "createdAt": "2026-01-30T08:52:46.353991Z",
    "updatedAt": "2026-01-30T08:53:32.449111Z",
    "notarizedAt": "2026-01-30T08:53:32.449111Z",
    "name": "document.pdf"
  }
}

API reference

POST /anchorify.notarization.v1.AnchorifyNotarizationService/NotarizeHash

Create a proof

Parameters: algorithm (required), hash (required, base64), name (optional)

POST /anchorify.notarization.v1.AnchorifyNotarizationService/GetNotarization

Get notarization status

Parameters: notarization_id (required)

POST /anchorify.notarization.v1.AnchorifyNotarizationService/ListNotarizations

List notarizations

Parameters: page_size (optional, max 100), page_token (optional)

POST /anchorify.notarization.v1.AnchorifyNotarizationService/Events Pro

Real-time events stream

Parameters: last_event_id (optional), event_types (optional), polling_interval_ms (optional, 100-30000)

Supported Hash Algorithms

Supported hash algorithms: SHA-256 (all plans), SHA-384 and SHA-512 (Pro and Enterprise). The hash must be provided as a base64-encoded string.

Async API

The API is asynchronous. Submit your hash and poll for status, or use webhooks (Pro+) for notifications.

Webhooks

Pro and Enterprise plans can configure webhooks to receive notifications when proofs are finalized. Pro

Signed Proof Documents

Pro and Enterprise plans can export signed proof documents containing all cryptographic evidence. Pro

Qualified timestamps

Enterprise plans can add eIDAS-qualified timestamps for enhanced legal standing. Enterprise