Steam friend lists
Steam friends API: public friend lists by SteamID
Read the friend list an account publishes: each friend's SteamID64, the relationship and Steam's friend_since value, one page at a time.
Updated
curl --fail-with-body \
-H "Authorization: Bearer $WOK_API_KEY" \
"https://woksteamapi.com/v1/friends?steam_id=76561198000000001&limit=100"Endpoints
A WOK key with all-purpose or Players access. Free Developer keeps its own quota, day and minute limits and the WOK Discord membership rule. Each single read uses one quota unit.
GET /v1/friends | Public Steam friend list |
|---|
Request
Parameters of GET /v1/friends, as published in the OpenAPI description.
| Parameter | Required | Accepted values | Notes |
|---|---|---|---|
steam_id | Required | string | A 17-digit SteamID64. Profile URLs and vanity names are not accepted here. |
limit | Optional | integer (1 to 100, default 50) | Friends per page. |
cursor | Optional | string | next_cursor from the previous page. |
Response fields
Fields of a 200 response. A type that includes null means Steam may not publish that value.
| Field | Type | Meaning |
|---|---|---|
steam_id | string | The SteamID64 the response describes. |
friends | array of object | One entry per friend on this page. |
friends.steam_id | string | The friend's SteamID64. |
friends.relationship | string | Steam's relationship value for that entry. |
friends.friend_since | integer or null | Steam's friend_since value for that friend; null when Steam did not publish it. |
total | integer | Number of friends in the whole list. |
has_more | boolean | True when another page exists. |
next_cursor | string or null | Pass it as cursor to read the next page; null on the last page. |
What your code should handle
The cases that most often turn into wrong numbers in a product.
Page with the cursor. limit accepts 1 to 100 and defaults to 50. While has_more is true, send next_cursor back as cursor.
Private is an error. A friend list that Steam does not publish returns 403. It is never returned as an account with zero friends.
IDs first, profiles second. The list carries SteamID64s. Read names and avatars for them with POST /v1/profiles, up to 64 accounts per request.
Steam profile APIFree SteamID finderPublic and private Steam data
Status codes
Errors carry a typed code and, where it applies, Retry-After. Respect it on 429 and 503.
| Status | Meaning |
|---|---|
200 | OK |
400 | Invalid request |
401 | Missing or invalid API key |
402 | Quota exhausted or required add-on is not active |
403 | Resource is private or restricted; discord_required means free access requires current WOK Discord membership |
422 | Query or JSON body validation failed |
429 | Rate limit exceeded |
502 | Upstream service failed |
503 | Required upstream capability is unavailable; discord_unavailable means free membership verification should be retried |
Questions
Do I need a Valve Steam Web API key?
No. WOK holds the Steam Web API key on its servers and makes the Steam call for you. Your server sends a WOK key in the Authorization header.
Can I get friends' names and avatars in the same call?
No. The friend list returns SteamID64, relationship and friend_since. Send those IDs to POST /v1/profiles, up to 64 per request, for names, avatars and visibility.
What happens when the friend list is private?
The request returns 403. Treat it as unavailable data, not as an account with no friends.
Do vanity names or profile links work?
Not on this endpoint. It accepts a 17-digit SteamID64. Resolve a profile link or vanity name with the profile endpoint first.
Steam account bansSteam libraries and hoursSteam achievementsSteam level and badges