DeckCue
The DeckCue action controls a compatible presentation provider using HTTP or OSC.
Use it to:
- Start a presentation
- Start from the first slide
- Stop a presentation
- Move to the next or previous slide
- Jump to a slide number
- Jump to a named slide
The action runs in the background and is available on iPhone, iPad, and Mac.
Warning: DeckCue commands are sent immediately. A phrase can start, stop, or change a live presentation without additional confirmation.
Requirements
You will need:
- Action Phrase Core or higher
- A compatible DeckCue presentation provider
- HTTP or OSC control enabled in the provider
- Network access between the Action Phrase device and the provider
- A presentation loaded and ready
- A Pair ID and Secret if HTTP authentication is required
The DeckCue action controls the presentation provider. It does not open, load, or select a presentation automatically.
Add the action
- Create or edit a phrase in Action Phrase.
- Add an action.
- Select DeckCue.
- Choose HTTP or OSC as the protocol.
- Enter the host and port of the DeckCue provider.
- Configure HTTP authentication if required.
- Select a command.
- Enter a slide number or name when required.
- Save the phrase.
Choosing a protocol
DeckCue supports HTTP and OSC.
| Protocol | Default port | Transport | Authentication | Best suited for |
|---|---|---|---|---|
| HTTP | 8090 |
HTTP POST | Optional Pair ID and Secret | Reliable commands where the provider returns an HTTP status |
| OSC | 48000 |
OSC over UDP | None | Low-latency control on a trusted local network |
The protocol must match the receiver enabled in the DeckCue provider.
HTTP configuration
Select HTTP to send presentation commands as HTTP POST requests.
| Setting | Description |
|---|---|
| Host | The IP address, hostname, or complete base URL of the DeckCue provider. |
| Port | The DeckCue HTTP port. The default is 8090. |
| Use HTTP Authentication | Signs requests using DeckCue’s Pair ID and Secret authentication. |
| Pair ID | The pairing identifier supplied by the DeckCue provider. |
| Secret | The Base64URL-encoded secret supplied by the provider. |
Example host values include:
192.168.1.50
presentation-mac.local
If Action Phrase and the DeckCue provider run on the same Mac, you can use:
localhost
Do not use localhost from an iPhone, iPad, or another Mac. On those devices, localhost refers to the device itself.
HTTP and HTTPS
When the Host contains no protocol, Action Phrase uses HTTP:
192.168.1.50
This produces requests such as:
http://192.168.1.50:8090/show/next
To use HTTPS, include https:// in the Host:
https://presentation.example.com
If the URL does not contain a port, Action Phrase adds the configured HTTP port.
You can also include the port directly:
https://presentation.example.com:8443
In that case, the port in the URL takes precedence.
The HTTPS certificate must be trusted by the device running Action Phrase.
Base paths
A Host may include a base path:
https://presentation.example.com/deckcue
Action Phrase appends the selected command route to that path:
https://presentation.example.com:8090/deckcue/show/next
Make sure the configured port and base path match the provider.
HTTP authentication
Enable Use HTTP Authentication if the DeckCue provider requires signed requests.
Enter the Pair ID and Secret supplied by the provider. Action Phrase signs each request automatically using:
- The HTTP method
- The request path
- A hash of the request body
- The current timestamp
- A unique nonce
- The shared secret
The following headers are generated automatically:
X-DeckCue-Pair-ID
X-DeckCue-Timestamp
X-DeckCue-Nonce
X-DeckCue-Signature
Do not manually generate these values.
Security: HTTP authentication verifies the request but does not encrypt the network traffic. Use HTTPS if commands travel over an untrusted network.
Pair ID
The Pair ID identifies the Action Phrase installation or pairing record to the provider.
Copy it exactly as supplied, including capitalization, underscores, or prefixes.
Secret
The Secret is the shared signing key.
Copy it exactly as supplied by the provider. It must contain valid Base64URL-encoded data.
If the Secret is missing or invalid, Action Phrase does not send the request.
Security: Treat the Secret like a password. Do not include it in screenshots, shared configuration files, or public documentation.
Device time
Authenticated requests contain a Unix timestamp. If the clocks on the Action Phrase device and provider differ significantly, the provider may reject the request.
Keep automatic date and time enabled on both devices.
OSC configuration
Select OSC to send DeckCue commands over UDP.
| Setting | Description |
|---|---|
| Host | The IP address or hostname of the DeckCue OSC receiver. |
| Port | The OSC listening port. The default is 48000. |
Enter the host without http:// or https://.
For example:
192.168.1.50
OSC messages are sent over UDP. The provider does not return an acknowledgement to Action Phrase.
Security: OSC commands are not authenticated or encrypted. Use OSC only on a trusted network.
Commands
| Command | Additional parameter | Description |
|---|---|---|
| Start Presentation | None | Starts the presentation using its current or default starting position. |
| Start from First Slide | None | Starts the presentation explicitly from the beginning. |
| Stop Presentation | None | Stops the active presentation. |
| Next Slide | None | Advances to the next slide. |
| Previous Slide | None | Returns to the previous slide. |
| Go to Slide Number | Slide Number | Jumps to a numbered slide. |
| Go to Named Slide | Slide Name | Jumps to a slide identified by name. |
Start Presentation
Start Presentation sends a start command without requesting that the provider return to the beginning.
HTTP request:
POST /start
OSC message:
/start
No OSC argument is included.
The exact starting behavior depends on the presentation provider. It may start from the current slide or use the provider’s default presentation behavior.
Start from First Slide
Start from First Slide uses the same /start route but includes a value indicating that the presentation should begin from the first slide.
HTTP request:
POST /start
HTTP body:
{
"fromBeginning": true
}
OSC message:
/start
OSC argument:
1
The OSC argument is sent as an integer.
Stop Presentation
HTTP request:
POST /stop
OSC message:
/stop
No body or OSC argument is included.
Next Slide
HTTP request:
POST /show/next
OSC message:
/show/next
No body or OSC argument is included.
Previous Slide
HTTP request:
POST /show/previous
OSC message:
/show/previous
No body or OSC argument is included.
Go to Slide Number
Enter a positive number in Slide Number.
Valid examples include:
1
12
Slide numbers must be 1 or greater. If the value is empty, zero, negative, or not a whole number, Action Phrase does not send the command.
HTTP request:
POST /goto/slide/number
HTTP body:
{
"number": 12
}
OSC message:
/goto/slide/number
The slide number is sent as an integer OSC argument.
Go to Named Slide
Enter the target name in Slide Name.
For example:
Introduction
HTTP request:
POST /goto/slide/named
HTTP body:
{
"name": "Introduction"
}
OSC message:
/goto/slide/named
The slide name is sent as a string OSC argument.
Slide-name matching is performed by the DeckCue provider. Depending on its implementation, names may be case-sensitive and may need to match exactly.
If the name is empty, Action Phrase does not send the command.
Command reference
| Command | HTTP route | HTTP body | OSC address | OSC argument |
|---|---|---|---|---|
| Start Presentation | /start |
None | /start |
None |
| Start from First Slide | /start |
{"fromBeginning":true} |
/start |
Integer 1 |
| Stop Presentation | /stop |
None | /stop |
None |
| Next Slide | /show/next |
None | /show/next |
None |
| Previous Slide | /show/previous |
None | /show/previous |
None |
| Go to Slide Number | /goto/slide/number |
{"number":12} |
/goto/slide/number |
Integer |
| Go to Named Slide | /goto/slide/named |
{"name":"Introduction"} |
/goto/slide/named |
String |
All HTTP commands use the POST method and the JSON content type.
Variables
The Slide Number and Slide Name fields support Action Phrase variables using double braces:
{{variableName}}
For example:
{{targetSlide}}
Or:
Section {{sectionName}}
Variables are resolved when the phrase runs.
Dynamic slide number
Configure Go to Slide Number with:
{{slideNumber}}
If slideNumber resolves to 8, Action Phrase sends slide number 8.
The resolved value must be a positive whole number.
Dynamic slide name
Configure Go to Named Slide with:
{{slideName}}
If slideName resolves to Questions, the provider receives:
{
"name": "Questions"
}
The protocol and command selectors cannot be replaced with template variables.
Pair IDs and Secrets also do not support template variables.
Switching protocols dynamically
The DeckCue protocol can be overridden using an action argument.
This allows an advanced phrase or workflow to choose between:
http
and:
osc
The corresponding HTTP or OSC connection settings must already be configured in the action.
For most installations, selecting a fixed protocol is simpler and more predictable.
Multiple DeckCue providers
Create a separate DeckCue action for each provider or presentation computer.
For example:
| Action | Host | Purpose |
|---|---|---|
| Main Presentation Next | 192.168.1.50 |
Controls the main presentation |
| Confidence Monitor Next | 192.168.1.51 |
Controls a secondary presentation |
| Backup Presentation Start | 192.168.1.52 |
Starts the backup system |
Using separate actions prevents a phrase from accidentally controlling the wrong presentation.
Network configuration
The Action Phrase device must be able to reach the DeckCue provider.
Confirm that:
- Both devices are on the same network or have a valid routed connection.
- The provider is listening on the configured port.
- The computer firewall permits incoming traffic.
- TCP traffic is allowed for HTTP.
- UDP traffic is allowed for OSC.
- Client isolation is disabled on the Wi-Fi network.
- The provider’s IP address has not changed.
For production systems, assign the provider a static IP address or a stable local hostname.
Test the connection
The DeckCue action does not currently include a separate Test Connection button.
To test safely:
- Load a test presentation.
- Confirm that HTTP or OSC control is enabled in the provider.
- Create a DeckCue action using Next Slide.
- Trigger the phrase.
- Confirm that the presentation advances.
- Test Previous Slide to return to the original slide.
Avoid testing Start Presentation or Stop Presentation against a live presentation.
Testing HTTP
If authentication is disabled, you can test the Next Slide endpoint from a terminal:
curl -X POST http://HOST:8090/show/next
If authentication is enabled, use the DeckCue action so that Action Phrase generates the required timestamp, nonce, and signature headers.
Testing OSC
Use the OSC protocol and trigger Next Slide while watching the provider.
Because OSC uses UDP, Action Phrase cannot confirm that the provider received the message.
HTTP responses
The DeckCue action sends the HTTP request but does not expose the response body as an Action Phrase variable.
The presentation provider’s interface is the best way to confirm that a command succeeded.
OSC delivery
OSC is connectionless and does not provide delivery confirmation.
A message may be lost if:
- The network is congested
- Wi-Fi is unstable
- The destination host is unavailable
- The UDP port is blocked
- The provider is not listening
For critical commands, HTTP may provide more predictable error handling than OSC.
Custom DeckCue commands
The DeckCue action provides only its built-in command list.
To send an unsupported HTTP endpoint, use Action Phrase’s Web Request action.
To send an unsupported OSC address, use the general OSC action.
When using a general Web Request, DeckCue’s Pair ID and Secret headers are not generated automatically. Authenticated DeckCue HTTP commands should therefore use the dedicated DeckCue action.
Troubleshooting
Nothing happens when the phrase runs
Confirm that:
- The DeckCue provider is running.
- A presentation is loaded.
- Remote control is enabled.
- The selected protocol matches the provider.
- The host and port are correct.
- The firewall allows the required traffic.
- The Action Phrase device can reach the provider.
- The command has been selected.
The action works on the Mac but not on an iPhone or iPad
Do not use:
localhost
or:
127.0.0.1
unless the provider runs on the same device as Action Phrase.
Use the presentation computer’s network address instead:
192.168.1.50
Also confirm that Action Phrase has permission to access devices on the local network.
HTTP authentication fails
Check that:
- Use HTTP Authentication matches the provider’s configuration.
- The Pair ID is correct.
- The Secret was copied completely.
- The Secret is valid Base64URL data.
- The clocks on both devices are accurate.
- The request is being sent to the correct path.
- A reverse proxy is not rewriting the command path.
If the Host includes a base path, that base path becomes part of the signed request.
The provider reports an invalid signature
Common causes include:
- An incorrect Secret
- An incorrect Pair ID
- Clock drift
- A proxy changing the request path
- An extra or missing base path
- Credentials copied from a different pairing
- The provider expecting authentication while it is disabled in Action Phrase
Generate or copy a new pairing from the provider and update both fields together.
HTTPS fails
Confirm that:
- The Host begins with
https://. - The port is correct.
- The certificate is valid.
- The certificate hostname matches the Host.
- The certificate is trusted by the Action Phrase device.
If the Host does not contain a protocol, Action Phrase uses HTTP.
OSC commands are not received
Confirm that:
- The provider is listening for OSC.
- The OSC port is correct.
- UDP traffic is permitted by the firewall.
- The Host does not include
http://orhttps://. - The sender and receiver are on networks that allow UDP traffic.
- The provider expects the documented OSC addresses and argument types.
Go to Slide Number does nothing
The slide number must resolve to a positive whole number.
These values are invalid:
0
-1
3.5
Slide 3
Use:
3
Go to Named Slide does nothing
Confirm that:
- The slide has a name in the presentation provider.
- The name matches exactly.
- The variable resolves to a non-empty value.
- There are no unintended leading or trailing spaces.
- The provider supports named-slide navigation.
Start Presentation begins on the wrong slide
Use Start from First Slide when the presentation must always begin at slide one.
Start Presentation allows the provider to use its current or default starting position.