Developer API
One HTTP request per event. Medal handles the recording, editor, and share links. Content creators get more gameplay to work with, and every casual player becomes a marketer when they share clips with friends.
No SDK. No plugin. Define your events, fire an HTTP request when they happen, and Medal captures the highlight on the player's machine.
Pick the moments your players care about (kills, wins, combos, rare drops) and decide how long each clip runs and how long to wait before saving.
When an event happens, send a POST to Medal’s local API on the player’s machine. Any language, any engine. No SDK to integrate, no plugin to ship.
Medal grabs the configured duration of replay, names the clip with your event name, and drops it into the player’s library, ready to edit, share, or post.
Walk through the steps below. By the end you'll have a public key, a list of clip-worthy events, and a copy-paste curl request for each one.
Enter your Medal username so we know who's requesting access. This is the account that'll receive the test build.
Don't have one? Create an account
Pick your game from Medal's supported list, then name the app you're building. Medal uses this to attribute clips back to your game.
Don't see your game? Request your game be added
This is the identifier Medal uses to recognize your events. Send it on every request as the publicKey header.
Pick a game and fill out App name and App URL in Step 2 to enable.
Each event gets an auto-assigned ID (1, 2, 3…). Add the events most worth clipping in your game. Players will toggle individual events on or off inside Medal's settings, so it pays to define more than you think you need.
| ID | Event name | Duration (s) | Delay (s) | Default on | |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | |||||
| 3 | |||||
| 4 |
Send us your username, key, and event list. The Medal recorder team will build you a custom version of the app wired up to your events, and we'll share your sample requests below so you can test end-to-end as soon as it's ready.
Single endpoint. JSON body. Runs on the player's machine, so latency is effectively zero.
Endpoint
http://localhost:12665/api/v1/event/invokeThe request runs on the player's own machine. Medal listens on the local loopback. Send the request from your game client, server-side relay, or anti-cheat hook, whichever fits your stack.
Headers
Content-Type: application/json; charset=utf-8publicKey: the key you generated aboveBody parameters
| Field | Type | Required | Description |
|---|---|---|---|
| eventId | string | Yes | The numeric ID you assigned to this event (e.g. "1"). Lets players toggle individual events on or off inside Medal. |
| eventName | string | Yes | Display name used to label the clip card in Medal (e.g. "Triple Kill"). |
| triggerActions | string[] | Yes | Actions Medal should perform. Use ["SaveClip"] to record and save a highlight. |
| clipOptions.duration | number | Yes | Length of the saved clip in seconds. Typical range is 15–60. |
| clipOptions.captureDelayMs | number | No | Milliseconds Medal waits after the request before snapshotting the replay buffer. Useful for catching killcams or post-action moments. |
Response
200 OK when Medal accepted the event. The clip itself is processed asynchronously and shows up in the player's library after the configured duration elapses.
401 Unauthorized means the publicKey header is missing or unrecognized. 400 Bad Request means a required field is missing or malformed.
Once your build ships, here's what Medal handles for your players automatically.
Medal saves the configured replay window the moment your event fires, with the eventName as the clip title.
Players control which of your events get clipped via Settings → Auto Clipping. They never lose a key moment, and they don’t get spammed by ones they don’t care about.
Clips open in Medal’s editor for quick trims, then share to Discord, TikTok, Reddit, or anywhere with a single link.
Start with the event builder above. When you're ready, submit your config and the Medal recorder team will wire it into a custom test build for you.
Open the builder