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

# Logs: Capture, Filter, and Replay Every HTTP Request

> GetRequest captures every request — headers, body, status, and timing — so you can filter by outcome, inspect any failure, and replay traffic on Pro.

The Logs view gives you a complete, chronological record of every request that has ever arrived at your endpoints. GetRequest captures each request at the moment it arrives — before forwarding or responding — so your log is always accurate, even when your upstream is down or returns an error. Nothing slips through.

## What Gets Captured

Every log entry is a full snapshot of the HTTP exchange. You don't need to configure anything to start capturing; logging is automatic and always on for every endpoint.

Each log entry includes:

<ResponseField name="method" type="string">
  The HTTP method of the incoming request: `GET`, `POST`, `PUT`, `PATCH`, or `DELETE`.
</ResponseField>

<ResponseField name="status" type="integer">
  The HTTP status code returned to the caller. For JSON endpoints this is always `200`. For Forward endpoints it reflects your backend's actual response.
</ResponseField>

<ResponseField name="path" type="string">
  The full request path, including the slug and any path segments appended by the caller.
</ResponseField>

<ResponseField name="duration" type="integer">
  Total round-trip time in milliseconds from when GetRequest received the request to when it returned a response.
</ResponseField>

<ResponseField name="headers" type="object">
  All HTTP request headers sent by the caller, captured exactly as received.
</ResponseField>

<ResponseField name="body" type="string">
  The raw request body. Captured for `POST`, `PUT`, and `PATCH` requests. JSON bodies are rendered in a readable format in the dashboard.
</ResponseField>

<ResponseField name="query_params" type="object">
  Any query string parameters included in the request URL, parsed into key-value pairs.
</ResponseField>

<ResponseField name="timing" type="object">
  Granular timing breakdown including time-to-first-byte and upstream response time (for Forward endpoints).
</ResponseField>

## Filtering Logs

When you're tracking down a specific failure, you can narrow the log view using two filters:

<CardGroup cols={2}>
  <Card title="Filter by Status Code" icon="circle-xmark">
    Filter to exact codes (`404`, `500`) or classes (`5xx`, `4xx`) to isolate errors. Combine with a time range to find when a problem started.
  </Card>

  <Card title="Filter by Time Range" icon="clock">
    Scope the log view to a specific window — last hour, last 24 hours, or a custom date range — to focus on the period you care about.
  </Card>
</CardGroup>

## Log Retention

Log history is retained based on your plan:

| Plan     | Retention |
| -------- | --------- |
| **Free** | 7 days    |
| **Dev**  | 30 days   |
| **Pro**  | 30 days   |

Logs older than your plan's retention window are automatically removed. If you need to preserve a specific request before it ages out, use the Share feature (Pro) to generate a shareable link. Share links remain accessible for 30 days from creation, independent of your log retention window.

## Replay (Pro)

On the Pro plan, every log entry has a **Replay** button. Replay re-fires the original request — using the same method, headers, body, and query parameters — against your endpoint as it is configured right now.

<Steps>
  <Step title="Open a log entry">
    Click any request in the Logs view to expand its full details.
  </Step>

  <Step title="Click Replay">
    Hit the Replay button to re-send the original request to your endpoint.
  </Step>

  <Step title="Review the result">
    GetRequest creates a new log entry for the replayed request. The original log entry is preserved untouched alongside it.
  </Step>
</Steps>

<Note>
  Replay always generates a new log entry. Your original request log is never modified or overwritten, so you maintain a clean audit trail of both the initial failure and the replayed result.
</Note>

Replay is especially useful for recovering lost webhooks after an outage or a misconfigured handler — once your endpoint is fixed, you can replay every failed request without asking the sender to retry.

## Share (Pro)

On the Pro plan, you can generate a **public, read-only link** to any log entry. Anyone with the link can view the full request and response details without logging in to GetRequest.

<CardGroup cols={2}>
  <Card title="No login required" icon="lock-open">
    Share links are accessible to anyone, making it easy to send a specific request to a teammate, a vendor, or a support ticket.
  </Card>

  <Card title="Expires after 30 days" icon="calendar-xmark">
    Share links are valid for 30 days from the time they are created. After that, the link stops working.
  </Card>
</CardGroup>

<Tip>
  When a third-party webhook provider claims they sent a request and you can't find it, generate a share link for any related log entries and include it directly in your support thread with them.
</Tip>

## Rate Limits

GetRequest applies the following rate limits to prevent abuse:

| Action                | Limit         |
| --------------------- | ------------- |
| API key regeneration  | 6 per hour    |
| Share link generation | 30 per minute |
| Replay                | 20 per minute |
