[ ARKIV DOCS ]
Everything you need to build with Arkiv. From quick start guides to comprehensive API documentation.
Last updated: October 2025 ยท SDK v0.1.19
Documentation
Arkiv Documentation
Introduction to Arkiv and its architecture
What is Arkiv?
Arkiv is a decentralized data layer that brings queryable, time-scoped storage to Ethereum. It enables developers to store, query, and manage data with built-in expiration and annotation systems.
Why Arkiv?
Arkiv treats data as a first-class citizen on Ethereum:
Instant Queries โ SQL-like queries with annotations, real-time data retrieval, no external indexing required.
Cost-Efficient โ Pay only for storage duration (Expires In), automatic data pruning, no permanent storage fees.
Ethereum-Native โ Built on Ethereum infrastructure, fully transparent and verifiable, compatible with existing Web3 tools.
Developer-Friendly โ Simple CRUD operations, TypeScript SDK with full type safety, real-time event streaming.
Architecture
Arkiv uses a three-layer architecture:
Layer 1: Ethereum Mainnet Final settlement and security. Proof verification, commitments, and ultimate source of truth.
Layer 2: Arkiv Coordination Layer Data management and registry. DB-chain coordination, cross-chain synchronization, deterministic query resolution.
Layer 3: Specialized DB-Chains High-performance data operations. CRUD via JSON-RPC, indexed queries with annotations, programmable expiration (Expires In).
Use Cases
Temporary Data Storage โ Session data with automatic expiration, cross-device clipboards, cached API responses.
Event & Analytics โ Application logs with cleanup, user activity tracking, temporary metrics.
File & Media โ Image metadata with expiration, document versioning, chunked file storage.
Real-Time Apps โ Live chat, collaborative tools, IoT data streams.
Core Concepts
Entities โ Data records containing content, annotations, and expiration time.
Annotations โ Key-value pairs for querying:
typescriptExample1type = "note" // String annotation 2priority = 5 // Numeric annotation
Expires In โ Automatic expiration (in seconds):
typescriptExample1expiresIn: 1800 // 30 minutes 2expiresIn: 86400 // 24 hours 3expiresIn: 604800 // 7 days
Query Language โ SQL-like syntax:
sqlExample1type = "note" && priority > 3 && created > 1672531200
Testnet Access
typescriptExample1Chain ID: 60138453025 2RPC URL: https://kaolin.hoodi.arkiv.network/rpc 3WebSocket: wss://kaolin.hoodi.arkiv.network/rpc/ws
Faucet: Get Test ETH Explorer: View Transactions
Quick example:
typescriptExample1import { createClient, createROClient, Annotation } from 'arkiv-sdk' 2 3// Full client (read/write) - requires private key 4const client = await createClient( 5 60138453025, 6 "YOUR_PRIVATE_KEY", 7 "https://kaolin.hoodi.arkiv.network/rpc", 8 "wss://kaolin.hoodi.arkiv.network/rpc/ws" 9) 10 11const receipt = await client.createEntities([{ 12 data: new TextEncoder().encode("Hello Arkiv!"), 13 expiresIn: 1800, 14 stringAnnotations: [new Annotation("type", "greeting")], 15 numericAnnotations: [] 16}]) 17 18console.log("Stored:", receipt[0].entityKey) 19 20// Read-only client (queries only) - no private key needed 21const roClient = await createROClient( 22 60138453025, 23 "https://kaolin.hoodi.arkiv.network/rpc", 24 "wss://kaolin.hoodi.arkiv.network/rpc/ws" 25) 26 27const data = await roClient.queryEntities('type = "greeting"')
Next Steps
- Getting Started โ Set up your dev environment
 - SDK Reference โ TypeScript and Python SDKs
 - API Docs โ JSON-RPC interface
 - Guides โ Build real applications
 
Resources: Playground โ Interactive examples Discord โ Community support