axvelo-sdk
v0.1.1
Published
Axvelo SDK — drop-in Express middleware for API monitoring
Downloads
288
Maintainers
Readme
axvelo-sdk
Official SDK for Axvelo — real-time API monitoring and analytics.
Drop two lines into your Node.js app and get instant visibility into request volume, latency, and error rates.
Installation
npm install axvelo-sdkQuick Start
Get your API key from the Axvelo dashboard, then add the middleware to your app.
Express
import express from 'express'
import { axvelo } from 'axvelo-sdk'
const app = express()
app.use(axvelo({ apiKey: 'your-api-key' }))
// your routes
app.get('/users', (req, res) => res.json({ users: [] }))
app.listen(3000)Fastify
import Fastify from 'fastify'
import { trackRequest } from 'axvelo-sdk'
const app = Fastify()
app.addHook('onResponse', async (request, reply) => {
await trackRequest({
apiKey: 'your-api-key',
endpoint: request.routerPath ?? request.url,
method: request.method,
statusCode: reply.statusCode,
latencyMs: Math.round(reply.elapsedTime),
})
})Hono
import { Hono } from 'hono'
import { trackRequest } from 'axvelo-sdk'
const app = new Hono()
app.use('*', async (c, next) => {
const start = Date.now()
await next()
trackRequest({
apiKey: 'your-api-key',
endpoint: c.req.path,
method: c.req.method,
statusCode: c.res.status,
latencyMs: Date.now() - start,
})
})Manual tracking (any framework)
import { trackRequest } from 'axvelo-sdk'
await trackRequest({
apiKey: 'your-api-key',
endpoint: '/payments',
method: 'POST',
statusCode: 200,
latencyMs: 142,
metadata: { userId: 'u_123' }, // optional
})High-throughput apps (batch mode)
For high-traffic APIs, use the batch tracker to avoid per-request HTTP overhead. Events are buffered and flushed every 5 seconds.
import { createBatchTracker } from 'axvelo-sdk'
const tracker = createBatchTracker({
apiKey: 'your-api-key',
flushIntervalMs: 5000, // default
maxBatchSize: 100, // default
})
// Track events anywhere in your app
tracker.track({
endpoint: '/orders',
method: 'POST',
statusCode: 201,
latencyMs: 88,
})
// Flush remaining events on shutdown
process.on('SIGTERM', async () => {
await tracker.stop()
process.exit(0)
})API Reference
axvelo(options)
Express/Connect middleware. Automatically tracks every request.
| Option | Type | Required | Description |
|--------|------|----------|-------------|
| apiKey | string | Yes | Your Axvelo API key |
| endpoint | string | No | Override the ingest URL (default: https://axvelo.io) |
trackRequest(options)
Manually track a single request. Works with any framework.
| Option | Type | Required | Description |
|--------|------|----------|-------------|
| apiKey | string | Yes | Your Axvelo API key |
| endpoint | string | Yes | Route path e.g. /users/:id |
| method | string | Yes | HTTP method e.g. GET |
| statusCode | number | Yes | HTTP status code |
| latencyMs | number | Yes | Request duration in milliseconds |
| metadata | object | No | Any extra key/value data |
| ingestEndpoint | string | No | Override the ingest URL |
createBatchTracker(options)
Returns a batch tracker that buffers events and flushes them periodically.
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| apiKey | string | — | Your Axvelo API key |
| flushIntervalMs | number | 5000 | How often to flush in ms |
| maxBatchSize | number | 100 | Flush immediately when queue hits this size |
| ingestEndpoint | string | https://axvelo.io | Override the ingest URL |
Returns { track, flush, stop }.
License
MIT
