🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@payweave/express

Package Overview
Dependencies
Maintainers
1
Versions
13
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.

latest
npmnpm
Version
0.0.17
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 03 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts