# Get webhook delivery

Get one webhook delivery, including payload.

Returns the delivery row and the JSON payload that was or will be posted to the destination.

This route is console / Firebase only for now. Tenant API keys are not accepted.

## See also

- [Webhooks](https://www.invunion.com/knowledge-base/api/webhooks/). Events you can subscribe to and the JSON posted to your URL.

- HTTP method: `GET`
- Path: `/api/v1/webhook-deliveries/:id`
- URL: `https://api.invunion.com/api/v1/webhook-deliveries/:id`
- Required scope: `none — Firebase console only`
- HTML docs: https://www.invunion.com/knowledge-base/api/get-webhook/
- Markdown docs: https://www.invunion.com/knowledge-base/api/get-webhook.md

## Path parameters

| Name | Type | Required | Description | Allowed values | Example |
| --- | --- | --- | --- | --- | --- |
| `id` | string, no maximum | required | Webhook delivery UUID. |  | `5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d` |



## Errors

| Error | HTTP code | Description |
| --- | --- | --- |
| `Missing Bearer token` | `401` | The Authorization header is missing or is not a Bearer token. |
| `Invalid token` | `401` | Webhook destinations and deliveries are console-only. Send a Firebase ID token. Tenant API keys are not accepted on these routes. |
| `Too many requests, please try again later` | `429` | Wait and retry. The Retry-After header is the number of seconds to wait. |
| `Invalid path parameters` | `400` | id is not a UUID. |
| `Webhook delivery not found` | `404` | No delivery with this UUID exists in the authenticated tenant. |
| `Internal server error` | `500` | Unexpected server error. The JSON body includes correlationId. Retry with backoff. |

## Request (curl)

```bash
curl --request GET \
  --url https://api.invunion.com/api/v1/webhook-deliveries/5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d \
  --header 'accept: application/json' \
  --header 'authorization: Bearer FIREBASE_ID_TOKEN'
```

## Request (Python)

```python
import requests

url = "https://api.invunion.com/api/v1/webhook-deliveries/5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer FIREBASE_ID_TOKEN",
}
response = requests.get(url, headers=headers)
print(response.json())
```

## Request (Ruby)

```ruby
require 'net/http'
require 'json'
require 'uri'

uri = URI("https://api.invunion.com/api/v1/webhook-deliveries/5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Accept'] = 'application/json'
request['Authorization'] = 'Bearer FIREBASE_ID_TOKEN'
response = http.request(request)
puts response.body
```

## Request (JavaScript)

```javascript
const response = await fetch("https://api.invunion.com/api/v1/webhook-deliveries/5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer FIREBASE_ID_TOKEN"
  },
});
const data = await response.json();
```

## Request (Go)

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, err := http.NewRequest("GET", "https://api.invunion.com/api/v1/webhook-deliveries/5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer FIREBASE_ID_TOKEN")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
```

## Request (Node)

```javascript
const response = await fetch("https://api.invunion.com/api/v1/webhook-deliveries/5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer FIREBASE_ID_TOKEN"
  },
});
console.log(await response.json());
```

## Success (200)

```json
{
  "success": true,
  "data": {
    "id": "5f3deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "endpointId": "4e2deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "endpointUrl": "https://hooks.leonescars.example/invunion",
    "eventId": "7b5deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "eventType": "invoice.paid",
    "status": "success",
    "attemptCount": 1,
    "maxAttempts": 8,
    "nextRetryAt": null,
    "responseStatus": 200,
    "lastError": null,
    "durationMs": 84,
    "deliveredAt": "2026-09-12T09:00:04.000Z",
    "createdAt": "2026-09-12T09:00:03.000Z",
    "payload": {
      "id": "7b5deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
      "type": "invoice.paid",
      "created_at": "2026-09-12T09:00:03.000Z",
      "data": {
        "invoice": {
          "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
          "number": "INV-2026-0042",
          "total": 12000,
          "settled": 12000,
          "open": 0,
          "recovery": 100,
          "status": "paid"
        }
      }
    }
  }
}
```
