AIfra Analytics API
The Analytics API from AIfra — 1 operation(s) for analytics.
The Analytics API from AIfra — 1 operation(s) for analytics.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/aifra-ru:aifra-ru-analytics-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AIfra preview Analytics API
version: 0.5.0-stage5
description: SaaS for prebuilt static ZIP previews with server-enforced 48-hour expiry. Availability is announced on the platform website. Production uses isolated per-preview origins; the server never builds or executes user code.
servers:
- url: '{apiOrigin}'
variables:
apiOrigin:
default: https://api.aifra.ru
tags:
- name: Analytics
paths:
/v1/analytics:
post:
summary: Record an approved, minimized browser event (disabled by default)
description: First-party Origin only. Exact page/source/event allowlists; no raw URL, referrer, campaign, token or browser identifier. At most 30 attempts/minute/IP; 1024 temporary in-memory IP buckets on the single MVP API process.
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- name
- page
- source
- confidence
properties:
name:
type: string
enum:
- landing_view
- docs_view
- copy_cli_command
- copy_agent_prompt
- instruction_click
page:
type: string
enum:
- /
- /docs/
- /examples/
- /check/
- /docs/rest/
- /docs/agent/
- /docs/cli/
- /docs/mcp/
- /docs/chat/
- /docs/html-presentation/
- /docs/static-report/
- /docs/russia-preview/
- /en/docs/mcp/
- /en/docs/publish/
- /deploy-from-codex/
- /deploy-from-claude-code/
- /deploy-from-cursor/
- /mcp-deploy/
- /guides/deploy-html/
- /guides/deploy-vite/
- /guides/deploy-react/
- /russian-vercel-alternative/
- /tuqo-alternative/
- /preview-without-registration/
- /hosting-for-ai-agents/
- /legal/terms/
- /legal/privacy/
- /legal/retention/
- /abuse/
- /practice/
- /updates/
- /practice/ai-site-before-upload/
- /practice/client-review-link/
- /practice/russia-viewing-check/
- /practice/two-page-html-site/
- /practice/presentation-without-libraries/
- /practice/report-with-local-chart/
- /practice/missing-images-after-upload/
- /practice/demo-button-instead-of-form/
- /practice/cyrillic-html-encoding/
- /practice/react-refresh-deep-link/
- /practice/noindex-is-not-private/
- /practice/javascript-without-api/
- /practice/failed-update-keeps-old-version/
- /practice/publish-dist-not-repository/
- /practice/preview-before-meeting/
source:
type: string
enum:
- preview
- codex
- claude-code
- cursor
- chatgpt
- github
- claude
- perplexity
- bing-organic
- glama
- smithery
- pulsemcp
- mcpbeat
- tracevero
- mcp-registry
- yandex-organic
- google-organic
- telegram
- direct
- unknown
confidence:
type: string
enum:
- inferred
- self_reported
- unknown
responses:
'204':
description: Recorded
'400':
description: Invalid event
'403':
description: Foreign Origin
'404':
description: Collection disabled
'413':
description: Body exceeds 1024 bytes
'429':
description: Event budget exhausted
'503':
description: Event storage unavailable
tags:
- Analytics
operationId: postV1Analytics
x-operation-id-source: derived
components:
securitySchemes:
managementToken:
type: http
scheme: bearer
bearerFormat: pmt_*
x-legal:
terms_path: /legal/terms/
privacy_path: /legal/privacy/
retention_path: /legal/retention/
abuse_path: /abuse/
path_origin: SITE_ORIGIN (platform website, not API or user-content origin)
terms_version: 2026-09-23-v3
acceptance: Explicit accept_terms on create/update; not personal-data consent
activation: TERMS_VERSION must match the reviewed document before public beta
x-technical-retention:
version: 2026-09-23-v3
remoteApprovalSeconds: 7200
remoteReceiptSeconds: 3600
rateLimitHours: 25
lifecycleDays: 30
adminAuditDays: 90
backupMaxHours: 48
supportAfterResolutionDays: 30
abuseAfterResolutionDays: 90
x-agent-workflow:
documentation_path: /docs/agent/
path_origin: SITE_ORIGIN, not the API or preview origin
input: Prebuilt browser-only static ZIP with index.html at archive root
acceptance: Obtain explicit terms acceptance before create/update
output: Return viewer url and expires_at; keep manage_token in private local state
retries: Do not blindly retry POST after an uncertain network result; creation has no idempotency key
discovery: Instruction files aid use; no unaided model selection rate is claimed
unavailable:
- server-side builds
- user backend execution
x-preview-constraints:
ttlHours: 48
activePreviewsPerIp: 3
uploadBytes: 52428800
extractedBytes: 52428800
activeBytesPerIp: 157286400
staticOnly: true
updateExtendsExpiry: false
x-remote-mcp:
endpoint: https://api.aifra.ru/mcp
publication: browser_confirmation_required
approval_ttl_seconds: 7200
receipt_retention_seconds: 3600
receipt_retention_starts: completion_or_approval_expiry
named_links: Optional browser-selected name on create; never reissued; random isolated asset origin is unchanged
management: Private browser key; never an MCP parameter or result