API VERSION 1.0 • HTTP/2 SPECIFICATION

Axisforge Events Ingestion API Reference

A high-performance HTTP/2 API for publishing structured event batches and streaming real-time live tail feeds.

Overview

The Axisforge Events API provides a lightweight, resilient interface for ingesting application logs, audit trails, and distributed telemetry. Rather than requiring heavy vendor client libraries, the platform accepts standard JSON batches over encrypted HTTP/2 connections.

All endpoints enforce TLS 1.3 encryption and originate from our redundant European availability clusters.

Endpoints & Base URL

Base URL: https://origin.axisforge.tech Primary Path: /api/v1/sync/events

The same canonical path is used for both ingestion (via POST) and live streaming inspection (via GET).

Authentication

Authentication is handled through an opaque ingestion token passed via the URL query parameter t:

https://origin.axisforge.tech/api/v1/sync/events?t=YOUR_API_KEY

Requests must include a valid project API key. Tokens are issued per environment (development, staging, production) from your organization workspace settings.

Batch Ingestion Endpoint (POST)

POST /api/v1/sync/events?t=YOUR_API_KEY

Publishes a batch of structured event records. The gateway acknowledges valid batches immediately and asynchronously buffers them for indexing and streaming dispatch.

Request Headers

  • Content-Type: application/json (Required)
  • Host: origin.axisforge.tech (Required)

JSON Payload Structure

The request body must be a valid JSON object containing an array of event objects:

{ "batch_id": "b8f2c3d4-1a2b-4c5d-9e8f-7a6b5c4d3e2f", "source": "billing-service-prod", "events": [ { "timestamp": "2026-10-03T14:32:01.104Z", "level": "INFO", "event_type": "invoice.generated", "payload": { "invoice_id": "inv_9042", "customer_ref": "cust_881", "amount_eur": 420.00 } }, { "timestamp": "2026-10-03T14:32:01.810Z", "level": "WARN", "event_type": "gateway.latency_elevated", "payload": { "provider": "sepa_batch", "duration_ms": 340 } } ] }

Ingestion Limits & Recommendations

  • Maximum Payload Size: 512 KiB per individual HTTP POST request. Batches exceeding this threshold are rejected at the edge gateway to safeguard queue stability.
  • Recommended Batch Sizing: We recommend batching 50 to 500 records (approx. 50–250 KiB) for the most efficient network throughput.
  • Request Rate: Up to 15 batch requests per second per ingestion token under standard plan tiers.
  • Retry Strategy: In the event of transient network drops or rate limit responses (HTTP 429), clients should implement exponential backoff with full jitter:
    Sleep = Min(Max_Sleep, Base_Sleep * 2^attempt) + random_jitter

Response Status Codes

The gateway returns standard HTTP response codes accompanied by structured JSON bodies.

202 Accepted — Batch Acknowledged

The event batch has been validated and queued for downstream processing.

{ "status": "accepted", "batch_id": "b8f2c3d4-1a2b-4c5d-9e8f-7a6b5c4d3e2f", "processed_events": 2 }
401 Unauthorized — Missing or Invalid Token

The request omitted the ?t= parameter or provided an unrecognized token string.

{"error":"unauthorized","code":401,"message":"Authentication token required for event streaming"}
429 Too Many Requests — Ingestion Quota Reached

The account has reached its monthly event ingestion allocation under its current subscription plan. Responses include a standard Retry-After header indicating when the quota resets.

{"error":"quota_exceeded","code":429,"message":"Monthly event synchronization quota exceeded. Bandwidth suspended."}

Live Tail Streaming (GET)

GET /api/v1/sync/events?t=YOUR_API_KEY

Establishes a persistent, chunked HTTP/2 streaming connection to receive event notifications in real time. Suitable for developer live tails, operational dashboards, and alerting proxies.

  • Connection Protocol: HTTP/2 chunked streaming. Keep-alive heartbeat frames are emitted every 30 seconds to prevent stateful NAT dropouts.
  • Reconnection Behavior: If network transit causes the stream to drop, clients should reconnect with a 1-second initial delay. Event continuity is maintained through client-side sequence tracking.
  • Quota Accounting: Live tail streaming feeds and batch POST ingestion share the account's total monthly event quota.

Integration Examples

Production-ready code snippets demonstrating how to dispatch event batches from your applications.

1. cURL (Shell & CLI)

curl -X POST "https://origin.axisforge.tech/api/v1/sync/events?t=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -H "Host: origin.axisforge.tech" \ --data '{ "source": "cli-telemetry", "events": [ { "timestamp": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'", "level": "INFO", "event_type": "deploy.completed", "payload": {"version": "v2.14.0", "duration_sec": 42} } ] }'

2. Python (Standard library / Requests)

import time import requests API_URL = "https://origin.axisforge.tech/api/v1/sync/events" API_KEY = "YOUR_API_KEY" def send_event_batch(events): payload = { "source": "python-worker", "events": events } headers = {"Content-Type": "application/json"} response = requests.post( API_URL, params={"t": API_KEY}, json=payload, headers=headers, timeout=10 ) if response.status_code == 202: return response.json() elif response.status_code == 429: retry_after = int(response.headers.get("Retry-After", 60)) print(f"Quota suspended. Wait {retry_after}s.") else: response.raise_for_status() # Example dispatch send_event_batch([ { "timestamp": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), "level": "INFO", "event_type": "worker.batch_processed", "payload": {"records": 120, "elapsed_ms": 84} } ])

3. Node.js (Native HTTPS / Fetch)

const API_URL = "https://origin.axisforge.tech/api/v1/sync/events?t=YOUR_API_KEY"; async function pushTelemetry(events) { const payload = { source: "node-api-server", events: events }; const res = await fetch(API_URL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }); if (res.status === 202) { const data = await res.json(); return data; } else if (res.status === 429) { const retrySec = res.headers.get("Retry-After") || 60; console.warn(`Monthly telemetry quota exceeded. Retry after ${retrySec}s.`); } else { throw new Error(`Ingestion failed with HTTP ${res.status}`); } } // Example dispatch pushTelemetry([ { timestamp: new Date().toISOString(), level: "INFO", event_type: "auth.login_success", payload: { user_id: "usr_1094", auth_method: "passkey" } } ]);

Notice: This documentation outlines the HTTP/2 API specification for Axisforge Events. In compliance with security standards, the public marketing pages of this website do not invoke or record data to this endpoint.

Need Assistance?

Our engineering team assists enterprise clients with telemetry routing, pipeline tuning, and custom export connectors.

Contact Technical Support