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
1{
2 "status": "healthy",
3 "version": "0.1.0",
4 "blockchain": {
5 "network": "adi-devnet",
6 "blockHeight": 42,
7 "connected": true
8 },
9 "services": {
10 "did": "up",
11 "vc": "up",
12 "agent": "up",
13 "agentIdentity": "up"
14 }
15}

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:

1{
2 "did": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
3 "didDocument": {
4 "@context": [
5 "https://www.w3.org/ns/did/v1",
6 "https://w3id.org/security/suites/ed25519-2020/v1"
7 ],
8 "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
9 "authentication": [
10 {
11 "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c#key-1",
12 "type": "Ed25519VerificationKey2020",
13 "controller": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
14 "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
15 }
16 ],
17 "service": [
18 {
19 "id": "#messaging",
20 "type": "DIDCommMessaging",
21 "serviceEndpoint": "https://example.com/didcomm"
22 }
23 ]
24 },
25 "keys": {
26 "authentication": {
27 "publicKey": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP",
28 "privateKey": "** STORE SECURELY - shown only once **"
29 }
30 },
31 "transactionHash": "0x7f3a...e2b1"
32}

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:

1{
2 "credential": {
3 "@context": [
4 "https://www.w3.org/2018/credentials/v1",
5 "https://ida.infinia.io/schemas/university-degree/v1"
6 ],
7 "type": ["VerifiableCredential", "UniversityDegreeCredential"],
8 "issuer": "did:adi:issuer-001",
9 "issuanceDate": "2026-03-28T10:00:00Z",
10 "expirationDate": "2030-12-31T23:59:59Z",
11 "credentialSubject": {
12 "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
13 "degree": "Bachelor of Science in Computer Science",
14 "university": "MIT",
15 "graduationYear": 2025,
16 "gpa": 3.8
17 },
18 "proof": {
19 "type": "Ed25519Signature2020",
20 "created": "2026-03-28T10:00:00Z",
21 "verificationMethod": "did:adi:issuer-001#key-1",
22 "proofPurpose": "assertionMethod",
23 "proofValue": "z58DAdFfa9SkqZMVPxAQpic7ndTn4..."
24 }
25 },
26 "credentialId": "urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479"
27}

5. Verify a Credential

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

Response:

1{
2 "verified": true,
3 "checks": {
4 "signature": "valid",
5 "issuerDid": "resolved",
6 "schema": "compliant",
7 "expiration": "not_expired",
8 "revocation": "not_revoked"
9 }
10}

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