midnight-api

SKILL.md

Midnight API Integration

Complete guide to integrating Midnight Network APIs for building privacy-preserving decentralized applications.

API Ecosystem Overview

Midnight provides multiple specialized APIs:

  • Compact Runtime API: Execute Compact contracts, generate ZK proofs
  • DApp Connector API: Connect applications to wallets
  • ZSwap API: Private token transactions
  • Wallet API: Wallet operations and key management
  • Ledger API: Blockchain transactions and state
  • Midnight.js: Complete TypeScript SDK

Quick Start

Install Dependencies

npm install @midnight-ntwrk/midnight-js
npm install @midnight-ntwrk/dapp-connector-api
npm install @midnight-ntwrk/compact-runtime

Initialize DApp Project

python scripts/init-dapp-project.py my-dapp

Generate API Client

python scripts/generate-api-client.py wallet-connector

API References

Authentication Patterns

See authentication-patterns.md for:

  • Wallet-based auth: Sign in with Midnight wallet
  • Challenge-response: Prove wallet ownership
  • Session management: Store and restore auth state
  • Protected routes: Secure pages and API calls
  • Multi-wallet support: Handle multiple wallets
  • Account switching: Detect and handle account changes
  • Role-based access: On-chain roles and permissions
  • Complete flow: Production-ready authentication

Network Configuration

See network-configuration.md for:

  • setNetworkId() requirement (CRITICAL)
  • Available networks (mainnet, preprod, testnet-02)
  • Network-specific endpoints
  • User configuration respect (privacy requirement)
  • Common errors and solutions
  • Environment-based configuration

Address Formats

See address-formats.md for:

  • Bech32m encoding (v4.0.0+ standard)
  • Address structure and validation
  • Shielded, unshielded, and DUST addresses
  • TypeScript validation examples
  • Migration from pre-v4.0.0 formats
  • Security considerations

Compact Runtime API

See compact-runtime-api.md for:

  • Network configuration: setNetworkId() requirement
  • Core interfaces: CircuitContext, CircuitResults, WitnessContext
  • Built-in functions: Hashing (transient/persistent), commitments
  • Elliptic curve operations: ecAdd, ecMul, hashToCurve
  • State management: ContractState, StateValue, QueryContext
  • Runtime type system: CompactType constructors for all types
  • Integration patterns: Using with generated code
  • Best practices: Network setup, hash types, nonce management

DApp Connector API

See dapp-connector-api.md for:

  • Complete ConnectedAPI specification: All methods with signatures
  • InitialAPI structure: Window injection, version checking
  • Configuration methods: getConfiguration() for user privacy
  • State queries: Balances, addresses (all Bech32m format)
  • Transaction operations: makeTransfer, makeIntent, balance, submit
  • Proof delegation: getProvingProvider() for ZK proofs
  • 4 complete examples: Connect, payment, swap, proof delegation
  • Error handling: APIError class, ErrorCodes enum
  • Best practices: Version checks, privacy respect, validation

ZSwap API

See zswap-api.md for:

  • Transaction structure: Guaranteed/fallible phases, offers
  • Coin management: CoinInfo, QualifiedCoinInfo, TokenType
  • Input/output creation: User-owned and contract-owned
  • State management: ZswapChainState, ZswapLocalState
  • Transaction building: Simple transfer, multi-token, contract calls
  • Transient coins: Temporary coins for contract logic
  • Proving and submission: Proof generation, transaction submission
  • Privacy features: Hidden amounts, owners, unlinkability
  • Best practices: Balancing offers, unique nonces, fee handling

Wallet API

See wallet-api.md for:

  • Wallet creation: Generate, from seed phrase, from private key
  • Address management: Shielded/unshielded, derivation
  • Key management: Spending, viewing, public keys
  • State synchronization: Manual sync, auto-sync, status
  • Balance queries: All tokens, specific tokens, shielded/unshielded
  • Transaction history: Get transactions, details, filtering
  • Transaction signing: Single, batch, message signing
  • Coin management: Get coins, selection strategies
  • Shielding/unshielding: Public ↔ private operations
  • Security best practices: Seed storage, validation, error handling

Ledger API

See ledger-api.md for:

  • Token types: Native token, custom tokens, token info
  • Transaction submission: Single, batch, with options
  • Transaction queries: Get transaction, receipt, wait for confirmation
  • Block queries: Get block, latest block, block range
  • State queries: Account state, contract state, storage
  • Balance queries: Single token, all tokens
  • Event queries: Get events, filtering by topics
  • Gas estimation: Estimate gas, get gas price
  • Network info: Chain ID, version, peers, sync status
  • Best practices: Error handling, caching, gas monitoring

Integration Patterns

See integration-patterns.md for:

  • Error handling: APIError structure, comprehensive handlers
  • Retry logic: Basic retry, network-specific, with timeout
  • State synchronization: Polling, wallet sync, event-based
  • Wallet connection: Multi-wallet support, connection state
  • Transaction patterns: Safe submission, batch processing
  • Caching patterns: Simple cache, LRU cache
  • Best practices: Validation, user rejections, error messages
  • Production example: Complete DApp implementation

Error Codes

See error-codes.md for:

  • Complete error catalog: All API error codes
  • Error categories: Wallet, transaction, network, proof, contract
  • Error details: Cause, solution, code examples
  • Handling patterns: Basic, comprehensive, retry patterns
  • Error classification: Critical, retryable, user-fixable
  • Best practices: Error checking, logging, user messages

Contract Deployment

See contract-deployment.md for:

  • Local deployment: Start infrastructure, compile, deploy
  • Testnet deployment: Configure environment, get test tokens, deploy
  • Mainnet deployment: Pre-deployment checklist, production deployment
  • Deployment scripts: Automated bash and TypeScript scripts
  • Network configuration: Local, testnet, mainnet endpoints
  • Frontend integration: Update environment, connect to contract
  • Troubleshooting: Common deployment issues and solutions
  • Best practices: Environment variables, testing, verification

Testing Guide

See testing-guide.md for:

  • Contract testing: Unit tests, property-based tests, ZK circuit tests
  • DApp testing: Frontend component tests, E2E tests, API mocking
  • Infrastructure testing: Node health checks, validator tests, indexer tests
  • Performance testing: Load testing, benchmarks
  • Security testing: Vulnerability scanning, penetration testing
  • Test coverage: Measurement, thresholds, CI/CD integration
  • Best practices: Test pyramid, isolation, descriptive names

Complete Examples

See api-examples.md for:

  • Wallet connection
  • Token transfers
  • Private swaps
  • Proof generation and delegation
  • Contract deployment
  • Blockchain queries
  • Multi-token transfers
  • Event listening
  • Batch operations
  • Error handling

Development Scripts

Initialize DApp Project

python scripts/init-dapp-project.py <project-name>

Creates a new DApp project with:

  • Midnight.js dependencies
  • Wallet connector setup
  • Example components
  • Build configuration

Generate API Client

python scripts/generate-api-client.py <client-type>

Generates boilerplate for:

  • Wallet connection
  • Transaction handling
  • Proof generation
  • State management

Deploy Contract

python scripts/deploy-contract.py <contract-file> <network>

Deploys Compact contracts to Midnight network.

Query Blockchain

python scripts/query-blockchain.py <query-type> [params]

Queries blockchain data via indexer.

Test Wallet Connection

python scripts/test-wallet-connection.py

Tests wallet connectivity and configuration.

Application Templates

Ready-to-use templates in assets/templates/:

  • web-dapp/: Complete web application with wallet integration
  • api-examples/: Standalone API usage examples
  • wallet-integration/: Wallet connection patterns

Resources

Weekly Installs
3
GitHub Stars
1
First Seen
Feb 22, 2026
Installed on
opencode3
gemini-cli3
github-copilot3
codex3
amp3
kimi-cli3