Advanced
Here you will be explained all the neat tricks and quirks for Secured Signal API
placeholders
Placeholders do exactly what you think they do: They replace actual values. These can be especially helpful when managing variables across multiple services.
How to Use
| Scope | Example |
|---|---|
| Body | {{@data.key}} |
Header (except Authorization) | {{#Content_Type}} |
| Variable | {{.VAR}} |
Formatting rules (capitalization, escaping, and typing) are defined in Formatting
Where to Use
| Scope | Example |
|---|---|
| Body | {"number": "{{ .NUMBER }}", "recipients": "{{ .RECIPIENTS }}"} |
| Query | http://sec-signal-api:8880/v1/receive/?@number={{.NUMBER}} |
| Path | http://sec-signal-api:8880/v1/receive/{{.NUMBER}} |
Combine them:
"message": "{{.NUMBER}} -> {{.RECIPIENTS}}"
Mix and match:
"message": "{{#X_Forwarded_For}} just send from {{.NUMBER}}"
Placeholders follow strict formatting rules (See Formatting)
URL-to-Body Injection
Sounds scary… but it really isn't. 🫣
URL-to-Body Injection is a powerful feature designed for restricted or inflexible environments.
In some setups, webhook configuration is extremely limited. For example, you may only be able to define a webhook URL, without any control over the request body. This becomes a problem when every receiving service is expected to support the Signal CLI REST API format. In such cases, using a simple, generic webhook is not possible.
URL-to-Body Injection solves this by allowing you to inject values directly into the request body via query parameters or seperated path parameters.
http://sec-signal-api:8880/@key2=value2/?@key=value
- Supported value types include strings, integers, arrays, and JSON objects
- See Formatting for details on supported structures and syntax
Supported placeholder types:
. Variables | @ Body | # Headers |
|---|---|---|
| ❌ | ✅ | ❌ |