Direct HTTP API

Any backend, any language.
One request per pageview.

If your stack can make an HTTP call, it can talk to Arrivl. Send one GET to the intake endpoint on each request, the universal path when there's no dedicated integration yet.

Available today

A single GET with the request's basics. No SDK, no dependency, just an HTTP call.

Any languageNo SDKNo proxy, no DNSFire-and-forget

Install guide

Install HTTP API, start to finish

Send bot visit data to Arrivl from any backend using a simple GET request. Use this integration when you need full control over tracking or your stack isn't covered by one of the platform-specific integrations.

Monitoring only. Automatic optimization needs an install that sits in the request path: Cloudflare, Shopify, or the Next.js middleware.

01Install guide

Prerequisites

02Install guide

Endpoint

GET  https://arrivl.ai/api/v1/intake/pageview

All parameters are passed as query string parameters. Requests must be made over HTTPS.

03Install guide

Parameters

urlstringrequired
The full URL of the page being accessed (e.g. https://yoursite.com/blog/post). Build the host from X-Forwarded-Host, falling back to Host: behind a reverse proxy or container platform the raw Host is an internal hostname (often localhost), and an install whose events report it never verifies.
userAgentstringrequired
The User-Agent header from the incoming request.
refstringrequired
The Referer header from the incoming request. Pass an empty string if none.
acceptstring
The raw Accept header from the incoming request. A real browser navigating to a page asks for text/html; a script wearing a browser's User-Agent usually does not, and without this field Arrivl cannot tell the two apart. Omit it or pass an empty string if the request has none.
ipstringrequired
The visitor's IP address.
websiteKeystringrequired
Your Arrivl website key.
sigstring
The raw Signature header (Web Bot Auth / RFC 9421), when the request carries one. Forward it verbatim.
sigInputstring
The raw Signature-Input header, when present. Forward verbatim.
vbcstring
Cloudflare's edge bot-verification verdict (request.cf.verifiedBotCategory). Only available inside a Cloudflare Worker — self-hosted proxies simply omit it.
sigAgentstring
The raw Signature-Agent header, when present. Forward verbatim (both the quoted-string and dictionary forms are accepted). Note: the Vercel log drain cannot carry these headers — its upstream schema is fixed.

04Install guide

Example

bash

curl --request GET \
  "https://arrivl.ai/api/v1/intake/pageview\
?url=https://yoursite.com/blog/post\
&userAgent=Mozilla/5.0%20(compatible;%20ChatGPT-User/1.0)\
&ref=\
&accept=text/html\
&ip=1.2.3.4\
&websiteKey=ak_YOUR_WEBSITE_KEY\
&status=200\
&bytes=83846\
&shape=post_response\
&source=http\
&sv=3"

05Install guide

Best practices

  • 01Track key pages only: blogs, landing pages, product pages, robots.txt, sitemap.xml
  • 02Skip static assets: images, CSS, JS, fonts don't need to be tracked
  • 03Fire-and-forget: don't await the response; send tracking calls asynchronously so they never delay the page
  • 04URL-encode all parameters: especially url and userAgent which may contain special characters

06Install guide

Troubleshooting

Still stuck? Write to hello@arrivl.ai.

01Requests not appearing in Agent Analytics

Check that your websiteKey is correct and not revoked. Verify the request returns {"ok": true}. Events may take a few seconds to appear in the dashboard.

02Where do I find my website key?

Go to Settings and click "+ New Key" under your project. The key starts with ak_.

03Should I track every request?

No. Focus on HTML pages that AI bots visit. Skip static assets (images, CSS, JS, fonts) and API endpoints.

Values shown as ak_YOUR_WEBSITE_KEY are placeholders. Sign in and the in-dashboard version of this guide fills in your real key and per-project values for you.

Next step

Send your first event in a single request

See all the ways to connect →