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.

REST endpoint
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
← Call an HTTP endpoint from a workflow
Next
Use variables →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/Workflows/Recipes/REST endpoint

REST endpoint

The REST Server node opens its own small HTTP server, letting another system call into a workflow directly: useful for a lightweight, ad hoc integration point that doesn't need the full Control API's resource model.

Warning

This node binds to every network interface on the machine, not just localhost. Set a Bearer Token and an appropriate rate limit before relying on it, especially on any network you don't fully control; Buttons doesn't warn you about this in the node itself.

Before you begin#

  • A free port (1024–65535) for this server to use.
  • A plan for at least one Bearer Token, unless this endpoint is genuinely meant to be open.

Configure the server#

  1. Add a REST Server node to your workflow.
  2. Set Port.
  3. Set Rate Limit to an appropriate preset (10, 100, or 1000 requests per minute, or Off).
  4. Open Bearer Tokens and add at least one token. Leaving this empty makes every endpoint open to anyone who can reach the port.
  5. Select Add Endpoint, set its Path and Method (GET or POST), and repeat for each endpoint you need.
Paths must start with /, contain no whitespace or double slashes, and be unique within this node.

Wire an endpoint to your workflow#

  • A GET endpoint gets one input handle on the node: connect a value to it, and that value becomes the response body whenever the endpoint is called.
  • A POST endpoint gets two output handles: one carrying the request body as a value, and one firing an event on every call. The response to a POST is always a bare 200 with no body; there's no way to send a custom status or response body back from a POST endpoint.

Rotate a bearer token without downtime#

Bearer Tokens accepts more than one token, and any of them authenticates a request. Add the new token first, update whatever's calling this endpoint, then remove the old token once nothing depends on it anymore. Tokens here are plain text, not bound to a secret the way HTTP Request's authentication fields are: treat this node's configuration itself as sensitive.

Understand restarts and shutdown#

Changing anything about this node (the port, an endpoint, the rate limit, or the tokens) restarts the whole server, not just the part you changed. Expect a brief moment where the port is unreachable immediately after any edit and after selecting Apply.
Disabling the node stops the server outright. In-flight requests are handled however the underlying server library's own graceful shutdown behaves: Buttons doesn't add any extra draining or force-close logic on top of that.
If the node fails to start (most commonly because the port is already in use), that failure does show up through the normal workflow error indicator, unlike HTTP Request's own call failures; see Troubleshoot a workflow.

If you get stuck#

What you see
What to try
Any request gets rejected as unauthorized.
Confirm the caller is sending one of the tokens currently listed in Bearer Tokens: any request without a matching token is rejected once at least one token is configured.
The node shows a red error border.
The server likely failed to start: check whether the configured port is already in use, possibly by a duplicate of this same node.
A GET endpoint always returns the same value.
Confirm something is actually connected to that endpoint's input handle: it serves whatever value is currently on that handle.
A POST endpoint doesn't return the response you expected.
It can't: POST endpoints always reply with a bare 200 and no body; use the request event to trigger logic, not to shape a custom response.
The server briefly goes offline after a small config change.
That's expected: any change to port, endpoints, rate limit, or tokens restarts the whole server.
You copied this node and now have two on the same port.
Change the port (and tokens, if they should differ) on the copy: pasting a node doesn't regenerate either.

Where to go next#

  • Call an HTTP endpoint from a workflow
  • Choose how another system operates Buttons
  • Troubleshoot a workflow
  • Network ports reference, for how this node's port fits alongside every other port Buttons uses.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful