Developers

REST API reference

Everything you can do in Huginnova, you can do over the API: 79 endpoints across 20 modules (51 reads, 28 writes). The same data is available to AI agents through our MCP server, and as flat tables for Power BI and Looker Studio.

Basics

Base URL http://localhost:3000/api/v1. Create keys in Integrations & API. Send them as Authorization: Bearer <key>. Full-access keys (hgn_live_…) can read and change data; read-only keys (hgn_read_…) can only read, and may also be passed as ?key= on GET requests for BI tools that can't send headers.

Responses are JSON: { "data": … } on success, { "error": { "code", "message" } } otherwise (400 invalid request, 401 bad key, 402 no active plan, 403 plan limit or read-only key, 404 not found, 429 rate limited). Rates are fractions (0.42 = 42%) with 95% confidence bounds as low/high. Lists page with limit and offset. Limit: 120 requests per minute per key.

Engines: chatgpt, perplexity, gemini, google_aio, google_ai_mode, claude. MCP: point Claude, Cursor or any MCP client at http://localhost:3000/api/mcp with the same key (MCP guide). Webhooks: see Integrations.

Workspace

Plan, limits and usage.

get/workspace

Get workspace, plan, limits and usage

curl "http://localhost:3000/api/v1/workspace" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Projects

Brands (projects): settings, market, engines and sampling.

get/projects

List projects

curl "http://localhost:3000/api/v1/projects" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projectsfull-access keyuses credits

Create a project

Creates a brand with competitors and prompts and starts its first collection run (set `startRun: false` to skip). Counts against the plan's brand and prompt limits.

curl -X POST "http://localhost:3000/api/v1/projects" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Holafly","domain":"holafly.com","country":"US","language":"en","engines":["chatgpt","perplexity","gemini","google_aio","google_ai_mode"],"samples":3,"cadence":"weekly","competitors":[{"name":"Airalo","domain":"airalo.com"}],"prompts":["best eSIM for Japan","Airalo alternatives"],"startRun":true}'
get/projects/{id}

Get a project

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
patch/projects/{id}full-access key

Update a project

Any of name, domain, description, country, language, engines, samples, cadence, aliases.

ParameterInTypeDescription
idpathstringProject id
curl -X PATCH "http://localhost:3000/api/v1/projects/$ID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cadence":"daily","engines":["chatgpt","perplexity"]}'
del/projects/{id}full-access key

Delete a project

Deletes the brand and all its data. Irreversible.

ParameterInTypeDescription
idpathstringProject id
curl -X DELETE "http://localhost:3000/api/v1/projects/$ID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Competitors

Competitors tracked for each brand.

get/projects/{id}/competitors

List competitors

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID/competitors" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/competitorsfull-access key

Add competitors

One competitor, or several with `competitors: [...]`. Mentions in answers already collected are re-detected right away.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/competitors" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"competitors":[{"name":"Airalo","domain":"airalo.com","aliases":["Airalo eSIM"]}]}'
get/projects/{id}/competitors/{competitorId}

Get a competitor

ParameterInTypeDescription
idpathstringProject id
competitorIdpathstringcompetitorId
curl "http://localhost:3000/api/v1/projects/$ID/competitors/$COMPETITORID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
patch/projects/{id}/competitors/{competitorId}full-access key

Update a competitor

ParameterInTypeDescription
idpathstringProject id
competitorIdpathstringcompetitorId
curl -X PATCH "http://localhost:3000/api/v1/projects/$ID/competitors/$COMPETITORID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"airalo.com","aliases":["Airalo"]}'
del/projects/{id}/competitors/{competitorId}full-access key

Remove a competitor

ParameterInTypeDescription
idpathstringProject id
competitorIdpathstringcompetitorId
curl -X DELETE "http://localhost:3000/api/v1/projects/$ID/competitors/$COMPETITORID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Prompts

The questions asked to every AI engine.

get/projects/{id}/prompts

List prompts with visibility

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/prompts" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/promptsfull-access key

Add prompts

Prompts already tracked (same text, any case) are skipped. Counts against the plan's active prompt limit.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/prompts" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompts":["best eSIM for Europe"],"tags":["comparison"]}'
get/projects/{id}/prompts/{promptId}

Get a prompt

ParameterInTypeDescription
idpathstringProject id
promptIdpathstringpromptId
curl "http://localhost:3000/api/v1/projects/$ID/prompts/$PROMPTID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
patch/projects/{id}/prompts/{promptId}full-access key

Update a prompt

Pause or resume (`active`), retag or edit. Resuming counts against the plan's active prompt limit.

ParameterInTypeDescription
idpathstringProject id
promptIdpathstringpromptId
curl -X PATCH "http://localhost:3000/api/v1/projects/$ID/prompts/$PROMPTID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"active":false,"tags":["pricing"]}'
del/projects/{id}/prompts/{promptId}full-access key

Delete a prompt

Also deletes its answers.

ParameterInTypeDescription
idpathstringProject id
promptIdpathstringpromptId
curl -X DELETE "http://localhost:3000/api/v1/projects/$ID/prompts/$PROMPTID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/tags

List prompt tags with counts

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID/tags" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Runs

Collection runs: every prompt × engine × sample.

get/projects/{id}/runs

List runs with progress

ParameterInTypeDescription
idpathstringProject id
limitqueryintegerMax items to return · default 20
offsetqueryintegerItems to skip, for paging · default 0
curl "http://localhost:3000/api/v1/projects/$ID/runs" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/runs/{runId}

Get a run

Progress by engine.

ParameterInTypeDescription
idpathstringProject id
runIdpathstringrunId
curl "http://localhost:3000/api/v1/projects/$ID/runs/$RUNID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Metrics

Visibility with 95% confidence intervals, share of voice, position and sentiment.

get/projects/{id}/metrics

Visibility overview

Brand and competitors with 95% CIs, change vs the previous period (with p-value) and per-engine visibility.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
enginequerychatgpt | perplexity | gemini | google_aio | google_ai_mode | claudeOnly this AI engine
curl "http://localhost:3000/api/v1/projects/$ID/metrics" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/metrics/timeseries

Visibility per run

One point per run with every brand's visibility, plus completed actions as annotations.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 90
enginequerychatgpt | perplexity | gemini | google_aio | google_ai_mode | claudeOnly this AI engine
tagquerystringOnly prompts with this tag
curl "http://localhost:3000/api/v1/projects/$ID/metrics/timeseries" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/metrics/engines

Visibility by engine

Brand and competitors on each engine, with significance of the change.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
tagquerystringOnly prompts with this tag
curl "http://localhost:3000/api/v1/projects/$ID/metrics/engines" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/metrics/prompts

Visibility by prompt

Your visibility per prompt, the leading competitor and the gap.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
enginequerychatgpt | perplexity | gemini | google_aio | google_ai_mode | claudeOnly this AI engine
tagquerystringOnly prompts with this tag
curl "http://localhost:3000/api/v1/projects/$ID/metrics/prompts" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Answers

The raw AI answers with the brands they name and the sources they cite.

get/projects/{id}/answers

List answers

Newest first, with brands mentioned (in order) and sources cited.

ParameterInTypeDescription
idpathstringProject id
limitqueryintegerMax items to return · default 50
offsetqueryintegerItems to skip, for paging · default 0
enginequerychatgpt | perplexity | gemini | google_aio | google_ai_mode | claudeOnly this AI engine
prompt_idquerystringOnly answers to this prompt
daysqueryintegerOnly answers from the last N days
mentionedquerybooleantrue: only answers that mention the brand; false: only those that don't
curl "http://localhost:3000/api/v1/projects/$ID/answers" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/answers/{answerId}

Get an answer

Full text, mentions with snippets and sentiment, citations, query fan-out, shopping products, ads and local results.

ParameterInTypeDescription
idpathstringProject id
answerIdpathstringanswerId
curl "http://localhost:3000/api/v1/projects/$ID/answers/$ANSWERID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Sources

Domains and pages AI cites, and where you're missing.

get/projects/{id}/citations

Top cited domains

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/citations" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/citations/urls

Top cited pages

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
limitqueryintegerMax items to return · default 50
curl "http://localhost:3000/api/v1/projects/$ID/citations/urls" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/citations/gaps

Source gaps

Third-party domains AI cites in answers that don't mention you, ranked by missed answers.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/citations/gaps" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Discovery

Brands AI recommends that you don't track yet.

get/projects/{id}/discovered-brands

Untracked brands AI recommends

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
limitqueryintegerMax items to return · default 25
curl "http://localhost:3000/api/v1/projects/$ID/discovered-brands" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/discovered-brands/trackfull-access key

Track a discovered brand

Adds it as a competitor and re-detects its mentions in collected answers.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/discovered-brands/track" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Saily"}'
post/projects/{id}/discovered-brands/ignorefull-access key

Ignore a discovered brand

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/discovered-brands/ignore" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Google Fi"}'

Action plan

Evidence-based actions and their measured before/after impact.

get/projects/{id}/actions

List actions

ParameterInTypeDescription
idpathstringProject id
statusquerytodo | doing | done | dismissedFilter by status
curl "http://localhost:3000/api/v1/projects/$ID/actions" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/actionsfull-access key

Add an action

Your own action. Link prompts with `promptIds` to measure its impact on them.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/actions" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"content","title":"Publish Japan eSIM comparison","detail":"Table with price per GB and carriers.","priority":1,"promptIds":[]}'
post/projects/{id}/actions/generatefull-access key

Regenerate the plan

Builds new actions from the last 30 days of answers. Never duplicates existing ones.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/actions/generate" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/actions/{actionId}

Get an action with its impact

ParameterInTypeDescription
idpathstringProject id
actionIdpathstringactionId
curl "http://localhost:3000/api/v1/projects/$ID/actions/$ACTIONID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
patch/projects/{id}/actions/{actionId}full-access key

Update an action

`status: "done"` stamps the completion date that starts the before/after window.

ParameterInTypeDescription
idpathstringProject id
actionIdpathstringactionId
curl -X PATCH "http://localhost:3000/api/v1/projects/$ID/actions/$ACTIONID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"done"}'
del/projects/{id}/actions/{actionId}full-access key

Delete an action

ParameterInTypeDescription
idpathstringProject id
actionIdpathstringactionId
curl -X DELETE "http://localhost:3000/api/v1/projects/$ID/actions/$ACTIONID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/actions/{actionId}/impact

Measured impact

Visibility before vs after completion on the targeted prompts, with a two-proportion z-test.

ParameterInTypeDescription
idpathstringProject id
actionIdpathstringactionId
windowqueryintegerDays before and after completion · default 28
curl "http://localhost:3000/api/v1/projects/$ID/actions/$ACTIONID/impact" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/audit

AI readiness audit (latest)

The latest audit of the brand's website as AI crawlers see it: robots.txt and firewall access, content rendered without JavaScript, noindex, canonicals, speed, titles, structured data, freshness, sitemap and llms.txt, per page, with a score and a draft llms.txt. null if none yet.

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID/audit" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/auditfull-access key

Run an AI readiness audit

Audits the website now (plain requests to the site, no AI cost) and refreshes the action plan: new problems become actions, fixed ones are closed.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/audit" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Reputation

How AI describes the brand, scored, with quotes.

get/projects/{id}/reputation

Latest reputation analysis

Scores, strengths, weaknesses and inaccurate claims with quotes, tone per run and the most negative mentions.

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID/reputation" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/reputation/history

Reputation score history

ParameterInTypeDescription
idpathstringProject id
limitqueryintegerMax items to return · default 20
curl "http://localhost:3000/api/v1/projects/$ID/reputation/history" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/reputation/regeneratefull-access keyuses credits

Re-analyse reputation

On the latest completed run. Limited per brand per day.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/reputation/regenerate" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/reputation/actionsfull-access key

Turn a finding into an action

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/reputation/actions" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"inaccuracy","index":0}'

Signals

Query fan-out, ChatGPT shopping, ads, local packs, entities, Reddit and YouTube.

get/projects/{id}/signals

Signals summary

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/signals/fan-out

Query fan-out

The searches AI engines ran behind your prompts.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals/fan-out" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/signals/shopping

ChatGPT shopping products and merchants

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals/shopping" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/signals/ads

Ads shown in answers

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals/ads" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/signals/entities

Brand entities recognised in answers

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals/entities" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/signals/community

Reddit and YouTube sources

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals/community" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/signals/local

Local businesses in answers

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/signals/local" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

GEO writer

Opportunities and content drafts grounded in the pages AI cites.

get/projects/{id}/geo/opportunities

Optimization opportunities

Prompts ranked by the gap to the leading competitor, with the page to optimize.

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID/geo/opportunities" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/geo/drafts

List drafts

ParameterInTypeDescription
idpathstringProject id
curl "http://localhost:3000/api/v1/projects/$ID/geo/drafts" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/geo/draftsfull-access keyuses credits

Create a draft

Analyses the answers, the pages AI cites instead of yours and your page, then drafts the content. Takes 1–2 minutes. Limited per workspace per day.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/geo/drafts" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"promptId":"…","targetUrl":"https://holafly.com/esim-japan"}'
get/projects/{id}/geo/drafts/{draftId}

Get a draft

ParameterInTypeDescription
idpathstringProject id
draftIdpathstringdraftId
curl "http://localhost:3000/api/v1/projects/$ID/geo/drafts/$DRAFTID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/geo/drafts/{draftId}/actionfull-access key

Add a draft to the action plan

ParameterInTypeDescription
idpathstringProject id
draftIdpathstringdraftId
curl -X POST "http://localhost:3000/api/v1/projects/$ID/geo/drafts/$DRAFTID/action" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Traffic

Visits AI assistants send to your site, and GA4 imports.

get/projects/{id}/traffic

AI referral traffic summary

Sessions and conversions by engine from one data source (snippet first, then analytics imports), the sources available, and the tracking snippet.

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/traffic" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/traffic/daily

AI sessions per day

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/traffic/daily" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/traffic/pages

Top landing pages from AI

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/traffic/pages" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/traffic/ga4full-access key

Import a GA4 CSV

Body is a GA4 export with Date, Session source and Sessions columns. Non-AI rows are skipped; re-importing the same dates replaces them.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/traffic/ga4" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: text/csv" \
  --data-binary @export.csv

Crawlers

AI bot activity from your server or CDN logs.

get/projects/{id}/bots

AI crawler summary

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/bots" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/bots/by-bot

Hits by crawler

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/bots/by-bot" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/projects/{id}/bots/pages

Most crawled pages

ParameterInTypeDescription
idpathstringProject id
daysqueryintegerLook-back window in days · default 30
curl "http://localhost:3000/api/v1/projects/$ID/bots/pages" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Alerts

Alerts raised after runs.

get/alerts

List alerts

ParameterInTypeDescription
unreadquerybooleanOnly unread alerts
project_idquerystringOnly this project
limitqueryintegerMax items to return · default 100
curl "http://localhost:3000/api/v1/alerts" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/alerts/{alertId}/readfull-access key

Mark an alert read

ParameterInTypeDescription
alertIdpathstringalertId
curl -X POST "http://localhost:3000/api/v1/alerts/$ALERTID/read" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/alerts/read-allfull-access key

Mark all alerts read

ParameterInTypeDescription
project_idquerystringOnly this project
curl -X POST "http://localhost:3000/api/v1/alerts/read-all" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Integrations

Email, Slack and signed webhook notifications.

get/integrations

List integrations

curl "http://localhost:3000/api/v1/integrations" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/integrationsfull-access key

Add an integration

Email, Slack incoming webhook or https webhook. Webhooks return a signing `secret` once; every delivery carries `X-Huginnova-Signature: sha256=<hmac>`.

curl -X POST "http://localhost:3000/api/v1/integrations" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"webhook","target":"https://hooks.zapier.com/hooks/catch/…","events":["alert.created","run.completed"]}'
get/integrations/{integrationId}

Get an integration

ParameterInTypeDescription
integrationIdpathstringintegrationId
curl "http://localhost:3000/api/v1/integrations/$INTEGRATIONID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
patch/integrations/{integrationId}full-access key

Update an integration

ParameterInTypeDescription
integrationIdpathstringintegrationId
curl -X PATCH "http://localhost:3000/api/v1/integrations/$INTEGRATIONID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
del/integrations/{integrationId}full-access key

Delete an integration

ParameterInTypeDescription
integrationIdpathstringintegrationId
curl -X DELETE "http://localhost:3000/api/v1/integrations/$INTEGRATIONID" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/integrations/{integrationId}/testfull-access key

Send a test notification

ParameterInTypeDescription
integrationIdpathstringintegrationId
curl -X POST "http://localhost:3000/api/v1/integrations/$INTEGRATIONID/test" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Exports & reports

CSV exports and white-label client report links.

get/projects/{id}/export/{file}

Download a CSV export

`file` is one of answers.csv, prompts.csv, citations.csv, metrics.csv.

ParameterInTypeDescription
idpathstringProject id
filepathstringfile
curl "http://localhost:3000/api/v1/projects/$ID/export/answers.csv" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
post/projects/{id}/share-linkfull-access key

Rotate the client report link

The previous link stops working immediately.

ParameterInTypeDescription
idpathstringProject id
curl -X POST "http://localhost:3000/api/v1/projects/$ID/share-link" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

BI

Flat tables for Power BI, Looker Studio, Google Sheets and Excel, as JSON or CSV.

get/bi

List BI datasets

Every flat table with its columns and ready-made JSON and CSV URLs.

curl "http://localhost:3000/api/v1/bi" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"
get/bi/{dataset}

Get a BI dataset

One row per day/brand/engine (or per prompt, source, page…) across every brand in the workspace. Point Power BI (Get data → Web) or Google Sheets (IMPORTDATA) at the CSV URL with a read-only key.

ParameterInTypeDescription
datasetpathstringdataset
projectquerystringA project id, or `all` (default) · default all
daysqueryintegerLook-back window in days · default 90
formatqueryjson | csvResponse format · default json
curl "http://localhost:3000/api/v1/bi/visibility" \
  -H "Authorization: Bearer $HUGINNOVA_API_KEY"

Meta

API index and this specification.

get/no key

API index

Every endpoint with a one-line description.

curl "http://localhost:3000/api/v1"
get/openapi.jsonno key

OpenAPI 3.1 specification

curl "http://localhost:3000/api/v1/openapi.json"

Questions or need an endpoint we don't have? Contact us.