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