Bitfocus AS
logo
logo
Bitfocus AS
logo
logo
Sign upSign in

Loading...

Bitfocus

Subscribe to our newsletter

The latest news, articles, and resources, sent to your inbox.

FacebookInstagramGitHubYouTubeLinkedIn

Products

  • Buttons
  • Companion

Integrations

  • Supported Devices
  • Developer Community
  • Connection Development

Support

  • Support Overview
  • Documentation
  • Video Tutorials
  • Community Forum

Sales

  • Resellers & Integrators
  • Buttons Pricing

Updates

  • Case Studies
  • Events & Trade Shows
  • Press Releases
  • Product Updates
  • Webinars

Legal

  • Legal Overview
  • Privacy Policy
  • Buttons EULA
  • Terms & Cookie Policy

Company

  • About us
  • Press kit
  • Careers

© 2026 Bitfocus AS. All rights reserved.

Get started with the Control API
Docs for
Overview
Getting started
What is Bitfocus Buttons?
Install Buttons and get started
Manage your Buttons license
Activate Buttons offline
Find your way around Buttons
Create your first backup
Add an ATEM connection
Choose a control method
Choose an installation path
Install Buttons on Debian or Ubuntu
Understand HA clustering
Kubernetes HA
Update or remove Buttons
Positions
Understand positions
Create a position
Add controls and sections to a position
Create your first button
Use a connection's presets
Build more capable button actions
Add more feedback to a button
Organize controls in a section
Shift Section
Organize controls with a Folder Section
Add a Popover Section
Build and reuse a Shared Section
Build a Router Section
Understand Custom Routers
Custom Router panel
Surfaces
Surface compatibility
Add and attach a surface
Device orientation
Connections
Update a connection's module safely
Monitor and troubleshoot a connection
Router integrations
VideoHub and AJA KUMO
Utah Scientific BPS
Generic SW-P-08
Nevion VideoIPath
Arkona BLADE//runner
Routing
Physical routing
Configure ports and labels
Take a physical route
Understand route status
Topology graph
Routing Presets
Get started with virtual routing
Configure Nested Shapes
Reverse routing
Tielines
Routing Projects
Routing settings
Troubleshoot a route
Tally
Understand the Tally system
Send ATEM tally and labels to a UMD
Interpret Active Tally state
TSL/UMD connections
Diagnose tally problems
NMOS
Understand NMOS in Buttons
Connect Buttons to an NMOS Registry
Built-in Registry Server
Configure NMOS connections
Discover and adopt
Browse the NMOS inventory
Manage NMOS multicast addresses
Diagnose NMOS problems
Understand Cuelists
Build a Cuelist
Read and advance a running Cuelist
Control a Cuelist from a Position
Workflows
Understand workflows
Build your first workflow
Reuse a group of workflow nodes safely
Troubleshoot a workflow
Recipes
Sequence a timed automation
Call an HTTP endpoint from a workflow
REST endpoint
Use variables
Understand variable scope
Understand nested variables
Update expressions for v1.8
Plan and use Tags
Access
Create and manage users
Create roles and assign permissions
Grant access to specific resources
Show different controls by role
Sessions
Set up PIN and NFC sign-in
SSO
Get started with SSO
Connect a generic OIDC provider
Connect LDAP or Active Directory
Map identity claims to roles
Secure a Buttons deployment
Integrations
External control
Connect to Bitfocus Listener
USB Relay
Install USB Relay on Windows
Install USB Relay on macOS
Install USB Relay on Linux
Install USB Relay on a Raspberry Pi
Get started with the Control API
Secure and monitor the Control API
Control API reference
API reference
Administration
Enable and manage installable features
Services and health
Configure and monitor scheduled backups
Restore a backup and verify it
Export or import Buttons configuration
Store and rotate connection secrets
Replace the HTTPS certificate
HA backup and recovery
Settings
Collect support information
Reference
Glossary
Button Inspector reference
Network ports reference
Expressions
Internal actions reference
Routing Presets panel reference
Startup configuration reference
Workflow nodes
Connection workflow nodes
Workflow workflow nodes
Internal workflow nodes
Position workflow nodes
API workflow nodes
Utility workflow nodes

Loading...

Previous
← Install USB Relay on a Raspberry Pi
Next
Secure and monitor the Control API →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/API/Get started with the Control API

Get started with the Control API

The Control API can help you drive Buttons from your own scripts, show-control systems, or automation tools: using the same underlying capabilities the web interface uses, scoped to exactly what that integration needs and nothing more. This guide creates a scoped key, makes a first request with it, confirms it in the request log, and revokes it when you're done testing.

Warning

Never embed a real API key in a script you share, commit to source control, or paste into a support request. Anyone holding the key has whatever access you granted it.

Before you begin#

You need:
  • Access to Settings → API.
  • A resource you can safely make a harmless, read-only request against first.

Create a scoped API key#

  1. Open Settings → API.
  2. Select Create API Key.
  3. Enter an API key name, such as Broadcast Automation, and an optional description.
  4. Select Next to open Set Permissions.
  5. Select only the specific permissions this integration actually needs: you can only grant permissions you already hold yourself, and you can change this later without creating a new key.
  6. Select Create.
The key's actual value is shown exactly once, with a reminder that this token will only be shown once. Copy it now. Afterward, only its prefix stays visible for identification, not the full value.

Make a first request#

Use a read-only request first, so a mistake can't change anything:
GET /control/<domain>/v1/...
Authorization: Bearer <your key>
Replace <domain> with the area you're working with: for example, a request scoped to surfaces lives under /control/surface/v1/.... A valid key with insufficient permission for that request returns 401 Unauthorized; the same status covers a missing or malformed key.
The full request and response shapes are documented at /control/docs, generated directly from the running system rather than maintained by hand: check there for the exact endpoints, parameters, and schemas available to your version of Buttons.

Inspect activity#

Open Settings → API and select API Docs, or open the key's own detail view to see Last used. For a live view of requests as they happen, open the Control API Requests log: each entry shows the client address, method, path, and status code for every request made through the API, across all keys.

Revoke the key#

  1. Open the key's detail view, or select it from the list.
  2. Select Revoke key (or Revoke from a multi-select).
  3. Confirm: revocation cannot be undone, and it takes effect immediately. Any request using this key afterward fails with 401 Unauthorized, reported as the key having been revoked.

If you get stuck#

What you see
What to try
Every request returns 401.
Confirm the Authorization: Bearer <key> header is present and the key hasn't been revoked.
A request succeeds against one endpoint but fails against another.
The key is likely missing a specific permission: open Set Permissions on the key and add only what the failing request needs.
You can't grant a permission you expected to be available.
You can only grant permissions your own account already holds: confirm your own access covers it first.
Requests start failing with 429.
You've hit the system-wide rate limit, see Secure and monitor the Control API.

Where to go next#

  • Secure and monitor the Control API, for permissions, rate limits, and responding to misuse.
  • Control API reference, for the full endpoint list, schemas, and versioning policy.
  • Choose how another system operates Buttons, if you're not sure the Control API is the right interface for what you're building.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful