API Reference

Authentication

The ReqPour API is available at https://api.reqpour.com. All requests require authentication using a Bearer token in the Authorization header:

bash
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.reqpour.com/endpoints

Get your API token from the ReqPour dashboard under Account Settings. The same token used by the CLI works with the API.

All responses are JSON. Error responses include a message field with a human-readable description:

json
{
  "error": "not_found",
  "message": "Endpoint not found"
}

Endpoints

List all endpoints:

bash
GET /endpoints

Returns an array of endpoint objects with id, name, url, createdAt, and requestCount.

Create an endpoint:

bash
POST /endpoints
Content-Type: application/json

{"name": "my-stripe-endpoint"} ```

Returns the created endpoint object including the generated url.

Delete an endpoint:

bash
DELETE /endpoints/:id

Returns 204 No Content on success. Deleting an endpoint also deletes all captured requests for that endpoint.

Requests

List captured requests for an endpoint:

bash
GET /endpoints/:id/requests?limit=50&offset=0

Returns an array of request objects with id, method, path, headers, body, receivedAt, and responseStatus.

Query parameters: - limit: Number of requests to return (default: 50, max: 100) - offset: Pagination offset (default: 0) - search: Full-text search across headers and body

Get a single request:

bash
GET /endpoints/:id/requests/:requestId

Returns the full request object with complete headers and body.

Replay

Replay a captured request:

bash
POST /endpoints/:id/requests/:requestId/replay

This re-sends the captured request to the endpoint, exactly as it was originally received. If a relay is active, the replayed request will be forwarded to your local server.

The response includes the replay status:

json
{
  "status": "replayed",
  "newRequestId": "req_abc123",
  "relayedTo": "http://localhost:3000/api/webhooks",
  "responseStatus": 200,
  "latency": 42
}

You can also replay with modifications:

bash
POST /endpoints/:id/requests/:requestId/replay
Content-Type: application/json

{ "headerOverrides": {"X-Custom-Header": "test"}, "bodyOverrides": {"type": "different.event"} } ```

This is useful for testing how your handler responds to different event types using a captured payload as a starting point.

Webhooks and Rate Limits

The API has rate limits to prevent abuse. Free tier: 60 requests per minute. Pro tier: 300 requests per minute. Rate limit headers are included in every response:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 297
X-RateLimit-Reset: 1709855100

If you exceed the rate limit, the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait.

The API follows standard HTTP semantics: 200 for success, 201 for creation, 204 for deletion, 400 for bad requests, 401 for authentication errors, 404 for not found, and 429 for rate limiting. All error responses include a message field.

Get started with ReqPour

Catch, inspect, and relay webhooks to localhost. Free to start, $3/mo for Pro.