Skip to main content

API Overview

The Blockia Pay API provides RESTful endpoints for:

  • Managing payment links (create, list, pay, refund)
  • Sending and receiving payments (on-chain, off-chain)
  • Accessing wallet and transaction data
  • Exporting transaction history for accounting

The API is designed for developers building payment integrations, dashboards, and automated payment systems for freelancers, merchants, and platforms.

Base URL

https://api.blockia.pay/v1

Authentication

All API requests require authentication using WebAuthn passkeys or Google OAuth. See Authentication for full details.

WebAuthn Passkey Authentication

Blockia Pay uses WebAuthn passkeys for secure, passwordless authentication.

Authentication Flow

  1. Generate Challenge: Request authentication options
  2. User Authentication: User authenticates with passkey (biometric/fingerprint)
  3. Verify Response: Server verifies the authentication response
  4. Session Token: Server issues JWT session token via httpOnly cookie

Example Flow

// 1. Get authentication options
const optionsResponse = await fetch('/v1/auth/options', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@example.com' }),
});

const options = await optionsResponse.json();

// 2. Authenticate with passkey
const credential = await navigator.credentials.get({
publicKey: options.challenge,
});

// 3. Verify authentication
const verifyResponse = await fetch('/v1/auth/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
challengeId: options.challengeId,
email: 'user@example.com',
authenticationResponse: credential,
}),
});

Google OAuth Authentication

Alternative authentication using Google OAuth 2.0.

OAuth Flow

// Redirect to Google OAuth
window.location.href = '/v1/auth/google/authorize';

// Handle callback (automatic redirect)

Session Management

  • Session Tokens: JWT tokens stored in httpOnly cookies
  • Expiration: 1 hour for authentication, 24 hours for wallet sessions
  • Automatic Renewal: Sessions are renewed on activity

Transactions API

Blockia Pay tracks all user transactions (on-chain and off-chain) and provides endpoints to list and export them. See Transactions API for full details.

List Transactions

  • GET /v1/transactions — List and filter your transactions (send, receive, payment link, etc.)

Export Transactions

  • POST /v1/transactions/export — Export your transactions as CSV, JSON, or PDF-like text for accounting or reporting.

See the Transactions API documentation for request/response examples and business rules.


Request/Response Format

Content Type

All requests and responses use JSON format:

Content-Type: application/json

Response Structure

Success Response

{
"data": { ... },
"meta": {
"requestId": "req_123456",
"timestamp": "2024-01-01T12:00:00Z"
}
}

Error Response

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": {
"field": "amount",
"issue": "must be positive number"
}
},
"meta": {
"requestId": "req_123456",
"timestamp": "2024-01-01T12:00:00Z"
}
}

Rate Limiting

API requests are rate limited to prevent abuse:

  • Authentication endpoints: 10 requests per minute
  • Payment operations: 50 requests per hour
  • General API calls: 1000 requests per hour

Rate limit headers are included in responses:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200

Pagination

List endpoints (including transactions and payment links) support cursor-based or offset pagination:

Example:

GET /v1/transactions?limit=50&offset=0

or

GET /v1/payment-links?limit=50&cursor=eyJpZCI6IjEyMyJ9

Response:

{
"data": [...],
"pagination": {
"hasNextPage": true,
"nextCursor": "eyJpZCI6IjQ1NiJ9",
"limit": 50
}
}

Error Codes

CodeDescriptionHTTP Status
VALIDATION_ERRORInvalid request parameters400
UNAUTHORIZEDAuthentication required401
FORBIDDENInsufficient permissions403
NOT_FOUNDResource not found404
CONFLICTResource conflict409
RATE_LIMITEDToo many requests429
INTERNAL_ERRORServer error500

SDK Support

While you can use the API directly, we recommend using our official SDKs:

TypeScript/JavaScript:

npm install @blockia-pay/blockia-agent-sdk

Environments

Production

  • URL: https://api.blockia.pay/v1
  • Rate Limits: Standard limits apply
  • Data: Real transactions and data

Development

  • URL: http://localhost:3000/v1 (when running locally)
  • Rate Limits: No limits
  • Data: Local test data

API Versions

The API uses versioning in the URL path:

  • v1 (Current): Initial release with core payment functionality
  • Future versions: Will be released with breaking changes

Version headers are included in responses:

X-API-Version: v1

Testing

Test Mode

Enable test mode for development:

curl -H "X-Test-Mode: true" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://api.blockia.pay/v1/payment-links

Test Data

Use these test values for development:

{
"testWallet": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"testAmount": "10.00"
}