Skip to main content
Use these public endpoints to send project data without the desktop app. Feedback and App Logs use the secret project key from Settings → API Key; analytics endpoints use the site’s public tracking ID and configured domain.

Submit feedback

string
required
issue or feature_request. Any other value is treated as issue.
string | number | boolean | string[]
A field configured in Settings → Feedback. Required fields must be present. Email and URL fields are validated; attachment fields accept image data URIs.
string | number | boolean
Up to 20 scalar fields not in the saved configuration. Extra strings are stripped of HTML and truncated to 500 characters.
Success is HTTP 200:
Configured text fields are truncated to 500 characters and long_text fields to 10,000. A configured attachment field accepts up to 5 PNG, JPEG, or WebP data:image/...;base64,... values; an image whose base64 content exceeds 5 * 1024 * 1024 * 1.4 characters is skipped. Unknown arrays and objects are not stored.

Ingest App Logs

x-aiola-key is preferred. Authorization: Bearer <project-key> is also accepted. See App Logs over HTTP for complete runtime examples.
string
Human-readable event message. At least message or exception is required.
string
The dashboard understands fatal, error, warning, info, and debug. The endpoint accepts and stores any string; an absent or empty value defaults to error.
object
Exception type, value, and optional stacktrace.frames.
object
String key/value metadata. environment and release tags are fallbacks for their top-level fields. A numeric status_code tag is clamped to 065535.
array
Prior events with timestamp, category, message, optional level, and optional data.
object
Optional url, method, headers, query_string, and body.
string
string
string
string
An ISO 8601 timestamp. Invalid or absent values use the current time.
object
Optional id, email, username, and ip_address.
object
Optional browser, os, device, and runtime objects.
Success is HTTP 200:
Messages and exception values are truncated after 8,192 characters, stack frames after 200, breadcrumbs to the newest 100, and tags to the first 50. Tag values, retained request-header values, and user ID/email/username are capped at 500 characters; request bodies at 4,096. The ingest removes authorization, cookie, set-cookie, x-aiola-key, x-api-key, x-auth-token, and proxy-authorization request headers.

Collect browser analytics

string
required
The site’s public analytics tracking ID.
string
An 8–64 character hexadecimal/hyphen ID. The collector creates a UUID if it is absent or invalid.
number
Per-page event sequence, clamped to 04294967295.
string
Tracker version. The current browser tracker sends 2.
string
Empty for a page view; _leave, _identify, and custom names have special handling.
string
JSON serialized as a string.
string
string
string
When present, must equal the configured domain or one of its subdomains. Omitting it bypasses host authorization and loses the event’s host value, so the collector cannot distinguish production, preview, and other hosts.
string
string
string
string
string
string
string
number
Seconds, clamped to 03600.
Success is HTTP 204 with no response body. Excluded traffic and recognized bot traffic also return 204; a 204 therefore means accepted or intentionally ignored, not necessarily stored as a human event. The browser tracker sends at most 30 events per 10 seconds. It truncates event names to 100 characters and replaces event_data with {} when its serialized length exceeds 6,000 characters. The collector caps paths and queries at 2,000 characters, host and title at 500, identity at 200, and screen/language at 20; collector-side event_name storage is capped at 200 and event_data is replaced with {} beyond 8,000.

Ingest bot and crawler analytics

string
required
The site’s public analytics tracking ID.
string
Requested path; defaults to / and is capped at 2,000 characters.
string
When present, must equal the configured domain or one of its subdomains; capped at 500 characters. Omitting it bypasses host authorization and stores no host, so crawler telemetry cannot be attributed or filtered by hostname.
string
required
The crawler’s original User-Agent. It is capped at 1,000 characters and must match a crawler in AI Crawlers.
string
Optional two-letter uppercase country code. T1, XX, and invalid values are stored as empty.
number
HTTP status returned to the crawler. Defaults to 200; values outside 100599 become 200.
Success is HTTP 204 with no response body. Unknown crawler User-Agents are intentionally ignored with the same 204 response.

Owner-side endpoints

These endpoints belong to the signed-in desktop application. They require an Aiola user session and subscription access through the app’s authenticated request client; a project key is not accepted. See Setup Health for scan results and remediation behavior.

Limits at a glance