Developer docs · API 2.0.0
Run Eli's AI-search-to-pipeline loop from your product.
Read what Eli knows about the company, recommendation gap and buyer journey. Show the exact next action, ask for approval, run eligible work and preserve the verified outcome.
Install the site tag
Watching what AI assistants answer needs nothing installed. The site tag lets Eli count visitors who arrive from AI assistants, count visits to the conversion pages the owner names, and show a link or a text the owner approved. Add this one line just before </head> in the part of the site every page shares (theme, custom-code setting or a tag manager tag that fires on all pages for every visitor). The owner copies the line with the workspace's own key from Connections in Eli; on WordPress the Eli plugin adds it instead.
<script async src="https://hireeli.io/t.js?k=YOUR_SITE_KEY&mode=functional"></script>
- Speed: the script loads with
async, so the page renders without waiting for it. - Consent: with
mode=functionalit measures nothing and shows nothing for a visitor until they accept analytics, except on a website with no cookie banner, where it measures visitors from outside the EU, the EEA and the UK; before that it sends one installation signal a day without page, referrer or visitor identifier. It reads the visitor's answer in Cookiebot, OneTrust, CookieYes, Complianz, Borlabs Cookie, Usercentrics, Shopify's and Webflow's own banners, WordPress consent plugins (WP Consent API), IAB TCF banners, and Google Consent Mode when its default refuses analytics for every visitor until they answer. With any other consent tool, or to measure visitors inside the EU, the EEA and the UK on a website without one, run the first line where a visitor accepts analytics and the second where they withdraw:
window.__eliQueuedAnalyticsConsent = true; window.eliSetAnalyticsConsent && window.eliSetAnalyticsConsent(true); window.__eliQueuedAnalyticsConsent = false; window.eliSetAnalyticsConsent && window.eliSetAnalyticsConsent(false);
- Verify: publish, open any page once in a normal browser window, then press Check now in Eli. Eli marks the tag installed within a minute.
- What it never does: change the page's own code or what search engines read, or store an IP address. Removing the line, or the owner's Stop everything in Eli, ends everything it shows.
Authentication
Send Authorization: Bearer <credential>. REST v2 accepts either a user access token or an Eli API key. Create keys in the dashboard developer settings. A new key is displayed once; Eli stores only its hash.
- API key: the workspace is pinned from the validated key row. An
x-eli-tenantheader can only assert that same ID. - User token: reads and writes run through that user's row-level-security session. Accounts with multiple workspaces must send an exact
x-eli-tenantUUID. - Scopes: keys request only
read,write:own-siteand/orwrite:drafts. Revoked, expired or creator-orphaned keys fail closed.
Read workspace resources
Call GET /api/v2/{resource}. API-key reads require the read scope.
overviewVisibility summary for the selected workspace.
competitorsLiteral competitor counts from saved AI answers.
trafficAI-referred visits grouped by source.
revenueCRM-verified, buyer-attributed and directional evidence kept separate.
actionsPending own-site actions and the operation that can decide each one.
promptsTracked buyer questions and recent model evidence.
work-logRecent engine cycles and work events.
onsite-changesOn-site proposals; add ?id=<uuid> for a full before/after preview.
content-draftsContent drafts; add ?id=<uuid> for the full body and publication state.
growthEvidence graph, selected growth intervention, execution route, blockers and learned outcomes.
company-intelligenceSource-aware company, offer, audience, proof, constraint, gap and conflict context for personalized work.
distribution-planThe ranked, executable plan that connects measured demand to safe distribution and conversion actions.
reddit-intelligenceSaved Reddit source evidence, prioritized threads, human-final contribution work and remeasurement state.
curl https://www.hireeli.io/api/v2/actions \ -H "authorization: Bearer eli_live_REPLACE_ONCE"
Fetch the full diff before deciding
curl "https://www.hireeli.io/api/v2/onsite-changes?id=CHANGE_UUID" \ -H "authorization: Bearer eli_live_REPLACE_ONCE"
Track AI crawlers on your website
Forward HTTP request batches from your server, host or CDN. The key needswrite:own-site and the hostname must be covered by a fresh verified domain. Eli discards non-AI requests and stores only daily page, crawler, purpose, method and status-class totals. It does not store IP addresses, query strings, referrers or full user agents.
curl -X POST https://www.hireeli.io/api/v2/crawler-events \
-H "authorization: Bearer eli_live_REPLACE_ONCE" \
-H "x-eli-tenant: WORKSPACE_UUID" \
-H "content-type: application/json" \
-d '{"events":[{"timestamp":"2026-08-04T12:00:00Z","hostname":"example.com","request_path":"/pricing","request_method":"GET","status_code":200,"user_agent":"OAI-SearchBot/1.0"}]}'Write with literal confirmation
Let Eli choose the measured page opportunity and prepare one review-only proposal:
curl -X POST https://www.hireeli.io/api/v2/onsite-proposals \ -H "authorization: Bearer eli_live_REPLACE_ONCE"
The execution endpoints use the same decision core as the dashboard. The body valueconfirm: true must be the JSON boolean true. Strings such as "yes", the number 1, and free text are rejected. Always read the current resource first and ask the human to approve that exact preview.
API-key content publication requires both write:drafts and write:own-site. Dismissing a content draft requires only write:drafts; the other execution endpoints require write:own-site. For an already-published manual handoff, send provider: "manual_url" with the exact public publication_url.
POST /api/v2/crawler-eventssend privacy-safe server or CDN events so Eli can measure known AI crawler access by page
POST /api/v2/onsite-proposalschoose and prepare the highest-priority existing-page proposal; nothing is applied
POST /api/v2/onsite-changes/{id}approve, apply, revert or dismiss an on-site change
POST /api/v2/content-drafts/{id}approve_publish or dismiss; supports a connected CMS or verified manual URL
POST /api/v2/corrections/{id}approve or dismiss a correction
POST /api/v2/layer/publishpublish the reviewed AI-readable layer
curl -X POST https://www.hireeli.io/api/v2/onsite-changes/CHANGE_UUID \
-H "authorization: Bearer eli_live_REPLACE_ONCE" \
-H "content-type: application/json" \
-d '{"action":"apply","confirm":true}'Receipts
Every accepted machine write returns a receipt. Store the whole response. The resource ID and decision tie it to the audit log; status says what actually happened; URL and revert guidance identify the next safe step; caps show the durable daily write allowance. A requested write is never reported as applied unless the execution core can verify the outcome.
{
"decision": "apply",
"resourceId": "CHANGE_UUID",
"status": "applied",
"url": "https://example.com/page",
"revertible": true,
"revert_hint": "Call the confirmed revert operation for this change.",
"caps": { "used": 1, "limit": 10, "window": "day" },
"audit_id": "AUDIT_UUID"
}Safety and limits
- On Eli from €99/mo (Launch), a machine write can approve a change Eli presents, within the limit of that level. Eli keeps up to 20 buying questions and asks each about once a week in ChatGPT, and Gemini on days its provider has capacity left for Eli, up to 3 a day in each. You can approve up to 2 changes in 30 days. Eli can write up to 4 new pages a month. Meta Ads on your own ad account: up to 1 ad test running at once, each started only after your yes, and up to 12 new ads in 30 days. Your ad budget is separate and goes directly to Meta. When Eli can write a change from your company's own facts, it writes out the exact text for you to approve; when it cannot, it shows you which step is yours. On a WordPress site you connect with the Eli plugin, Eli adds the approved text to the page itself and can take it out again. On other sites, and for a change to your own words, you add it. Eli then reads your live page and asks the buying question again. Every level includes the content and on-site write tools, hosted corrections and hosted layers; each follows its own gates.
- Protocol writes are atomically capped per workspace and UTC day; on-site weekly and content monthly business caps still apply.
- Every machine decision is audited. Missing cap or audit database support makes writes unavailable rather than bypassing the check.
- API and MCP can execute only own-site work. They cannot send pitches, review requests, directory submissions or other third-party outreach, and cannot switch on autopilot.
- A missing or non-boolean confirmation returns HTTP
409withrequired: { confirm: true }and the full current preview. Invalid bodies or actions use400. - Rate-limit responses use HTTP
429. Authentication, role, scope, billing, conflict, content-safety and unavailable states remain distinct errors.
Agent skill
Install or copy the public Eli AEO skill into an assistant that supports agent skills. It contains the exact read → preview → confirm → approve workflow, receipt interpretation, a weekly review routine and REST v2 examples. The package is mirrored here for a future skills registry; the static files work now.
- /skills/eli-aeo/SKILL.md
- /skills/eli-aeo/references/workflow.md
- /skills/eli-aeo/references/receipts.md
- /skills/eli-aeo/references/weekly-review.md
- /skills/eli-aeo/references/api.md
Public scan and published layers
The public scan requires no account and stays isolated in Eli's public tenant. Results are cached for seven days and bounded by existing public rate and cost caps.
curl -X POST https://www.hireeli.io/api/scan \
-H "content-type: application/json" \
-d '{"domain":"example.com"}'Published customer layers remain public at /l/{slug}/llms.txt, /l/{slug}/capabilities.json and /l/{slug}/agents.md. These endpoints expose published material only, never private drafts.
REST v1
GET /api/v1/{resource} remains available for existing raw user-token integrations but is deprecated. New integrations should use v2 and a scoped API key. v1 never gains write methods.
How Eli's own site treats crawlers
Eli's public pages are open to search and AI crawlers, including Googlebot, Bingbot, OAI-SearchBot, PerplexityBot and Claude-SearchBot. Account, dashboard, API and sign-in routes are disallowed. The live rules are at /robots.txt and the page list is at /sitemap.xml. Allowing a search crawler and allowing model training are separate choices; Eli currently allows both.
Where to go next
- What an AI search execution platform does: the loop these endpoints expose.
- Integrations: supported website and data connections.
- Security: data location, isolation, approvals and audit records.
- Pricing: plan limits, including daily write caps for API and assistant actions.
- Research: methods and open data behind Eli's measurements.
What Eli is, compared
Eli is an AI growth team: four AI agents for AI search, the website, conversions and Meta ads. These guides say what that is and compare it with the tools AI assistants name.
- What an AI growth team is
- What an AI marketing agent is
- What an AI CMO is
- AI CMO vs fractional CMO vs agency
- AI marketing agents compared
- AI search agents
- AI paid ads agents for Meta ads
- Autonomous AI marketing agents
- AI search optimization, done for you
- HubSpot Breeze alternatives
- Okara alternatives
- AmpPilot alternatives
- Jasper alternatives
- Madgicx alternatives
- Peec AI alternatives
- Profound alternatives
- Otterly.AI alternatives