lama
lytic

docs

explore new game

the api is one url

https://lamalytic.xyz/g/YOURGAME/event?session=player_id&event=level_start&lvl=1

session — your player id (required, 1–128 chars)
event — what happened, e.g. tutorial_done (required, 1–80 chars)
ts — game timestamp (optional, 10–13 digit epoch; server time used if absent)
anything else — custom data, e.g. lvl, attempt, score (up to 24 extra fields, max 200 chars each)

snippets

define once
let sessionId = Math.random().toString(36).slice(2);

function fire(event, extra = {}) {
  const params = new URLSearchParams({ session: sessionId, event, ...extra });
  fetch("https://lamalytic.xyz/g/YOURGAME/event?" + params);
}
fire anywhere
fire("level_start", { lvl: 1 });
define once
using UnityEngine.Networking;

static string sessionId = System.Guid.NewGuid().ToString().Substring(0, 8);

public static void Fire(string eventName, params string[] kv) {
    string u = "https://lamalytic.xyz/g/YOURGAME/event?session=" + sessionId + "&event=" + eventName;
    for (int i = 0; i < kv.Length; i += 2) u += "&" + kv[i] + "=" + kv[i + 1];
    UnityWebRequest.Get(u).SendWebRequest();
}
fire anywhere
Fire("level_start", "lvl", "1");
define once
var session_id = str(randi()).substr(0, 8)

func fire(event_name: String, extra: Dictionary = {}) -> void:
    var u := "https://lamalytic.xyz/g/YOURGAME/event?session=" + session_id + "&event=" + event_name
    for key in extra:
        u += "&%s=%s" % [key, str(extra[key])]
    var http := HTTPRequest.new()
    add_child(http)
    http.request(u)
fire anywhere
fire("level_start", {"lvl": 1})

test with curl

curl "https://lamalytic.xyz/g/YOURGAME/event?session=test&event=hello&lvl=1"
curl -X POST "https://lamalytic.xyz/g/YOURGAME/event" \
  -H "Content-Type: application/json" \
  -d '{"session":"test","event":"level_done","props":{"lvl":1,"score":1200}}'

rate limit — 120 events per minute per IP per game.
export — CSV and JSON exports available from the admin page.
privacy — only anonymous session ids, event names and timestamps are stored. No IPs, no personal data.