Endpoints

Await a request

Long-poll: blocks until a request matching the filters arrives, then returns it (200). If nothing matching arrives within timeoutSeconds, returns 204 No Content — retry or fail your check.

By default only requests arriving after this call starts match. That leaves a race if the webhook can fire before your await begins: close it by reading the newest stored id first and passing it as afterId (or pass afterId=0 to accept anything already stored).

Typical CI shape:

  1. Create an ephemeral endpoint (ttlSeconds).
  2. Point the system under test at its capture url.
  3. Trigger the action.
  4. GET …/requests/await?q=order.created&timeoutSeconds=60 and assert on the body.
GET
/api/v1/endpoints/{endpointId}/requests/await
AuthorizationBearer <token>

API key in the Authorization header: Authorization: Bearer wv_live_…. Keys are created on the API keys page in the app, shown once, and scoped to your workspace. X-Api-Key: wv_live_… is accepted as a fallback for tools that can't set Authorization.

In: header

Path Parameters

endpointId*string

The endpoint id (also the capture token in its URL).

Formatuuid

Query Parameters

method?string

Exact HTTP method, case-insensitive (e.g. POST).

state?string

Delivery state filter.

Value in"NotAttempted" | "Pending" | "Succeeded" | "Failed" | "Errored" | "DeadLetter"
q?string

Case-insensitive substring. Matches path and query string on every plan; also matches non-binary bodies on plans with full payload search.

since?string

Match requests received at or after this instant instead of only future ones.

Formatdate-time
afterId?integer

Match requests with an id greater than this instead of only future ones. Pass the newest id you've already seen, or 0 to accept anything stored.

Formatint64
timeoutSeconds?integer

How long to block. 1–80; default 30.

Default30
Range1 <= value <= 80

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

{
  "id": 0,
  "endpointId": "c8d2c7e1-e4b1-4108-9e29-3429a36a1ef3",
  "receivedAt": "2019-08-24T14:15:22Z",
  "method": "string",
  "path": "string",
  "queryString": "string",
  "headers": {
    "property1": "string",
    "property2": "string"
  },
  "body": "string",
  "bodyIsBinary": true,
  "bodyTruncated": true,
  "contentType": "string",
  "sourceIp": "string",
  "contentLength": 0,
  "delivery": {
    "state": "NotAttempted",
    "statusCode": 0,
    "error": "string",
    "url": "string",
    "at": "2019-08-24T14:15:22Z",
    "durationMs": 0
  }
}
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "code": "string",
  "traceId": "string"
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "code": "string",
  "traceId": "string"
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "code": "string",
  "traceId": "string"
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "code": "string",
  "traceId": "string"
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "code": "string",
  "traceId": "string"
}

On this page