HydraCore
API by router

Public

Track Analytics

Record a page view event from a published website.

Rate-limited to 100 events per minute per IP. site_id is the public tracking_token (resolved to hosted_website_id server-side).

POST
/v1/public/analytics/track
device_type?Device Type
page_pathPage Path
Lengthlength <= 2048
referrer?Referrer
screen_width?Screen Width
session_id?Session Id
site_idSite Id
Formatuuid

Response Body

curl -X POST "https://loading/v1/public/analytics/track" \  -H "Content-Type: application/json" \  -d '{    "page_path": "string",    "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811"  }'
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Submit Form

Accept a form submission from a published website.

Rate-limited to 5 submissions per minute per IP. site_id is the website_config_id (canonical external identity).

POST
/v1/public/forms/submit
email?Email
form_dataForm Data
Propertiesproperties <= 50

Empty Object

page_slug?Page Slug
site_idSite Id
Formatuuid

Response Body

curl -X POST "https://loading/v1/public/forms/submit" \  -H "Content-Type: application/json" \  -d '{    "form_data": {},    "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811"  }'
{
  "status": "received",
  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Widget Chat

Public widget chat — authenticates via X-Widget-Token header.

Widget tokens are instance-scoped, chat-only. NOT tenant JWTs. The control plane validates the token, then streams SSE from the agent.

POST
/v1/public/widget/{instance_id}/chat

Path Parameters

instance_idInstance Id
Formatuuid
conversation_id?Conversation Id
messageMessage
Lengthlength <= 8000

Response Body

curl -X POST "https://loading/v1/public/widget/497f6eca-6276-4993-bfeb-53cbbbba6f08/chat" \  -H "Content-Type: application/json" \  -d '{    "message": "string"  }'
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}