New:Socket for Asana Is Now Available.Learn more
Sign In

@payweave/express

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@payweave/express

Express middleware for PayWeave - accept per-request USD micropayments on any Express route.

npmnpm
Version
0.0.10
Version published
Maintainers
1
Created
Source

@payweave/express

Express middleware for PayWeave - accept per-request USD micropayments on any Express route.

Install

npm install @payweave/express

Quick Start

import { Payweave } from '@payweave/express';
import express from 'express';

const app = express();
const payweave = new Payweave(
  process.env.PAYWEAVE_APP_ID!,
  process.env.PAYWEAVE_APP_SECRET!
);

app.get(
  '/api/weather',
  payweave.charge({ price: '0.001', description: 'Weather API' }),
  (req, res) => {
    res.json({ temp: 72, unit: 'F' });
  }
);

app.listen(3000);

API

new Payweave(appId, appSecret, baseUrl?)

ParameterTypeDescription
appIdstringYour app key ID
appSecretstringYour app secret
baseUrlstring?API base URL (defaults to https://api.payweave.app)

payweave.charge(options)

Returns Express middleware (req, res, next) => Promise<void>.

OptionTypeDescription
pricestring | (req) => string | Promise<string>USD price per request
descriptionstring?Human-readable description
metaRecord<string, string>?API metadata for agent discovery

Examples

Static pricing

app.get(
  '/api/search',
  payweave.charge({ price: '0.01' }),
  (req, res) => {
    res.json({ results: [] });
  }
);

Dynamic pricing

app.post(
  '/api/generate',
  payweave.charge({
    price: (req) => req.body.premium ? '0.05' : '0.01',
    description: 'Text generation API',
  }),
  (req, res) => {
    res.json({ text: 'generated content' });
  }
);

With metadata for agent discovery

app.post(
  '/api/sentiment',
  payweave.charge({
    price: '0.005',
    description: 'Sentiment analysis',
    meta: {
      'method': 'POST',
      'input.content-type': 'application/json',
      'input.schema': '{"type":"object","properties":{"text":{"type":"string"}}}',
      'output.schema': '{"type":"object","properties":{"score":{"type":"number"}}}',
    },
  }),
  (req, res) => {
    res.json({ score: 0.85 });
  }
);

Multiple paid routes

app.get('/api/weather', payweave.charge({ price: '0.001' }), weatherHandler);
app.get('/api/forecast', payweave.charge({ price: '0.005' }), forecastHandler);
app.post('/api/analyze', payweave.charge({ price: '0.01' }), analyzeHandler);

How It Works

  • A request hits your route without a payment header
  • The middleware responds with 402 Payment Required and a WWW-Authenticate header containing pricing
  • The agent submits payment on Tempo and retries with Authorization: Payment <credential>
  • PayWeave verifies the payment and sets a Payment-Receipt header
  • Your handler executes normally

License

MIT

FAQs

Package last updated on 13 May 2026

Related posts