Skip to main content
POST
/
api
/
v1
/
monitors
Create monitor
curl --request POST \
  --url https://developer.thehog.ai/api/v1/monitors \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Key: <api-key>' \
  --header 'X-Secret-Key: <api-key>' \
  --data '
{
  "name": "Competitor mentions",
  "config": {
    "query": "hiring engineers",
    "max_results": 20
  },
  "cadence_minutes": 60,
  "max_results": 10,
  "force_fresh": false,
  "cache_ttl_days": 14,
  "post_url": "<string>"
}
'
{
  "id": "<string>",
  "name": "<string>",
  "config": {},
  "cadence_minutes": 123,
  "last_run_at": "<string>",
  "next_run_at": "<string>",
  "consecutive_failures": 123,
  "created_at": "<string>",
  "updated_at": "<string>"
}

POST /api/v1/monitors

Create a recurring monitor to track keywords, profiles, or posts.
Create a monitor that runs on a schedule to track keywords, profiles, or posts across LinkedIn, X, Reddit, TikTok, Instagram, and the web.

Example

curl -X POST https://developer.thehog.ai/api/v1/monitors \
  -H "X-Access-Key: ak_xxxxxxxxxxxxxxxx" \
  -H "X-Secret-Key: sk_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "Competitor mentions", "type": "reddit_keyword", "config": {"query": "acme"}, "cadence_minutes": 60, "max_results": 10}'

Authorizations

X-Access-Key
string
header
required

The public API key from the Credentials page.

X-Secret-Key
string
header
required

The API secret shown when the credential is created.

Body

application/json
name
string
required

Human-readable name

Example:

"Competitor mentions"

type
enum<string>
required

Monitor type

Available options:
linkedin_keyword,
linkedin_profile,
linkedin_company,
linkedin_post,
instagram_profile,
instagram_post,
x_profile,
x_keyword,
reddit_keyword,
reddit_subreddit,
tiktok_keyword,
tiktok_hashtag,
web_search,
site_search
config
object
required

Type-specific configuration (query, filters, etc.)

Example:
{
  "query": "hiring engineers",
  "max_results": 20
}
cadence_minutes
number
default:60

Cadence in minutes (minimum 60 for scraper-based types: LinkedIn, Instagram, X, Reddit, TikTok; minimum 15 for web)

max_results
number
default:10

Max results per run (1-100)

force_fresh
boolean
default:false

Force fresh scrape bypassing cache

cache_ttl_days
number
default:14

Cache TTL in days for profile/company monitors (1-90)

post_url
string

LinkedIn post URL (required for linkedin_post type)

Response

Monitor created.

id
string
required
name
string
required
type
enum<string>
required
Available options:
linkedin_keyword,
linkedin_profile,
linkedin_company,
linkedin_post,
instagram_profile,
instagram_post,
x_profile,
x_keyword,
reddit_keyword,
reddit_subreddit,
tiktok_keyword,
tiktok_hashtag,
web_search,
site_search
status
enum<string>
required
Available options:
active,
paused,
disabled
config
object
required
cadence_minutes
number
required
last_run_at
string | null
required
next_run_at
string | null
required
consecutive_failures
number
required
created_at
string
required
updated_at
string
required