HTTP API

TIP

All example urls in this section require you to have StreamCompanion running, with some song selected.

TIP

By default all connections to api are restricted to browser requests from local computer (localhost).
That can be changed by enabling remote access in Web overlay settings tab.

WebSocket endpoints

tokens

WebSocket stream of requested tokens, with can be changed at any point by sending message with serialized JArray, containing case sensitive token names

Code example

Minimal working JavaScript example looks like this:

let ws = new WebSocket('ws://localhost:20727/tokens');
ws.onopen = () => {
  //send token names with should be watched for value changes
  ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
ws.onmessage = (wsEvent) => {
  //do things with data here
  console.log(wsEvent.data);
};

if you execute this code and change songs in osu few times, you'll notice that not all tokens are always sent. This is intentional - messages received contain only changed values.
To have access to all current token values you need to cache them:

let ws = new WebSocket('ws://localhost:20727/tokens');
ws.onopen = () => {
  ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
let cache = {};
ws.onmessage = (wsEvent) => {
  Object.assign(cache, JSON.parse(wsEvent.data));
  //cache will always contain up to date token values
  console.log(cache);
};




 

 



By default token values are sent as soon as specific plugin updates it, resulting in several messages containing information about single map/state change.
As this may be sometimes undesirable, SC can be configured to send token updates once all plugins have completed their work by appending ?bulkUpdates=MainPipeline,LiveTokens to url:

let ws = new WebSocket('ws://localhost:20727/tokens?bulkUpdates=MainPipeline,LiveTokens');
ws.onopen = () => {
  ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
let cache = {};
ws.onmessage = (wsEvent) => {
  Object.assign(cache, JSON.parse(wsEvent.data));
  //cache will always contain up to date token values
  console.log(cache);
};
 









Maximum amount of messages sent per second by StreamCompanion can be controlled by appending ?updatesPerSecond=15 to url (adjust number as necessary). Limited to 20 by default.

let ws = new WebSocket('ws://localhost:20727/tokens?bulkUpdates=MainPipeline,LiveTokens&updatesPerSecond=15');
ws.onopen = () => {
  ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
let cache = {};
ws.onmessage = (wsEvent) => {
  Object.assign(cache, JSON.parse(wsEvent.data));
  //cache will always contain up to date token values
  console.log(cache);
};
 









outputPatterns

WebSocket stream of output patterns, which can be changed at any point by sending message with serialized JArray, containing case sensitive output pattern names

This works in same manner as tokens endpoint. Same code can be reused by replacing endpoint with ws://localhost:20727/outputPatterns and provide output pattern names instead of token names.

HTTP endpoints

jsonopen in new window

All tokens available in StreamCompanion in form of json object.

TIP

This endpoint should be used only as a tokens reference. Use these via tokens WebSocket endpoint in actual implementations.
Ignoring this will result in unnecessary resource usage, as live token values are computed only when used.

Example output
{
  "backgroundImageLocation": "E:\\Gry\\osu!\\Songs\\504770 Shiron - CODE -CRiMSON-\\crimson.jpg",
  "backgroundImageFileName": "crimson.jpg",
  "osu_SSPP": 451.456,
  "osu_99_9PP": 447.866,
  "osu_99PP": 385.707,
  "osu_98PP": 333.322,
  "osu_97PP": 290.926,
  "osu_96PP": 260.512,
  "osu_95PP": 235.882,
  "osu_90PP": 177.718,
  "osu_mSSPP": 451.456,
  "osu_m99_9PP": 447.866,
  "osu_m99PP": 385.707,
  "osu_m98PP": 333.322,
  "osu_m97PP": 290.926,
  "osu_m96PP": 260.512,
  "osu_m95PP": 235.882,
  "osu_m90PP": 177.718,
  "mania_1_000_000PP": null,
  "mania_990_000PP": null,
  "mania_950_000PP": null,
  "mania_900_000PP": null,
  "mania_800_000PP": null,
  "mania_700_000PP": null,
  "mania_600_000PP": null,
  "mania_m1_000_000PP": null,
  "mania_m990_000PP": null,
  "mania_m950_000PP": null,
  "mania_m900_000PP": null,
  "mania_m800_000PP": null,
  "mania_m700_000PP": null,
  "mania_m600_000PP": null,
  "osuIsRunning": 1,
  "mapStrains": {
    "0": 44.96864417597254,
    "1162": 69.29098204347187,
    "2324": 87.12462449655517,
    "3486": 108.90038884735,
    "4648": 109.60957814776218,
    "5810": 109.24483826251956,
    "6972": 106.77096580395647,
    "8134": 103.48400165956663,
    "9296": 102.78336433611233,
    "10458": 94.30775652256068,
    "11620": 94.15728780857452,
    "12782": 94.98483955855899,
    "13944": 100.65286160400264,
    "15106": 107.58959321414706,
    "16268": 101.07761864311611,
    "17430": 104.40529778171658,
    "18592": 110.40180625845045,
    "19754": 102.48273186689454,
    "20916": 102.11430606446046,
    "22078": 83.55372624978081,
    "23240": 74.774650734963,
    "24402": 83.26737795273651,
    "25564": 90.70024045686402,
    "26726": 107.12853708002561,
    "27888": 96.15420940140662,
    "29050": 87.78299170428674,
    "30212": 85.57844368587492,
    "31374": 83.63468735310929,
    "32536": 86.36607285262785,
    "33698": 87.43032535541167,
    "34860": 74.06410799470335,
    "36022": 55.32905058564928,
    "37184": 55.91805724153695,
    "38346": 49.68790935104358,
    "39508": 53.506916716488064,
    "40670": 54.380625083244006,
    "41832": 64.18709022018889,
    "42994": 83.55127044813347,
    "44156": 91.2027107390281,
    "45318": 99.64299374867973,
    "46480": 109.13365389350531,
    "47642": 121.9757931699888,
    "48804": 142.48238674797602,
    "49966": 175.85153477634913,
    "51128": 177.33213117116827,
    "52290": 178.33635093590206,
    "53452": 171.75859668748598,
    "54614": 173.72412020353707,
    "55776": 171.30807086983785,
    "56938": 164.0145552685746,
    "58100": 154.17435320508292,
    "59262": 150.79266763430596,
    "60424": 155.40490566442617,
    "61586": 145.9386694776438,
    "62748": 140.44226628941172,
    "63910": 145.9235936494571,
    "65072": 135.68924624848776,
    "66234": 177.29127502550472,
    "67396": 176.61458756095928,
    "68558": 160.45085526920974,
    "69720": 125.26438661212777,
    "70882": 70.89759334385263,
    "72044": 49.70023461099993,
    "73206": 43.19123349369499,
    "74368": 48.21241087280583,
    "75530": 48.75957689963867,
    "76692": 47.297759377186544,
    "77854": 52.19087944829928,
    "79016": 66.71420445854723,
    "80178": 75.70832715648534,
    "81340": 85.26194642649821,
    "82502": 88.26139852865204,
    "83664": 77.58307914782175,
    "84826": 82.0712621454316,
    "85988": 62.90234651567482,
    "87150": 69.49881872871893,
    "88312": 73.16252709308846,
    "89474": 77.27665995597455,
    "90636": 96.42235647647499,
    "91798": 104.31247479939282,
    "92960": 121.22781434635428,
    "94122": 141.33532410336898,
    "95284": 159.48130682161712,
    "96446": 181.3878196767104,
    "97608": 180.35164662455207,
    "98770": 179.5875073525588,
    "99932": 179.1092903151047,
    "101094": 175.7805786211659,
    "102256": 162.86706571245148,
    "103418": 155.5054062264992,
    "104580": 148.64302467977888,
    "105742": 152.22348549174973,
    "106904": 148.93337322948943,
    "108066": 157.3761760080899,
    "109228": 155.61912980081001,
    "110390": 150.52047269644947,
    "111552": 162.68533495251341,
    "112714": 154.003012085019,
    "113876": 160.09372710052708,
    "115038": 117.3268307058951
  },
  "skin": "old",
  "skinPath": "E:\\Gry\\osu!\\Skins\\old",
  "firstHitObjectTime": 733,
  "mapBreaks": [],
  "mapTimingPoints": [
    {
      "startTime": 733,
      "bpm": 167,
      "beatLength": 359.28144
    }
  ],
  "rankedStatus": 7,
  "status": 1,
  "rawStatus": 5,
  "mapid": 1765848,
  "mapsetid": 504770,
  "username": "",
  "acc": 0,
  "katsu": 0,
  "geki": 0,
  "c300": 0,
  "c100": 0,
  "c50": 0,
  "miss": 0,
  "grade": 9,
  "mapPosition": "00:01:00.4510000",
  "time": 60.451,
  "timeLeft": "00:00:58.1260000",
  "combo": 0,
  "comboLeft": 0,
  "score": 0,
  "currentMaxCombo": 0,
  "playerHp": 0,
  "ppIfMapEndsNow": 0,
  "aimPpIfMapEndsNow": 0,
  "speedPpIfMapEndsNow": 0,
  "accPpIfMapEndsNow": 0,
  "strainPpIfMapEndsNow": 0,
  "ppIfRestFced": 0,
  "noChokePp": 0,
  "simulatedPp": 245.934,
  "unstableRate": 0,
  "convertedUnstableRate": 0,
  "hitErrors": [],
  "localTimeISO": "2021-09-03T13:31:00.7605731Z",
  "localTime": "15:31:00.7605751",
  "sliderBreaks": 0,
  "liveStarRating": 5.386,
  "isBreakTime": 0,
  "currentBpm": 167,
  "leaderBoardPlayers": "[]",
  "leaderBoardMainPlayer": "{}",
  "keyOverlay": "{}",
  "chatIsEnabled": 0,
  "ingameInterfaceIsEnabled": 0,
  "songSelectionRankingType": 1,
  "songSelectionTotalScores": 1359,
  "songSelectionScores": "[{\"Username\":\"Woey\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1145,\"Score\":31985508,\"Hit100\":4,\"Hit300\":903,\"Hit50\":0,\"HitGeki\":85,\"HitKatu\":4,\"HitMiss\":2,\"Date\":\"2020-08-28T08:57:26\",\"UserId\":3792472,\"Accuracy\":99.4866132736206,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"wooz\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30490040,\"Hit100\":0,\"Hit300\":909,\"Hit50\":0,\"HitGeki\":90,\"HitKatu\":0,\"HitMiss\":0,\"Date\":\"2021-04-15T00:41:55\",\"UserId\":6888206,\"Accuracy\":100.0,\"Mods\":\"NM\",\"Grade\":2},{\"Username\":\"Viveliam\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30378760,\"Hit100\":3,\"Hit300\":906,\"Hit50\":0,\"HitGeki\":87,\"HitKatu\":3,\"HitMiss\":0,\"Date\":\"2021-04-10T16:18:05\",\"UserId\":3506793,\"Accuracy\":99.77997541427612,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"oPixay\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30164720,\"Hit100\":18,\"Hit300\":891,\"Hit50\":0,\"HitGeki\":77,\"HitKatu\":13,\"HitMiss\":0,\"Date\":\"2021-08-28T15:20:56\",\"UserId\":12796317,\"Accuracy\":98.67987036705017,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Rhythm blue\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30146180,\"Hit100\":15,\"Hit300\":894,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":10,\"HitMiss\":0,\"Date\":\"2020-07-31T19:31:17\",\"UserId\":6506107,\"Accuracy\":98.89988899230957,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Sh4rq_\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1133,\"Score\":29331330,\"Hit100\":22,\"Hit300\":885,\"Hit50\":1,\"HitGeki\":78,\"HitKatu\":11,\"HitMiss\":1,\"Date\":\"2021-04-01T15:34:15\",\"UserId\":11684622,\"Accuracy\":98.18481802940369,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"magnatagamer123\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1124,\"Score\":29177290,\"Hit100\":14,\"Hit300\":895,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":7,\"HitMiss\":0,\"Date\":\"2021-06-06T15:14:53\",\"UserId\":7587763,\"Accuracy\":98.97323250770569,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"_wonderer\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1126,\"Score\":29151630,\"Hit100\":21,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":16,\"HitMiss\":0,\"Date\":\"2021-07-11T17:41:08\",\"UserId\":8215374,\"Accuracy\":98.4598457813263,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Arge\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1130,\"Score\":29140610,\"Hit100\":22,\"Hit300\":886,\"Hit50\":0,\"HitGeki\":76,\"HitKatu\":13,\"HitMiss\":1,\"Date\":\"2020-07-16T20:59:27\",\"UserId\":11215030,\"Accuracy\":98.27649593353271,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"_Shield\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1122,\"Score\":29124610,\"Hit100\":10,\"Hit300\":899,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":7,\"HitMiss\":0,\"Date\":\"2020-07-03T05:20:07\",\"UserId\":1860489,\"Accuracy\":99.2665946483612,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"itay\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1114,\"Score\":28894150,\"Hit100\":19,\"Hit300\":886,\"Hit50\":3,\"HitGeki\":79,\"HitKatu\":8,\"HitMiss\":1,\"Date\":\"2020-07-15T04:23:05\",\"UserId\":10701418,\"Accuracy\":98.2214868068695,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"BoshyMan741\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1106,\"Score\":28579810,\"Hit100\":12,\"Hit300\":894,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":8,\"HitMiss\":3,\"Date\":\"2021-01-22T06:04:07\",\"UserId\":4830687,\"Accuracy\":98.78987669944763,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Ceja\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1067,\"Score\":28345584,\"Hit100\":15,\"Hit300\":892,\"Hit50\":1,\"HitGeki\":79,\"HitKatu\":9,\"HitMiss\":1,\"Date\":\"2021-02-10T01:32:48\",\"UserId\":4185921,\"Accuracy\":98.69820475578308,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"Arnold576\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1055,\"Score\":27756541,\"Hit100\":15,\"Hit300\":893,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":9,\"HitMiss\":1,\"Date\":\"2021-05-15T15:47:54\",\"UserId\":11967146,\"Accuracy\":98.78987669944763,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"rarebostonian\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1085,\"Score\":27638040,\"Hit100\":10,\"Hit300\":893,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":6,\"HitMiss\":6,\"Date\":\"2021-08-16T19:20:02\",\"UserId\":8097065,\"Accuracy\":98.60652685165405,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"CosmicWolf\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1079,\"Score\":26916090,\"Hit100\":28,\"Hit300\":876,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":14,\"HitMiss\":5,\"Date\":\"2021-04-08T16:27:53\",\"UserId\":8352298,\"Accuracy\":97.39640355110168,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Dsan\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1068,\"Score\":26901030,\"Hit100\":3,\"Hit300\":900,\"Hit50\":0,\"HitGeki\":86,\"HitKatu\":2,\"HitMiss\":6,\"Date\":\"2021-03-07T08:08:48\",\"UserId\":1266166,\"Accuracy\":99.11991357803345,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Ritseh\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1067,\"Score\":26849940,\"Hit100\":14,\"Hit300\":893,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":7,\"HitMiss\":2,\"Date\":\"2020-12-30T00:09:46\",\"UserId\":4585205,\"Accuracy\":98.75320792198181,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"blejd\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1067,\"Score\":26774630,\"Hit100\":8,\"Hit300\":894,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":6,\"HitMiss\":7,\"Date\":\"2020-07-03T17:23:50\",\"UserId\":4033022,\"Accuracy\":98.64319562911987,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Ootsuha\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1066,\"Score\":26646990,\"Hit100\":19,\"Hit300\":886,\"Hit50\":0,\"HitGeki\":78,\"HitKatu\":10,\"HitMiss\":4,\"Date\":\"2020-07-02T23:47:04\",\"UserId\":10499827,\"Accuracy\":98.16648364067078,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"temka na\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1066,\"Score\":26493710,\"Hit100\":17,\"Hit300\":890,\"Hit50\":1,\"HitGeki\":80,\"HitKatu\":8,\"HitMiss\":1,\"Date\":\"2020-07-03T08:22:53\",\"UserId\":10504596,\"Accuracy\":98.55152368545532,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Suprawn\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1066,\"Score\":26304530,\"Hit100\":32,\"Hit300\":872,\"Hit50\":0,\"HitGeki\":75,\"HitKatu\":12,\"HitMiss\":5,\"Date\":\"2021-04-09T17:14:22\",\"UserId\":9723388,\"Accuracy\":97.10304141044617,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Voss\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1047,\"Score\":26188300,\"Hit100\":12,\"Hit300\":896,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":8,\"HitMiss\":1,\"Date\":\"2021-01-18T15:30:34\",\"UserId\":7657761,\"Accuracy\":99.00990128517151,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Pancho\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1044,\"Score\":26071610,\"Hit100\":7,\"Hit300\":900,\"Hit50\":0,\"HitGeki\":88,\"HitKatu\":0,\"HitMiss\":2,\"Date\":\"2021-08-08T01:51:40\",\"UserId\":11305398,\"Accuracy\":99.2665946483612,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"PFFFFFFFFFFFFFT\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1012,\"Score\":25807394,\"Hit100\":28,\"Hit300\":870,\"Hit50\":4,\"HitGeki\":72,\"HitKatu\":13,\"HitMiss\":7,\"Date\":\"2021-04-29T08:09:01\",\"UserId\":10683628,\"Accuracy\":96.80967926979065,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"Chef\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1033,\"Score\":25048730,\"Hit100\":48,\"Hit300\":861,\"Hit50\":0,\"HitGeki\":71,\"HitKatu\":19,\"HitMiss\":0,\"Date\":\"2021-01-22T05:42:36\",\"UserId\":12736534,\"Accuracy\":96.47964835166931,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"bze\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1024,\"Score\":24832270,\"Hit100\":18,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":77,\"HitKatu\":11,\"HitMiss\":3,\"Date\":\"2021-01-07T22:55:46\",\"UserId\":4095562,\"Accuracy\":98.34983348846436,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Nowitskey\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1030,\"Score\":24720990,\"Hit100\":47,\"Hit300\":856,\"Hit50\":0,\"HitGeki\":67,\"HitKatu\":21,\"HitMiss\":6,\"Date\":\"2021-01-11T20:54:19\",\"UserId\":4375125,\"Accuracy\":95.89292407035828,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Orbi\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1008,\"Score\":24361270,\"Hit100\":22,\"Hit300\":885,\"Hit50\":0,\"HitGeki\":75,\"HitKatu\":13,\"HitMiss\":2,\"Date\":\"2020-07-21T17:42:48\",\"UserId\":3574151,\"Accuracy\":98.16648364067078,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Fuma\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1008,\"Score\":24216470,\"Hit100\":36,\"Hit300\":873,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":16,\"HitMiss\":0,\"Date\":\"2021-09-02T17:07:17\",\"UserId\":1501956,\"Accuracy\":97.35973477363586,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"-forestguy-\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1005,\"Score\":23863930,\"Hit100\":36,\"Hit300\":867,\"Hit50\":0,\"HitGeki\":69,\"HitKatu\":17,\"HitMiss\":6,\"Date\":\"2021-01-01T10:40:12\",\"UserId\":9588826,\"Accuracy\":96.69967293739319,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"NovatoKing\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1005,\"Score\":23699080,\"Hit100\":44,\"Hit300\":859,\"Hit50\":0,\"HitGeki\":66,\"HitKatu\":20,\"HitMiss\":6,\"Date\":\"2020-09-05T16:51:35\",\"UserId\":9316213,\"Accuracy\":96.11294269561768,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Musket\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":875,\"Score\":17894400,\"Hit100\":22,\"Hit300\":880,\"Hit50\":2,\"HitGeki\":77,\"HitKatu\":8,\"HitMiss\":5,\"Date\":\"2020-08-29T02:15:09\",\"UserId\":6124459,\"Accuracy\":97.65309691429138,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Dolter\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":677,\"Score\":16713743,\"Hit100\":10,\"Hit300\":898,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":6,\"HitMiss\":1,\"Date\":\"2021-04-06T10:33:06\",\"UserId\":6920104,\"Accuracy\":99.15658235549927,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"im_a_burger_fox\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":587,\"Score\":16245653,\"Hit100\":4,\"Hit300\":903,\"Hit50\":0,\"HitGeki\":87,\"HitKatu\":2,\"HitMiss\":2,\"Date\":\"2020-09-07T13:55:55\",\"UserId\":5791401,\"Accuracy\":99.4866132736206,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"Spinesnight\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":590,\"Score\":15295920,\"Hit100\":24,\"Hit300\":885,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":16,\"HitMiss\":0,\"Date\":\"2020-07-04T15:56:44\",\"UserId\":4519494,\"Accuracy\":98.23982119560242,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Reedkatt\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":618,\"Score\":15266810,\"Hit100\":20,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":76,\"HitKatu\":13,\"HitMiss\":1,\"Date\":\"2021-04-17T16:58:08\",\"UserId\":8335950,\"Accuracy\":98.42317700386047,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Rebo\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":581,\"Score\":14948090,\"Hit100\":12,\"Hit300\":895,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":7,\"HitMiss\":2,\"Date\":\"2021-02-14T04:14:07\",\"UserId\":6942259,\"Accuracy\":98.89988899230957,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Suorik\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":587,\"Score\":14825140,\"Hit100\":39,\"Hit300\":869,\"Hit50\":0,\"HitGeki\":72,\"HitKatu\":17,\"HitMiss\":1,\"Date\":\"2020-12-29T18:08:03\",\"UserId\":13199087,\"Accuracy\":97.02970385551453,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"GermanLetsPlay\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":552,\"Score\":14413580,\"Hit100\":16,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":9,\"HitMiss\":5,\"Date\":\"2020-08-18T14:46:03\",\"UserId\":11495128,\"Accuracy\":98.27649593353271,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"HENKSELI\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":652,\"Score\":14398880,\"Hit100\":24,\"Hit300\":882,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":14,\"HitMiss\":3,\"Date\":\"2020-07-05T17:50:23\",\"UserId\":7005392,\"Accuracy\":97.90979027748108,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"BobbyZlich\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":659,\"Score\":14371610,\"Hit100\":32,\"Hit300\":871,\"Hit50\":2,\"HitGeki\":71,\"HitKatu\":15,\"HitMiss\":4,\"Date\":\"2021-07-19T04:30:03\",\"UserId\":6779549,\"Accuracy\":97.02970385551453,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Fixr\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":554,\"Score\":14323770,\"Hit100\":31,\"Hit300\":877,\"Hit50\":0,\"HitGeki\":70,\"HitKatu\":19,\"HitMiss\":1,\"Date\":\"2020-07-12T18:28:04\",\"UserId\":2762603,\"Accuracy\":97.61642813682556,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Sustain\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":665,\"Score\":14205840,\"Hit100\":41,\"Hit300\":863,\"Hit50\":0,\"HitGeki\":70,\"HitKatu\":16,\"HitMiss\":5,\"Date\":\"2021-08-03T12:01:52\",\"UserId\":1460342,\"Accuracy\":96.44297957420349,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"ALTERNATOR32\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":667,\"Score\":14125660,\"Hit100\":25,\"Hit300\":877,\"Hit50\":1,\"HitGeki\":70,\"HitKatu\":16,\"HitMiss\":6,\"Date\":\"2021-08-27T06:16:18\",\"UserId\":3895932,\"Accuracy\":97.41474390029907,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Njulsen\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":662,\"Score\":14035030,\"Hit100\":25,\"Hit300\":881,\"Hit50\":0,\"HitGeki\":69,\"HitKatu\":18,\"HitMiss\":3,\"Date\":\"2021-02-01T20:07:41\",\"UserId\":10773960,\"Accuracy\":97.83645272254944,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Jusstain-\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":659,\"Score\":13838080,\"Hit100\":43,\"Hit300\":857,\"Hit50\":2,\"HitGeki\":72,\"HitKatu\":14,\"HitMiss\":7,\"Date\":\"2021-02-19T20:22:19\",\"UserId\":13435594,\"Accuracy\":95.89292407035828,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Felrion\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":581,\"Score\":13837220,\"Hit100\":12,\"Hit300\":892,\"Hit50\":0,\"HitGeki\":82,\"HitKatu\":6,\"HitMiss\":5,\"Date\":\"2020-11-20T16:46:56\",\"UserId\":3673083,\"Accuracy\":98.56985807418823,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"EzChock\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":565,\"Score\":13832930,\"Hit100\":15,\"Hit300\":891,\"Hit50\":0,\"HitGeki\":78,\"HitKatu\":9,\"HitMiss\":3,\"Date\":\"2020-07-03T03:17:22\",\"UserId\":9276293,\"Accuracy\":98.56985807418823,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"httd\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":585,\"Score\":13799630,\"Hit100\":41,\"Hit300\":864,\"Hit50\":0,\"HitGeki\":67,\"HitKatu\":20,\"HitMiss\":4,\"Date\":\"2020-11-16T16:10:10\",\"UserId\":11919665,\"Accuracy\":96.55298590660095,\"Mods\":\"HD\",\"Grade\":4}]",
  "songSelectionMainPlayerScore": "{\"Username\":\"Piotrekol\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":319,\"Score\":4420210,\"Hit100\":89,\"Hit300\":781,\"Hit50\":9,\"HitGeki\":46,\"HitKatu\":31,\"HitMiss\":30,\"Date\":\"0001-01-01T00:00:00\",\"UserId\":304520,\"Accuracy\":89.3472671508789,\"Mods\":\"NM\",\"Grade\":5}",
  "plays": 0,
  "retries": 0,
  "osuFileLocation": "E:\\Gry\\osu!\\Songs\\504770 Shiron - CODE -CRiMSON-\\Shiron - CODE -CRiMSON- (Mijn Aim Zuigt) [EXHAUST].osu",
  "titleRoman": "CODE -CRiMSON-",
  "artistRoman": "Shiron",
  "titleUnicode": "CODE -CRiMSON-",
  "artistUnicode": "Shiron",
  "mapArtistTitle": "Shiron - CODE -CRiMSON-",
  "mapArtistTitleUnicode": "Shiron - CODE -CRiMSON-",
  "mapDiff": "[EXHAUST]",
  "creator": "Mijn Aim Zuigt",
  "diffName": "EXHAUST",
  "mp3Name": "audio.mp3",
  "md5": "06a93b296b670505882488f7e1b2769c",
  "osuFileName": "Shiron - CODE -CRiMSON- (Mijn Aim Zuigt) [EXHAUST].osu",
  "maxBpm": 167,
  "minBpm": 167,
  "bpm": "167",
  "mainBpm": 167,
  "tags": "spaced streams schranz sdvx technical POMPEN Damnjelly",
  "circles": 712,
  "sliders": 195,
  "spinners": 2,
  "ar": 9.6,
  "cs": 5,
  "hp": 6,
  "od": 9,
  "sv": 1.4,
  "starsNomod": 6.708969326688815,
  "drainingtime": 117844,
  "totaltime": 118577,
  "previewtime": 49595,
  "dl": "http://osu.ppy.sh/b/1765848",
  "threadid": 0,
  "sl": 0.7,
  "mode": "0",
  "source": "SOUND VOLTEX II -infinite infection-",
  "dir": "504770 Shiron - CODE -CRiMSON-",
  "lb": "\r\n",
  "gameMode": "Osu",
  "maxCombo": 1148,
  "mods": "NM",
  "modsEnum": 0,
  "mAR": 9.6,
  "mCS": 5,
  "mOD": 9,
  "mHP": 6,
  "mStars": 6.708969326688815,
  "mBpm": "167",
  "mMaxBpm": 167,
  "mMinBpm": 167,
  "mMainBpm": 167
}

backgroundImageopen in new window

Current map background image

  • Base url with no parameters returns map image file as-is without any processing.
  • setting width or height query parameters ensures that at least one of these will be matched while preserving original image aspect ratio. check it outopen in new window
    • in addition, setting crop=true disregards image aspect ratio and returns cropped image with specified dimensions, resizing it beforehand if necessary. check it outopen in new window
  • Set cache=true and SC will set the Cache-Controlopen in new window response header to instruct the browser to cache background images. When images are repeatedly loaded, it will save a lot of loading time.

    cache usage

    When using caching, it is necessary to add some query parameters to distinguish requests. If no other parameters are added, it will result in your browser always reusing the background image of the first loaded map. For example, you can use Id of the current map to create unique urls:

    /backgroundImage?cache=true&mapId=123456

Songsopen in new window

View into user osu! Songs folder

  • Use backgroundImage endpoint for getting current map background instead of navigating to it here.
  • This is provided mainly for cases where there is need for additional .osu file processing.
    dev note

    I would argue this sort of thing should end up as new StreamCompanion plugin or as addition to existing one.

Skinsopen in new window

View into user osu! Skins folder

  • Combine this with skin token value to get access to skin assets user is currently using.

overlayListopen in new window

List of available overlays (folder paths)
Mainly for use on web overlay index pageopen in new window. Folder is considered an overlay if it is contained somewhere in Files\Web\overlays and it has index.html file.

settingsopen in new window

All StreamCompanion settings