attestHuman
Signature
Section titled “Signature”const result = await fidemark.attestHuman({ content, // string | Uint8Array contentType, // string: MIME type or category creator, // optional, defaults to the signer's address createdAt, // optional, Unix timestamp; defaults to now proofMethod, // optional, defaults to "wallet-signed" refUID, // optional, parent attestation UID});result = fidemark.attest_human(AttestHumanInput( content=..., # str | bytes content_type=..., # str creator=None, # optional created_at=None, # optional Unix seconds proof_method="wallet-signed", ref_uid=None, # optional parent UID))res, err := client.AttestHuman(ctx, fidemark.AttestHumanInput{ Content: []byte(...), ContentType: "text/article", Creator: "", // optional CreatedAt: 0, // optional, Unix seconds ProofMethod: "wallet-signed", // optional RefUID: "", // optional parent UID})Returns the attestation UID, transaction hash, and a public verify URL.
Inputs
Section titled “Inputs”| Field | Type | Notes |
|---|---|---|
content | string | Uint8Array / str | bytes / []byte | Hashed client-side with SHA-256. The bytes never leave your machine. |
contentType | string | Free-form. Conventional values: text/article, image/jpeg, audio/wav, application/pdf. |
creator | string | Address of the human creator. Defaults to the signer’s address. Must match the signer: the resolver enforces creator == attester. |
createdAt | number | bigint / int / uint64 | Unix seconds. Defaults to now. Cannot be more than 1 day in the future. |
proofMethod | string | Trust layer. Defaults to wallet-signed. Must be on the resolver’s allowlist: see Trust layers. |
Errors
Section titled “Errors”| Code | Cause |
|---|---|
INVALID_INPUT | Missing signer, or both signer and privateKey were passed to the constructor. |
VALIDATION_REJECTED | The resolver rejected the attestation (mismatched creator, unknown proofMethod, future timestamp, empty field). |
USER_REJECTED | A wallet (e.g. MetaMask) prompt was rejected by the user. |
INSUFFICIENT_FUNDS | The signer’s address has no funds to pay gas. |
Example
Section titled “Example”Complete, copy-pasteable runnable. See Configuration for every constructor option.
import { Fidemark, getNetwork } from "@fidemark/sdk";
const fidemark = new Fidemark({ network: getNetwork("base-sepolia"), privateKey: process.env.PRIVATE_KEY,});
const result = await fidemark.attestHuman({ content: articleMarkdown, contentType: "text/article",});
console.log(`Verify at ${result.verifyUrl}`);import osfrom fidemark import AttestHumanInput, Fidemark, get_network
fidemark = Fidemark( network=get_network("base-sepolia"), private_key=os.environ["PRIVATE_KEY"],)
result = fidemark.attest_human(AttestHumanInput( content=article_markdown, content_type="text/article",))print(f"Verify at {result.verify_url}")import ( "context" "log" "os"
"github.com/fidemark/sdk-go/fidemark")
network, _ := fidemark.GetNetwork("base-sepolia")client, err := fidemark.New(fidemark.Config{ Network: network, PrivateKey: os.Getenv("PRIVATE_KEY"),})if err != nil { log.Fatal(err) }
res, err := client.AttestHuman(context.Background(), fidemark.AttestHumanInput{ Content: []byte(articleMarkdown), ContentType: "text/article",})if err != nil { log.Fatal(err) }log.Printf("Verify at %s", res.VerifyURL)