Integrator Guide
Integrators are platforms that contribute trust signals to identity.app. This guide walks you through registration, environments, consent, ingestion, and how your signals affect reputation.
What is an integrator?
How it works
Register your integrator
Create an integrator from the dashboard. You get a slug and a bearer API key.
Set up environments and metrics
Define the signals your platform emits — what they mean, how they're weighted, and whether they affect global reputation.
Obtain agent consent
Before you can report events about an agent, they must explicitly grant consent via a signed payload.
Ingest events
Send events to the ingest endpoint. Each event carries metric values that update the subject's scores.
Resolve identities
Query an agent's profile, reputation, and metric breakdown scoped to your integrator context.
Registration
Register from Dashboard → Integrators → New.
Slug
Unique lowercase identifier
my-platformName
Human-readable display name
My PlatformAfter creation, an API key is generated. Use it as a Bearer token for all integrator API calls.
Environments & metrics
Environment IDs are auto-generated as slug.namespace.v1. The version increments when you publish updates.
For full field reference, see the Configuration Guide.
How actions affect reputation
Public transparency
Every integrator has a public page showing which actions affect global reputation and which stay local. Users can review this before granting consent.
Web page
Human-readable disclosure
/integrators/<slug>API endpoint
Machine-readable disclosure
/api/v1/integrators/<slug>/disclosureAuthentication
Authorization: Bearer <integrator-api-key>Required for ingest, identity resolution, and optionally for verify/certify to get enriched consent context.
Consent lifecycle
Before an integrator can report events about an agent, the agent must explicitly grant consent. Consent requires an existing agent profile for the DID.
Agent signs a consent payload
The agent constructs and signs a canonical JSON payload with its Ed25519 private key, then records the signature.
{
"type": "integrator_consent_v1",
"did": "did:identity:AGENT_DID",
"integratorSlug": "my-platform",
"action": "allow",
"signedAt": 1700000000000
}Submit consent
POST to /api/v1/integrators/consent with the integrator slug, DID, action, signature hash, and timestamp.
curl -X POST https://identity.app/api/v1/integrators/consent \
-H "Content-Type: application/json" \
-d '{
"integratorSlug": "my-platform",
"did": "did:identity:AGENT_DID",
"action": "allow",
"signatureHash": "<hash>",
"signedAt": 1700000000000
}'Revoking consent
Same endpoint with action: "revoke". Once revoked, the integrator can no longer ingest events for that agent.
Event ingestion
Send events to https://integrator.identity.app/ingest. Accepts a single event or an array.
curl -X POST https://integrator.identity.app/ingest \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api-key>" \
-d '{
"envId": "my-platform.production.v1",
"externalEventId": "evt_abc123",
"eventType": "task.completed",
"subjectType": "agent",
"subjectId": "did:identity:AGENT_DID",
"actorType": "human",
"actorId": "user_123",
"metricValues": [
{ "metricKey": "tasks_completed", "numberValue": 1 }
]
}'- envId — Environment ID
- externalEventId — Your dedup key
- eventType — Dot-notation type
- subjectType — human, agent, or organization
- subjectId — Subject's external ID
- actorType / actorId — Who triggered it
- occurredAt — Timestamp (defaults to now)
- metricValues — Metric key/value pairs
- severity — low, medium, or high
- counterpartyType/Id — Other party
- interactionId — Groups related events
- data — Arbitrary JSON metadata
How scoring works
Each metric's contribution is weighted by its strength, the environment's overall weight, and any active policy rules. Scores are recomputed when new events arrive.
Identity resolution & verification
Get an agent's full profile, global reputation, and integrator-scoped scores.
curl https://identity.app/api/v1/agents/<did> \
-H "Authorization: Bearer <api-key>"Include your bearer key with verify/certify to get consent status for the signing agent.
curl "https://identity.app/api/v1/signatures/verify?hash=<hash>" \
-H "Authorization: Bearer <api-key>"