Request
curl -X GET "/v1/moments"
Response
Run the request to inspect the response.
Request
curl -X POST "/v1/moments" -H "Content-Type: application/json" -d '{
"url": "https://example.com"
}'Response
Run the request to inspect the response.
Request
curl -X GET "/v1/moments/{id}"Response
Run the request to inspect the response.
Request
curl -X PATCH "/v1/moments/{id}" -H "Content-Type: application/json" -d '{
"url": "https://example.com"
}'Response
Run the request to inspect the response.
Request
curl -X DELETE "/v1/moments/{id}"Response
Run the request to inspect the response.
Request
curl -X POST "/v1/moments/{id}/recapture" -H "Content-Type: application/json" -d '{
"url": "https://example.com"
}'Response
Run the request to inspect the response.
Request
curl -X PATCH "/v1/moments/bulk" -H "Content-Type: application/json" -d '{
"url": "https://example.com"
}'Response
Run the request to inspect the response.
Request
curl -X DELETE "/v1/moments/bulk"
Response
Run the request to inspect the response.
Request
curl -X GET "/v1/moments/count"
Response
Run the request to inspect the response.
A Moment is an immutable historical capture generated from a Page.
The Moments API lets you materialize pages, trigger captures, list
history, and re-capture a URL on demand.
Endpoints
| Method | Path | Scope | Description |
|---|---|---|---|
GET | /v1/moments | moments.read | List moments (paginated). |
POST | /v1/moments | moments.write | Create a moment (and a Page if new). |
GET | /v1/moments/{id} | moments.read | Retrieve a single moment. |
PATCH | /v1/moments/{id} | moments.write | Update an underlying MomentConfig. |
DELETE | /v1/moments/{id} | moments.write | Archive the underlying Page. |
POST | /v1/moments/{id}/recapture | moments.write | Enqueue a fresh capture. |
PATCH | /v1/moments/bulk | moments.write | Update many moments. |
DELETE | /v1/moments/bulk | moments.write | Archive many moments. |
GET | /v1/moments/count | moments.read | Count, optionally grouped. |
Create a moment
| 1 | curl -X POST https://api.webmoment.app/v1/moments \ |
| 2 | -H "Authorization: Bearer $WEBMOMENT_TOKEN" \ |
| 3 | -H "Content-Type: application/json" \ |
| 4 | -d '{ |
| 5 | "url": "https://ac.me", |
| 6 | "viewport": "desktop", |
| 7 | "scheduleEnabled": true, |
| 8 | "scheduleFrequency": "daily" |
| 9 | }' |
| 10 | |
The response is returned immediately with a Moment in INITIAL state. Its
Location header points to GET /v1/moments/{id}. Poll that resource or use
webhooks until the Capture reaches COMPLETE, PARTIAL, or FAILED.
viewport accepts desktop, desktophd, tablet, mobile, custom,
responsive, and fullresponsive. Responsive preserves Desktop and Mobile;
Full Responsive preserves Desktop, Tablet and Mobile in the same Moment.
Use previewUrl for the normalized Timeline preview and screenshots.desktop,
screenshots.tablet, screenshots.mobile, or screenshots.custom for primary
Screenshots. Each value is null until that artifact is preserved.
Wait for primary Screenshots
Captures return immediately by default. To wait for the primary Screenshot phase, send the standard HTTP preference below. WebMoment waits at most 60 seconds and never waits for Replay.
| 1 | curl -X POST https://api.webmoment.app/v1/moments \ |
| 2 | -H "Authorization: Bearer $WEBMOMENT_TOKEN" \ |
| 3 | -H "Content-Type: application/json" \ |
| 4 | -H "Prefer: wait=15" \ |
| 5 | -d '{"url":"https://ac.me","viewport":"responsive"}' |
| 6 | |
The response is 200 when the Worker has reported the Screenshot phase,
including PARTIAL when only some artifacts were preserved. If the wait window
expires first, the response is 202 with Location and Retry-After.
Use webhooks for Replay completion.
Spec
The full request and response shapes are in the OpenAPI spec:
/api/v1/openapi — see the
Moments tag and the createMomentBodySchema / updateMomentBodySchema
components.

