Workflow Examples
Common integration patterns for using signals, insights, events, and headlines in a discretionary process — from quick watchlist scans to app integrations and notifications.
Discretionary traders typically use the API in one of three ways: a quick morning scan across a watchlist, an application that surfaces signals and insights to traders in real time, or a notification system that fires when something notable happens. The patterns below show how each of these looks in practice. Full end-to-end examples are in the Recipes section.
Get the latest signals for a watchlist
Pull signals across multiple tickers at once for a fast directional read across your watchlist. This is the most common starting point — scan the whole list in a single request, then drill into the tickers that have a strong signal.
curl "https://copilot-api.permutable.ai/v1/signals?tickers=BZ_COM&tickers=QO_COM&tickers=NG_COM" \
-H "x-api-key: $PERMUTABLE_API_KEY"Invoke-RestMethod `
-Uri "https://copilot-api.permutable.ai/v1/signals?tickers=BZ_COM&tickers=QO_COM&tickers=NG_COM" `
-Headers @{ "x-api-key" = $env:PERMUTABLE_API_KEY }import os, requests
resp = requests.get(
"https://copilot-api.permutable.ai/v1/signals",
headers={"x-api-key": os.environ["PERMUTABLE_API_KEY"]},
params={"tickers": ["BZ_COM", "QO_COM", "NG_COM"]},
)
print(resp.json())Get the latest insight for a ticker
Pull a weekly narrative summary to understand what has been driving sentiment for a specific asset. Use this after spotting a strong signal — the insight gives you the context behind it.
curl "https://copilot-api.permutable.ai/v1/insights/analyst/BZ_COM?analyst_type=weekly" \
-H "x-api-key: $PERMUTABLE_API_KEY"Invoke-RestMethod `
-Uri "https://copilot-api.permutable.ai/v1/insights/analyst/BZ_COM?analyst_type=weekly" `
-Headers @{ "x-api-key" = $env:PERMUTABLE_API_KEY }import os, requests
resp = requests.get(
"https://copilot-api.permutable.ai/v1/insights/analyst/BZ_COM",
headers={"x-api-key": os.environ["PERMUTABLE_API_KEY"]},
params={"analyst_type": "weekly"},
)
print(resp.json())Get the latest events for a ticker
Pull recent structured events to see the discrete catalysts behind a move. Events are cleaner to scan than raw headlines — each one is a labelled, directional record of something that actually happened.
curl "https://copilot-api.permutable.ai/v1/events/feed/live/ticker/BZ_COM" \
-H "x-api-key: $PERMUTABLE_API_KEY"Invoke-RestMethod `
-Uri "https://copilot-api.permutable.ai/v1/events/feed/live/ticker/BZ_COM" `
-Headers @{ "x-api-key" = $env:PERMUTABLE_API_KEY }import os, requests
resp = requests.get(
"https://copilot-api.permutable.ai/v1/events/feed/live/ticker/BZ_COM",
headers={"x-api-key": os.environ["PERMUTABLE_API_KEY"]},
)
print(resp.json())Get live headlines for a ticker
Poll the live headlines feed to monitor breaking news for an asset you are actively watching. Each headline carries a sentiment score and topic classification so you can filter for what matters.
curl "https://copilot-api.permutable.ai/v1/headlines/feed/live/ticker/BZ_COM" \
-H "x-api-key: $PERMUTABLE_API_KEY"Invoke-RestMethod `
-Uri "https://copilot-api.permutable.ai/v1/headlines/feed/live/ticker/BZ_COM" `
-Headers @{ "x-api-key" = $env:PERMUTABLE_API_KEY }import os, requests
resp = requests.get(
"https://copilot-api.permutable.ai/v1/headlines/feed/live/ticker/BZ_COM",
headers={"x-api-key": os.environ["PERMUTABLE_API_KEY"]},
)
print(resp.json())Integrate signals into an application
If you are building a trading dashboard or internal tool, the typical pattern is to fetch signals on page load and surface the directional view alongside the insight narrative. The snippet below shows the API calls you would make server-side — fetch signals for the watchlist first, then fetch the insight for whichever ticker the user selects. The Next.js Signal Dashboard recipe shows a complete working implementation of this pattern.
import os, requests
HEADERS = {"x-api-key": os.environ["PERMUTABLE_API_KEY"]}
# Step 1 — load the watchlist view
signals_resp = requests.get(
"https://copilot-api.permutable.ai/v1/signals",
headers=HEADERS,
params={"tickers": ["BZ_COM", "QO_COM", "NG_COM"]},
)
signals = signals_resp.json()["signals"]
# Step 2 — on ticker selection, load the insight
selected = signals[0]["ticker"]
insight_resp = requests.get(
f"https://copilot-api.permutable.ai/v1/insights/analyst/{selected}",
headers=HEADERS,
params={"analyst_type": "weekly"},
)
print(insight_resp.json()["summary"])Set up a signal alert notification
A common pattern is to run a scheduled job that polls signals and fires a notification when a strong signal appears. The snippet below checks for any BUY signal with confidence above 0.8 and sends a Slack message. Run this on a cron schedule (e.g. every 15 minutes) to stay on top of new signals without watching the screen.
import os, requests
HEADERS = {"x-api-key": os.environ["PERMUTABLE_API_KEY"]}
SLACK_WEBHOOK = os.environ["SLACK_WEBHOOK_URL"]
resp = requests.get(
"https://copilot-api.permutable.ai/v1/signals",
headers=HEADERS,
params={"tickers": ["BZ_COM", "QO_COM", "NG_COM"]},
)
for signal in resp.json()["signals"]:
if signal["decision"] == "BUY" and signal["confidence"] >= 0.8:
requests.post(SLACK_WEBHOOK, json={
"text": f"Signal alert: {signal['ticker']} — {signal['decision']} "
f"(confidence {signal['confidence']:.0%})\n{signal['reason']}"
})Next steps
- API Reference — full parameter details for all discretionary endpoints
- Next.js Signal Dashboard — end-to-end recipe: signals and insights in a Next.js app
- Recipes — all end-to-end worked examples
Updated 5 days ago
