Skip to navigation

Quick Start

View as Markdown

Get IDA running locally and perform your first DID and Verifiable Credential operations in under 10 minutes.

Prerequisites

ToolVersionPurpose
Docker24+Container runtime
Docker Composev2+Multi-service orchestration
curlanyAPI requests
jqanyJSON formatting (optional)

1. Start the Platform

Clone the repository and start all services:

git clone https://github.com/infinia/ida.git
cd ida
docker compose up -d

This starts the following services:

ServicePortDescription
ida-api8080IDA Platform API
ida-resolver8081DID Universal Resolver
adi-node-130303ADI blockchain node 1
adi-node-230304ADI blockchain node 2
postgres5432Off-chain index database
redis6379Cache
nats4222Message queue
ipfs5001Decentralized storage

Verify the API is healthy:

curl http://localhost:8080/health | jq
{
"status": "healthy",
"version": "0.1.0",
"blockchain": {
"network": "adi-devnet",
"blockHeight": 42,
"connected": true
},
"services": {
"did": "up",
"vc": "up",
"agent": "up",
"agentIdentity": "up"
}
}

2. Create Your First DID

Generate a new Decentralized Identifier on the ADI blockchain:

curl -X POST http://localhost:8080/api/v1/dids \
-H "Content-Type: application/json" \
-d '{
"method": "adi",
"keyType": "Ed25519",
"serviceEndpoints": [
{
"id": "#messaging",
"type": "DIDCommMessaging",
"serviceEndpoint": "https://example.com/didcomm"
}
]
}' | jq

Response:

{
"did": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
"didDocument": {
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
],
"id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
"authentication": [
{
"id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
"publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
}
],
"service": [
{
"id": "#messaging",
"type": "DIDCommMessaging",
"serviceEndpoint": "https://example.com/didcomm"
}
]
},
"keys": {
"authentication": {
"publicKey": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP",
"privateKey": "** STORE SECURELY - shown only once **"
}
},
"transactionHash": "0x7f3a...e2b1"
}

3. Resolve a DID

Look up any DID to retrieve its DID Document:

curl http://localhost:8080/api/v1/dids/did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c | jq

4. Issue Your First Verifiable Credential

4a. Create a credential schema

curl -X POST http://localhost:8080/api/v1/schemas \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <issuer-api-key>" \
-d '{
"name": "UniversityDegree",
"version": "1.0",
"attributes": [
{ "name": "degree", "type": "string", "required": true },
{ "name": "university", "type": "string", "required": true },
{ "name": "graduationYear", "type": "integer", "required": true },
{ "name": "gpa", "type": "number", "required": false }
]
}' | jq

4b. Issue a credential

curl -X POST http://localhost:8080/api/v1/credentials/issue \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <issuer-api-key>" \
-d '{
"schemaId": "did:adi:schema:university-degree-v1",
"issuerDid": "did:adi:issuer-001",
"holderDid": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
"claims": {
"degree": "Bachelor of Science in Computer Science",
"university": "MIT",
"graduationYear": 2025,
"gpa": 3.8
},
"expirationDate": "2030-12-31T23:59:59Z"
}' | jq

Response:

{
"credential": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://ida.infinia.io/schemas/university-degree/v1"
],
"type": ["VerifiableCredential", "UniversityDegreeCredential"],
"issuer": "did:adi:issuer-001",
"issuanceDate": "2026-03-28T10:00:00Z",
"expirationDate": "2030-12-31T23:59:59Z",
"credentialSubject": {
"id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
"degree": "Bachelor of Science in Computer Science",
"university": "MIT",
"graduationYear": 2025,
"gpa": 3.8
},
"proof": {
"type": "Ed25519Signature2020",
"created": "2026-03-28T10:00:00Z",
"verificationMethod": "did:adi:issuer-001#key-1",
"proofPurpose": "assertionMethod",
"proofValue": "z58DAdFfa9SkqZMVPxAQpic7ndTn4..."
}
},
"credentialId": "urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479"
}

5. Verify a Credential

curl -X POST http://localhost:8080/api/v1/credentials/verify \
-H "Content-Type: application/json" \
-d '{
"credential": { ... }
}' | jq

Response:

{
"verified": true,
"checks": {
"signature": "valid",
"issuerDid": "resolved",
"schema": "compliant",
"expiration": "not_expired",
"revocation": "not_revoked"
}
}

6. Create an AI Agent DID

curl -X POST http://localhost:8080/api/v1/agents \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <operator-api-key>" \
-d '{
"name": "Shopping Assistant",
"operatorDid": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
"model": "gpt-4o",
"capabilities": ["shopping", "price-comparison", "order-placement"],
"autonomyLevel": "Junior"
}' | jq

Response includes the agent’s DID (did:adi:agent:7f3a...e2b1) and published Agent Card.

7. Stop the Platform

docker compose down

Next Steps