Skip to main content

Read recent API requests for your application.

GET 

/debug/requests

Ask Feed for an expiring debug key for your application. Send that key in X-Feed-Debug-Key together with the same application's consumer token and secret. Playback access tokens cannot read history. Development and production applications have separate credentials and separate histories.

Returns successful and failed requests from the existing logs, including client/session creation and requests made before a play starts. It covers both v2 and v3 requests attributable to your application. Results are newest first by default; sort=asc returns oldest first. Optional filters are combined with AND and can only narrow your application's history. All filter parameters accept a single value; arrays, objects, wildcard searches and arbitrary query expressions are rejected.

client_id matches an ID recorded on the request or client/session creation response. url matches an exact v2/v3 API path or the route template returned in route, such as /api/v3/play/{play_id}/start. Logged query strings are ignored when matching; do not include a host, query string or fragment in the filter.

success=true matches HTTP 2xx/3xx responses with no recorded Feed error. success=false includes HTTP errors and Feed errors delivered with HTTP 200. audio_file_id and station_id match IDs recorded in the response, not IDs submitted in a request body. Requests whose responses did not log those fields do not match those filters.

Routes reflect the path the client requested. Offline session uploads (POST /api/v2/session/offline) produce one record per reported event (start, elapse, complete and so on) under that route, so several records can share a play_id, and session-level events carry none. Filter on url=/api/v2/session/offline to see them. station_uuid matches the UUID recorded with the response, across the station's publish generations. Matching is case-insensitive, including opaque legacy identifiers. Logs without a recorded UUID do not match this filter. An unknown UUID returns an empty page. If both station filters are provided, the response must match both. Station UUIDs are not added to returned records.

The window must be within the last seven days. Times in the logs and responses are UTC; request timestamps must include Z or an explicit UTC offset. since is inclusive and defaults to seven days ago; until is inclusive and defaults to now. since must be before until.

Logs normally appear minutes after a request, not immediately. Requests that never authenticated cannot be attributed to an application and are omitted. For an integration attempt, an empty result usually means the request never authenticated; also check the time range and allow for ingestion delay. Log outages and incomplete searches return an error, rather than an empty list.

Each page has at most 100 records and at most 256 KiB of JSON. Follow next_cursor by sending it as the only query parameter. Cursors are bound to the authenticated app, window, filters, sort and page size, and expire two minutes after the initial query. Use the latest cursor once, sequentially; it advances a fixed snapshot of the logs. New arrivals require a new query. next_cursor: null ends the result set; an exactly full final page may be followed by an empty page. Expired cursors require a new query.

Fields are explicitly allowlisted. Routes are normalized templates with query strings removed; unrecognized paths are returned as null. Every v3 route is recognized, as are the v2 routes an app can call. Templates are /api/v3/play/{play_id}/<action>, /api/v3/placement/{placement_id}/station, /api/v3/access_token/{access_token_id} and /api/v2/client/{client_id}. Client and play IDs are returned when present, including IDs from known route paths. Credentials, cookies, signed audio URLs, raw headers, IPs, user agents, arbitrary event parameters and free-text invalidate reasons are never returned. Error messages use the standard Feed description for the logged code, not raw messages that might contain submitted values.

These logs do not contain full request/response bodies. Station lists, audio metadata, playback flags and IDs not recorded by the original handler are unavailable. Missing fields stay omitted; a missing duration is null. This endpoint does not add logging to playback routes.

Example (the default window is the last seven days):

curl --get --user "$FEED_CONSUMER_TOKEN:$FEED_CONSUMER_SECRET" \
--header "X-Feed-Debug-Key: $FEED_DEBUG_KEY" \
--data-urlencode 'limit=50' \
'https://feed.fm/api/v3/debug/requests'

To continue, repeat the same credentials and use --data-urlencode "cursor=$NEXT_CURSOR" in place of all other parameters. To inspect failures for a client in chronological order, start a new query with client_id=YOUR_CLIENT_ID, success=false and sort=asc.

Request​

Responses​

A bounded page of request history, including an empty page when nothing matches.