Skip to content

verify

const att = await fidemark.verify(uid);

Returns the decoded on-chain record. Verification is a read-only RPC call: no signer required.

{
uid: string; // attestation UID
type: 'human' | 'ai' | 'multi' | 'pop';
schemaUID: string; // EAS schema UID
attester: string; // address that signed the attestation
recipient: string; // EAS recipient field (always 0x00...00 in Fidemark)
contentHash: string; // SHA-256 of the attested content
createdAt: number; // Unix seconds: when the attestation was recorded on-chain
revoked: boolean; // true if the attester revoked it
revokedAt?: number; // Unix seconds, when revoked
refUID: string;
verifyUrl: string; // public verification URL
human?: {
contentType: string;
creator: string;
proofMethod: string;
createdAtAttested: number;
};
ai?: {
modelId: string;
provider: string;
promptHash: string; // 0x000…000 if no prompt
parameters: string;
};
multi?: { contentType, attesters[], signatures[], proofMethod, createdAtAttested };
pop?: { contentType, creator, proofMethod, createdAtAttested, root, nullifierHash, proof[] };
}

The Python SDK exposes the same fields as a FidemarkAttestation dataclass; the Go SDK as a *Attestation struct.

CodeCause
ATTESTATION_NOT_FOUNDNo attestation exists for this UID on the configured network.
VALIDATION_REJECTEDThe attestation exists but uses a schema not registered with this Fidemark instance: usually a wrong-network mistake.
RPC_ERRORThe RPC endpoint is unreachable or returned an error.
import { Fidemark } from "@fidemark/sdk";
import { JsonRpcProvider } from "ethers";
const fidemark = new Fidemark({
network: "base-sepolia",
provider: new JsonRpcProvider("https://sepolia.base.org"),
});
const att = await fidemark.verify(uid); // works, no signer needed