https://api.dev.bifrostgaming.com/v1/graphqlpartnerGetMatchIds
v1Returns completed match IDs for a given game type, ordered newest first. Supports cursor-based pagination to retrieve all historical matches. By default returns the most recent 50 matches. Use the cursor and limit parameters to page through the full match history.
Operation Type
Query
Rate Limit: 120 requests per 60 seconds per partner (2 req/s)
Rate limits are enforced per partnerId via Redis using a fixed 60-second window. You can issue up to 120 requests per minute (an average of 2 requests per second).
Important usage notes
- This endpoint does NOT require an encrypted payload. Pass your partnerId and partnerEncryptionKey directly as query variables.
- Returns matches ordered newest first. Default limit is 50, maximum is 200.
- To get ALL matches: call with limit=200, then pass nextCursor as cursor in subsequent requests until hasMore is false.
- The matchId returned can be used directly with partnerGetMatchData to fetch the full match report.
- The guildName field may be null for servers that are not associated with a guild.
- Rate limit: 10 requests per 60 seconds. When paginating through all matches, add a 7-second delay between calls to stay within the limit.
- Backward compatible: omitting limit and cursor returns the same 50 most recent matches as before.
Input Fields
| Field | Type | Required | Description |
|---|---|---|---|
partnerId | String! | Required | Your unique partner identifier, provided when your partner account was created. |
partnerEncryptionKey | String! | Required | Your partner encryption key (Base64-encoded). This is used to verify your identity — it is NOT used to encrypt a payload for this endpoint. |
gameType | String! | Required | The game type code to query matches for (e.g. "HLL" for Hell Let Loose). |
limit | Int | Optional | Number of matches to return per page. Default: 50, maximum: 200. Values outside this range are clamped. |
cursor | String | Optional | Pagination cursor. Pass the nextCursor value from the previous response to get the next page of results. Omit for the first page (most recent matches). |
Code Examples
# Get the most recent 50 matches (default)
curl -X POST https://api.dev.bifrostgaming.com/v1/graphql \
-H "Content-Type: application/json" \
-d '{
"query": "query PartnerGetMatchIds($partnerId: String!, $partnerEncryptionKey: String!, $gameType: String!, $limit: Int, $cursor: String) { partnerGetMatchIds(partnerId: $partnerId, partnerEncryptionKey: $partnerEncryptionKey, gameType: $gameType, limit: $limit, cursor: $cursor) { gameType matches { matchId serverName guildName matchTime } nextCursor hasMore } }",
"variables": {
"partnerId": "your-partner-id",
"partnerEncryptionKey": "your-base64-encryption-key",
"gameType": "HLL",
"limit": 200
}
}'Postman Collection
Download a ready-to-use Postman collection for this endpoint. Import it into Postman to start testing immediately.
How to import into Postman
- Open Postman and click Import (top-left)
- Drag and drop the downloaded
.jsonfile, or click Upload Files and select it - Click Import to confirm
- The collection appears in your sidebar — expand it and select the request
- In the Body tab, update the placeholder values (
your-partner-id, etc.) with your actual credentials - Click Send
The collection uses Postman's GraphQL body type, which provides syntax highlighting and variable editing. Make sure your Postman version is 7.2+ for GraphQL support.
Success Response200
{
"data": {
"partnerGetMatchIds": {
"gameType": "HLL",
"matches": [
{
"matchId": "99149599-487a-5a06-a270-f8f4399af657",
"serverName": "[13SNC] #1 - Dirty's Heroes LVL 75+!",
"guildName": "[13SNC]",
"matchTime": "2026-03-20 12:08:32"
},
{
"matchId": "e10376be-5dbb-5c81-85c6-4b8527eb127d",
"serverName": "BAD COMPANY - New player friendly",
"guildName": "BAD Company",
"matchTime": "2026-03-20 11:49:46"
},
{
"matchId": "1bddf7cf-a78c-51ae-a095-456674dd2fee",
"serverName": "D-DAY 24/7 | NEWCOMERS WELCOME",
"guildName": "D-DAY 24/7",
"matchTime": "2026-03-20 11:25:28"
}
],
"nextCursor": "2026-03-20 11:25:28",
"hasMore": true
}
}
}Error Responses
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
gameType | String | Required | The game type that was queried. |
matches | [PartnerMatchIdEntry] | Required | Array of match entries for this page, up to the requested limit. |
matches[].matchId | String | Required | Unique identifier for the match. Use this with partnerGetMatchData. |
matches[].serverName | String | Required | Name of the game server where the match was played. |
matches[].guildName | String | Optional | Name of the guild that owns the server, or null if no guild is associated. |
matches[].matchTime | String | Required | Timestamp of when the match ended (format: YYYY-MM-DD HH:MM:SS, UTC). |
nextCursor | String | Optional | Pagination cursor for the next page. Pass this as the cursor parameter in your next request. Null when there are no more results. |
hasMore | Boolean | Required | True if there are more matches beyond this page. When false, you have reached the end of the match history. |