FOR STREAMERS & BUILDERS / API V1

Your stream.
Their record.

Use confirmed Five Five Six stats in your overlays, bots, and community tools. Read-only API access requires an approved developer key. This is accumulated player history, not live match telemetry.

Sign in with Discord and request an API key · Administrator: review API requests

Describe your project, wait for approval, then create your key in the account portal. Keys are shown once. Send yours in Authorization: Bearer YOUR_KEY or X-API-Key: YOUR_KEY. Replacing a key immediately revokes the previous one.

One endpoint. Every public player.

GET https://556vr.com/api/v1/players.json
Authorization: Bearer YOUR_KEY

The response contains a players array. Find players by their 17-digit Steam ID string; names can change. This v1 endpoint returns the full snapshot: player selection, searching, and mode selection happen in your code. Query parameters do not filter it. Opening the feed without a key returns HTTP 401.

Each player has id, name, totals, weapons, maps, and modes. Top-level stats combine Free-for-All, Defuse, and Explore. modes.ffa, modes.defuse, modes.explore, and modes.coop each contain their own totals, weapons, and maps. Co-op NPC kills never enter the top-level PvP totals.

Co-op includes solo and multiplayer rounds. modes.coop.difficulties contains easy, medium, hard, and invincible, each with totals, weapons, and maps. Co-op totals also include soloRounds and multiplayerRounds, based on participation at round start. Solo results come from one authenticated participant; multiplayer results require the existing agreement threshold.

JavaScript / browser overlays

The optional helper downloads the snapshot and selects one player locally. It shares concurrent requests and caches successful fetches for one minute. Use this inside your overlay's JavaScript module:

import { createStatsClient } from
  "https://556vr.com/api/v1/client.js";

const { getPlayer } = createStatsClient(
  "https://556vr.com/api/v1/players.json",
  { apiKey: privateKeyFromLocalSettings }
);
const result = await getPlayer("YOUR_17_DIGIT_STEAM_ID");
// Optional: getPlayer(id, { mode: "ffa" })
// Co-op: getPlayer(id, { mode: "coop", difficulty: "hard" })
// Modes: all (default), ffa, defuse, explore.

if (!result.player) {
  // No confirmed stats for this player yet.
} else if (result.isStale) {
  // Show a "stats delayed" indicator.
} else {
  const p = result.player;
  const kdr = p.totals.kdrInfinite ? "∞" :
    p.totals.kdr === null ? "—" : p.totals.kdr.toFixed(2);
  // Use textContent, not innerHTML, for player/map/weapon names.
  document.querySelector("#player-name").textContent = p.name;
  document.querySelector("#kills").textContent = p.totals.kills;
  document.querySelector("#kdr").textContent = kdr;
}
// Poll about once every 300 seconds, not every frame.

This helper is for a private local overlay or trusted runtime. Supply privateKeyFromLocalSettings from your own private configuration. For a public website, keep the key on your backend and serve the needed results from there. Never embed a key in shared JavaScript or a URL. Cross-origin requests support the authentication headers above; cookies are not used by the data API.

PowerShell / stream automation

$url = 'https://556vr.com/api/v1/players.json'
$data = Invoke-RestMethod -Uri $url -Headers @{ 'X-API-Key' = $env:FIVEFIVESIX_API_KEY }
$player = $data.players | Where-Object id -EQ 'YOUR_17_DIGIT_STEAM_ID'
$player.totals
$player.weapons
$player.maps
$player.modes.ffa.totals

Fields & calculations

RecordFields
Player totals & each mapkills, deaths, kdr, kdrInfinite, revives, teamkills, rounds, objectiveWins, defuses
Each weaponid, kills, shots, successfulShots, damageMilli, damage, accuracyPercent
Each map's identityid, name — group by stable ID, not display name.
Snapshot metadataschemaVersion, generatedAt, refreshSeconds, staleAfterSeconds

Handle missing or delayed data

A missing player is absent from the array; the helper returns player: null. No confirmed rounds yet is not the same as an outage. An empty dataset is valid. Missing mode records have zero counters and empty weapon/map arrays.

On timeout, a non-200 response, or an unsupported schema, the helper throws. Catch errors, keep your last known values with an unavailable/delayed label, and retry with backoff. Do not turn a failed request into zero stats. Preserve timestamps and tolerate new optional fields within v1.

Use GET or HEAD with your API key. CORS preflight OPTIONS requests are supported. Missing or invalid keys return 401; revoked keys or banned accounts return 403; unknown endpoints return 404; quota limits return 429 with a Retry-After header. Each account is limited to 120 calls per minute and 10,000 per UTC day, including all its rotated keys. Poll about every five minutes and share the snapshot across players. API responses are not shared-cacheable so revocations take effect on the next request.

Your account page shows current-key usage and last access. Administrators can review requests, revoke keys or ban API accounts. Public stats pages remain viewable. Read the API privacy notice.

Reports, moderation records, private Steam metadata, unconfirmed scores, and gameplay credentials are not exposed. This API cannot submit scores, change stats, or authenticate players.