Skip to main content
This guide walks through two real-world scenarios. Every code block is ready to copy, paste, and run — just replace YOUR_API_KEY with your actual key.

Scenario: Monitor when OpenAI posts new jobs

You want to know immediately when OpenAI posts job openings — and automatically get contact details for their engineering leadership.

Create the monitor

curl -X POST https://api.pubrio.com/monitors/create \
  -H "Content-Type: application/json" \
  -H "pubrio-api-key: YOUR_API_KEY" \
  -d '{
    "name": "OpenAI Job Tracker",
    "detection_mode": "company_first",
    "signal_types": ["jobs"],
    "signal_filters": [
      {
        "signal_type": "jobs",
        "filters": {
          "locations": ["US"]
        }
      }
    ],
    "companies": [
      "67c4696b-b7b0-46b5-b2af-9f434543661e"
    ],
    "is_company_enrichment": true,
    "is_people_enrichment": true,
    "people_enrichment_configs": [
      {
        "max_people_to_return": 5,
        "people_contact_types": ["email-work"],
        "filters": {
          "management_levels": ["director", "vp"],
          "departments": ["master_engineering"]
        }
      }
    ],
    "destination_type": "webhook",
    "destination_config": {
      "webhook_url": "https://usewebhook.com/YOUR_WEBHOOK_ID",
      "headers": {
        "Authorization": "Bearer your-secret-token"
      }
    },
    "max_records_per_trigger": 5,
    "profile_id": 1
  }'
What this does:
  • Monitors OpenAI (companies: ["67c4696b-..."]) for new US-based job postings
  • Enriches company data and finds up to 5 Director/VP-level Engineering contacts
  • Delivers up to 5 records per trigger to your webhook
  • All other settings use sensible defaults (real-time frequency, 500 daily cap, etc.)
For company_first mode, you typically only need companies (or domains / linkedin_urls) and signal filters. company_filters is optional — it adds a second filtering layer when you want to combine a watch list with broader company criteria.

Test it immediately

Do not wait for the scheduled scan — trigger a manual run to verify everything works. Include tried_at with a past timestamp to ensure there is data available (using the current time may return 0 results if no new signals have appeared yet):
curl -X POST https://api.pubrio.com/monitors/process/try \
  -H "Content-Type: application/json" \
  -H "pubrio-api-key: YOUR_API_KEY" \
  -d '{
    "monitor_id": "YOUR_MONITOR_ID",
    "tried_at": "2026-01-01T00:00:00.000Z",
    "profile_id": 1
  }'
Manual triggers consume credits just like scheduled triggers. Use tried_at with a recent past date to get a representative sample of results for testing.

Check the results

After a few seconds, check your webhook URL at usewebhook.com to see the payload. You can also verify via the logs:
curl -X POST https://api.pubrio.com/monitors/statistics/logs \
  -H "Content-Type: application/json" \
  -H "pubrio-api-key: YOUR_API_KEY" \
  -d '{
    "profile_id": 1,
    "monitor_id": "YOUR_MONITOR_ID",
    "page": 1,
    "per_page": 5
  }'
Each log entry shows the status, signal/company/people counts, credit usage, and processing time.

Retrying a Failed Delivery

If a specific trigger failed (e.g., your webhook was temporarily down), retry it without re-running the entire scan:
curl -X POST https://api.pubrio.com/monitors/process/retry \
  -H "Content-Type: application/json" \
  -H "pubrio-api-key: YOUR_API_KEY" \
  -d '{
    "monitor_id": "YOUR_MONITOR_ID",
    "monitor_log_id": "THE_FAILED_LOG_ID",
    "profile_id": 1
  }'
Find the monitor_log_id by querying Statistic Logs and filtering for entries with "status": "failed".

Next Steps

Best Practices

Frequency, credits, retries, and scaling.

Webhook Setup

Detailed webhook configuration and signature verification.