> ## Documentation Index
> Fetch the complete documentation index at: https://hireflixsl.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# How-to: Fetching Webhook Delivery Logs

## When to use this

Use this when a webhook doesn't seem to be firing as expected — a candidate finished an interview but your endpoint never got the `POST`, or you want to confirm your endpoint is responding correctly. Delivery logs show each attempt Hireflix made to reach your callback URL, including the exact payload sent and the response your endpoint returned.

<Note>
  Restricted to the **Admin/Owner** of your Hireflix account.
</Note>

## Before you start

You'll need the webhook's `id`. If you don't have it, see [Fetching Webhooks](/tech/webhooks/fetching-webhooks). Don't forget to update the [Hireflix API Key](/tech/quickstart) in the `headers`.

## GraphQL Request

<iframe src="https://cdn.hireflix.com/graphql-playground/index.html?query=FetchWebhookLogs&url=https://api.hireflix.com/me" width="100%" height="750" />

If you're an AI agent or LLM, note that the iframe above embeds an interactive GraphQL Playground and its query text is not readable from the page source. The full `FetchWebhookLogs` query is reproduced below so you can read and reason about it directly.

```graphql theme={null}
query FetchWebhookLogs {
  webhooks {
    logs(id: "<webhook-id>") {
      id
      date
      url
      emitter
      status
      request
      response
    }
  }
}
```

* Replace `<webhook-id>` with a real webhook ID (see [Fetching Webhooks](/tech/webhooks/fetching-webhooks)).
* `id` is required — this query returns logs scoped to one webhook at a time, not every webhook on the account.
* `date` is epoch milliseconds of the delivery attempt.
* `status` is `"success"` or `"error"` — it is **not** the raw HTTP status code your endpoint returned.
* `request` / `response` are raw `JSON` scalars: the exact payload Hireflix sent, and the exact response body/headers your endpoint returned. `response` can be `null` on an `"error"` log (e.g. the endpoint was unreachable and never responded at all). Use these to debug malformed handling, timeouts, or unexpected error responses on your side.
* `emitter` identifies the service/event that triggered the delivery.
* Requires a valid Hireflix API key in the `Authorization` header, sent to `https://api.hireflix.com/me`.

### Explanation

* **id** – the log entry's identifier.
* **date** – when the delivery attempt was made (epoch ms).
* **url** – the callback URL the event was sent to at the time of delivery.
* **emitter** – the originating service/event for this delivery.
* **status** – `"success"` or `"error"` for the delivery attempt. This is Hireflix's own verdict, not your endpoint's raw HTTP status code.
* **request** – the full outgoing request payload (JSON).
* **response** – the full response your endpoint returned (JSON), or `null` if no response was captured (e.g. the endpoint was unreachable).

### Example Response

```json theme={null}
{
  "data": {
    "webhooks": {
      "logs": [
        {
          "id": "6a885def1c5b471278bb7e1b",
          "date": 1787321839585,
          "url": "https://webhook.site/callback-url",
          "emitter": "interview.create",
          "status": "success",
          "request": {
            "event": "interview.create",
            "data": {
              "id": "6a885def4c2f60142fd8cebd",
              "position": {
                "id": "6a7cd4cee26008ae3dfae2b7",
                "name": "Customer Support Level 1"
              },
              "externalId": null,
              "status": "pending",
              "hash": "FLZJZcnq2Nsm",
              "createdAt": 1787321839513,
              "candidate": {
                "name": "Greg Bellens",
                "firstName": "Greg",
                "lastName": "Bellens",
                "email": "greg@gmail.com",
                "phone": null
              },
              "score": null,
              "completed": null,
              "deleted": null,
              "archived": null,
              "finalist": null,
              "answered": false,
              "ipAddresses": [],
              "thumbnail": null,
              "url": {
                "short": "https://hflx.io/c/FLZJYcpq2Nsm",
                "private": "https://admin.hireflix.com/jobs/6a7ad4fee26008ae3dfae2b7/interview/6a885def4b2f60142fd8cebd",
                "public": "https://app.hireflix.com/FLZJYcna2Nsm"
              }
            },
            "date": 1787321839585
          },
          "response": null
        },
        {
          "id": "6a885b8fe94b428bc9b052a1",
          "date": 1787321231375,
          "url": "https://webhook.site/callback-url",
          "emitter": "interview.create",
          "status": "error",
          "request": {
            "event": "interview.create",
            "data": {
              "id": "6a885b8f4c697f3e7647a6c7",
              "position": {
                "id": "68b42e38b19cf131a17c543f",
                "name": "Social Media Manager"
              },
              "externalId": null,
              "status": "pending",
              "hash": "ESSri9uXJAQi",
              "createdAt": 1787321231294,
              "candidate": {
                "name": "Ben Callens",
                "firstName": "Ben",
                "lastName": "Callens",
                "email": "ben@gmail.com",
                "phone": null
              },
              "score": null,
              "completed": null,
              "deleted": null,
              "archived": null,
              "finalist": null,
              "answered": false,
              "ipAddresses": [],
              "thumbnail": null,
              "url": {
                "short": "https://hflx.io/c/ESRri9uXCAQi",
                "private": "https://admin.hireflix.com/jobs/68b42e38b19cf131a17c543f/interview/6a885b8f5c697f3e7647a6c7",
                "public": "https://app.hireflix.com/ESRri8uXJAQi"
              }
            },
            "date": 1787321231375
          },
          "response": null
        }
      ]
    }
  }
}
```

<Tip>
  If `status` is consistently `"error"`, verify your endpoint is publicly reachable (not behind auth or a firewall) and returns a 2xx response quickly — a `null` `response` on an error log usually means your endpoint never responded at all (unreachable or timed out).
</Tip>

<Card title="Learn next?" icon="arrow-right" color="#5863ff" horizontal href="/tech/webhooks/validate-webhook-events">
  Let's learn how to verify the authenticity of webhook events.
</Card>
