Quickstart | Gibeon

Quickstart

From an empty terminal to a published change in five steps. Every snippet here works against your real tenant — no sandbox, no toy keys.

1. Create an API key

Open the CMS, go to Settings → API, click New key, name it (e.g. laptop-quickstart), and copy the gib_live_… value. It is shown once; after that we keep only the SHA-256 hash. Revoke any key from the same screen — revocation is immediate.

2. Drop it in your environment

export GIBEON_API_KEY=gib_live_xxxxxxxxxxxxxxxxxxxxxxxx

Every request goes to https://api.gibeon.io/v1 as Authorization: Bearer $GIBEON_API_KEY. The same key works for the hosted MCP at https://api.gibeon.io/mcp.

3. List your players

Get the screens in your tenant and their online state.

curl https://api.gibeon.io/v1/players \
  -H "Authorization: Bearer $GIBEON_API_KEY"

The Node/Deno equivalent:

const res = await fetch('https://api.gibeon.io/v1/players', {
  headers: { Authorization: `Bearer ${process.env.GIBEON_API_KEY}` },
})
const { data } = await res.json()
console.log(`${data.length} screens, ${data.filter(p => p.status === 'online').length} online`)

Pick one and grab its id — you will use it in the next step.

4. Reassign content + publish

Point a screen at a different playlist. The PATCH responds with publish_required: true for content-changing fields — until you publish, the player keeps showing the old assignment.

curl -X PATCH https://api.gibeon.io/v1/players/<player_id> \
  -H "Authorization: Bearer $GIBEON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "playlist_id": "<playlist_id>" }'

curl -X POST https://api.gibeon.io/v1/players/<player_id>/publish \
  -H "Authorization: Bearer $GIBEON_API_KEY"

The player picks up the new snapshot on its next heartbeat — typically within 10 seconds. Publish a single screen via /v1/players/<id>/publish or every screen in the tenant via /v1/players/publish.

5. Hook up an AI agent (MCP)

Paste this into your MCP host config to expose the 13 Gibeon tools to Claude Desktop, Claude Code, or Cursor:

{
  "mcpServers": {
    "gibeon": {
      "url": "https://api.gibeon.io/mcp",
      "headers": {
        "Authorization": "Bearer gib_live_xxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Restart your client. Ask it "how many screens are online in my Gibeon tenant?" — the agent will call list_players and report back. Same auth surface, no separate install.

What's next

Hit a rough edge? The repo is private during the dev-portal launch — for now, mail [email protected] and we will fix it in the same day where we can.