---
slug: 48235-migration-of-supabase-management-api-logs-all-analytics-endpoint-to-logs-endpoint
published: 2026-07-23
change_type: breaking-change
affected_products:
  - Platform
page: https://supabase.com/changelog/48235-migration-of-supabase-management-api-logs-all-analytics-endpoint-to-logs-endpoint
---

# Migration of Supabase Management API `logs.all` analytics endpoint to `logs` endpoint

The `logs.all` Management API endpoint is being removed on 23rd September 2026 (Wednesday), two months from this announcement. Log querying moves to a new ClickHouse-backed `logs` endpoint. The new endpoint accepts ClickHouse SQL only. It returns every source through a single unified `logs` table instead of a separate table per source.

## How Do I Know if This Impacts Me?

You are impacted only if you query the `logs.all` Management API endpoint (`.../analytics/endpoints/logs.all`). This includes any scripts, integrations, or tooling that call it directly.

If you do not call this endpoint, no action is needed. Using logs through the dashboard Logs Explorer is not affected.

## What Should I Do?

1. **Update the endpoint path** from [`analytics/endpoints/logs.all`](https://supabase.com/docs/reference/api/v1-get-project-logs-all) to [`analytics/endpoints/logs`](https://supabase.com/docs/reference/api/v1-get-project-logs).
2. **Convert your SQL to the ClickHouse dialect.** The endpoint only accepts ClickHouse SQL.
3. **Filter by `source_name` instead of selecting a source table.** All sources now live in one `logs` table. Filter to a specific source in the `WHERE` clause.

**Before** (query a source table directly):

```sql
SELECT timestamp, event_message
FROM edge_logs
ORDER BY timestamp DESC
LIMIT 100
```

**After** (filter the unified stream by `source_name`):

```sql
SELECT timestamp, event_message
FROM logs
WHERE source_name = 'edge_logs'
ORDER BY timestamp DESC
LIMIT 100
```

Any query that previously targeted a specific table must now add a `source_name` filter in its `WHERE` clause.

## Accessing Nested Fields

Nested fields move from the `metadata` array to a flat `log_attributes` map. Before, you added one `CROSS JOIN unnest()` per level of nesting to reach a field. Now you read the field directly from `log_attributes` with map key access. The joins go away.

**Before** (unnest each level of `metadata`):

```sql
SELECT timestamp, request.method, header.x_real_ip
FROM edge_logs
CROSS JOIN unnest(metadata) AS m
CROSS JOIN unnest(m.request) AS request
CROSS JOIN unnest(request.headers) AS header
```

**After** (read from the `log_attributes` map):

```sql
SELECT
  timestamp,
  log_attributes['request.method'] AS method,
  log_attributes['request.headers.x_real_ip'] AS x_real_ip
FROM logs
WHERE source_name = 'edge_logs'
```

## Timeline

| Date             | Change                                          |
|------------------|-------------------------------------------------|
| 23 July 2026  | Changelog published                             |
| 23 September 2026   | `logs.all` endpoint removed for all projects    |

## Learn More

- [Management API reference](https://supabase.com/docs/reference/api/introduction): the `logs` endpoint and its parameters
- [Logs & querying documentation](https://supabase.com/docs/guides/telemetry/logs): available sources and ClickHouse SQL query examples
