Overview
The HIP API provides programmatic access to the Human Integrity Protocol's proof registry. Content that has been attested through HIP can be verified by anyone — no account or API key required for read-only verification.
How it works
When a creator attests content through HIPKit, the app computes a SHA-256 hash of the file locally, then registers that hash with the HIP registry along with a classification, timestamp, and cryptographic signature. The verify endpoint lets anyone check whether a given content hash has been attested.
Authentication
The POST /api/attest endpoint requires API key authentication via the X-API-Key header. API keys are bound to a HIP credential and inherit its tier-based rate limits.
Verify Attestation
Check whether a piece of content has been attested through HIP. Provide the SHA-256 hash of the file and get back a verification result with attestation details.
Returns whether the content hash has been attested and, if so, the attestation record including classification, credential tier, timestamp, and proof link.
| Parameter | Type | Description |
|---|---|---|
content_hash |
string | 64-character lowercase hexadecimal SHA-256 hash of the file content Required |
Response Fields
| Field | Type | Description |
|---|---|---|
verified | boolean | Whether the content hash has a registered attestation |
record.content_hash | string | The SHA-256 hash that was queried |
record.classification | string | HIP classification: CompleteHumanOrigin, HumanOriginAssisted, or HumanDirectedCollaborative |
record.credential_tier | integer | Credential tier of the attester (1, 2, or 3) |
record.attested_at | string | ISO 8601 UTC timestamp of when the creator attested the content |
record.registered_at | string | ISO 8601 UTC timestamp of when the proof was registered in the HIP registry |
record.short_id | string | 8-character short ID for the proof link |
record.proof_url | string | Full URL to the proof card on hipprotocol.org |
record.short_url | string | Short URL for sharing (hipprotocol.org/p/{short_id}) |
record.sealed | boolean | Whether the proof details have been sealed by the creator |
Classifications
| Value | Meaning |
|---|---|
CompleteHumanOrigin | Entirely created by a human with no AI assistance |
HumanOriginAssisted | Human-created with AI-assisted editing or enhancement |
HumanDirectedCollaborative | Human-directed work with significant AI collaboration |
Error Responses
| Status | Condition | Body |
|---|---|---|
| 400 | Invalid hash format | { "verified": false, "error": "Invalid content hash..." } |
verified: false response uses HTTP 200, not 404. The request succeeded — the content simply has not been attested. Reserve error codes for actual errors (malformed hashes, server issues).
Submit Attestation
Register a new attestation through the API. Requires API key authentication. The content hash is computed locally — your files never leave your hands.
Submit a content hash with classification and cryptographic signature to register an attestation. Returns the registered proof record with permalink.
| Header | Required | Description |
|---|---|---|
X-API-Key | Required | Your API key |
Content-Type | Required | application/json |
| Field | Type | Description |
|---|---|---|
content_hash | string | 64-character lowercase hex SHA-256 hash. Required |
classification | string | HIP classification value. Required |
signature | string | Ed25519 signature from your credential. Required |
attested_at | string | ISO 8601 UTC timestamp. Optional, defaults to current time |
sealed | boolean | Seal proof details from public view. Optional, defaults to false |
public_key | string | 64-char hex Ed25519 public key. Optional |
| Status | Condition | Body (summarized) |
|---|---|---|
| 400 | Missing/invalid fields | { "error": "..." } |
| 401 | Missing X-API-Key | { "error": "Missing X-API-Key header..." } |
| 403 | Invalid/deactivated key | { "error": "Invalid API key" } |
| 409 | Hash already attested | { "error": "conflict", "message": "...", "existing_record": {...} } |
| 429 | Rate limit exceeded | { "error": "Rate limit exceeded...", "limit": N, "current": N } |
Integration Examples
Quick examples in common languages. All examples compute the SHA-256 hash of a local file and check it against the HIP registry.
Rate Limits
The verification endpoint is designed for high availability. Standard rate limits apply to prevent abuse.
| Endpoint | Limit | Window |
|---|---|---|
GET /api/verify/{hash} | 1,000 requests | Per IP, per hour |
POST /api/attest | Tier-based | Per credential, per 24h |
Attestation Rate Limits by Tier
| Tier | Attestations per 24h |
|---|---|
| Tier 1 | 50 |
| Tier 2 | 25 |
| Tier 3 | 10 |
API Roadmap
Verification and authenticated attestation endpoints are live. Portfolio query is in development.
Public read-only verification. Check if any content hash has been attested through HIP.
Submit attestations programmatically via API key. Register content hashes with classification, timestamp, and cryptographic signature. Requires authenticated credential.
Query all attestations for a given credential. Supports pagination and filtering by classification. Requires API key authentication.