Python (SDK)
from meetkai_mka1 import SDK, models
from meetkai_mka1.utils import parse_datetime
with SDK() as sdk:
res = sdk.analytics.capture(security=models.AnalyticsCaptureSecurity(
analytics_capture_key="<YOUR_API_KEY_HERE>",
), idempotency_key="batch-2026-09-01-001", events=[
{
"event_id": "14fb0864-445b-4ed6-8d67-02c93538d668",
"event_name": "page_view",
"timestamp": parse_datetime("2026-09-01T12:30:00Z"),
"distinct_id": "visitor-123",
"properties": {
"pathname": "/pricing",
"plan": "pro",
},
},
])
# Handle response
print(res)import { SDK } from "@meetkai/mka1";
const sdk = new SDK();
async function run() {
const result = await sdk.analytics.capture({
analyticsCaptureKey: "<YOUR_API_KEY_HERE>",
}, {
analyticsCaptureRequest: {
idempotencyKey: "batch-2026-09-01-001",
events: [
{
eventId: "14fb0864-445b-4ed6-8d67-02c93538d668",
eventName: "page_view",
timestamp: new Date("2026-09-01T12:30:00Z"),
distinctId: "visitor-123",
properties: {
"pathname": "/pricing",
"plan": "pro",
},
},
],
},
});
console.log(result);
}
run();using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
using MeetKai.MKA1.Types.Requests;
using System;
using System.Collections.Generic;
var sdk = new SDK();
var res = await sdk.Analytics.CaptureAsync(
security: new AnalyticsCaptureSecurity() {
AnalyticsCaptureKey = "<YOUR_API_KEY_HERE>",
},
body: new MeetKai.MKA1.Types.Components.AnalyticsCaptureRequest() {
IdempotencyKey = "batch-2026-09-01-001",
Events = new List<AnalyticsEvent>() {
new AnalyticsEvent() {
EventId = "14fb0864-445b-4ed6-8d67-02c93538d668",
EventName = "page_view",
Timestamp = System.DateTime.Parse("2026-09-01T12:30:00Z").ToUniversalTime(),
DistinctId = "visitor-123",
Properties = new Dictionary<string, Properties?>() {
{ "pathname", Properties.CreateStr(
"/pricing"
) },
{ "plan", Properties.CreateStr(
"pro"
) },
},
},
},
}
);
// handle responsecurl --request POST \
--url https://apigw.mka1.com/api/v1/analytics/capture \
--header 'Content-Type: application/json' \
--header 'X-Analytics-Key: <api-key>' \
--data '
{
"idempotency_key": "batch-2026-09-01-001",
"events": [
{
"event_id": "14fb0864-445b-4ed6-8d67-02c93538d668",
"event_name": "page_view",
"timestamp": "2026-09-01T12:30:00Z",
"distinct_id": "visitor-123",
"properties": {
"pathname": "/pricing",
"plan": "pro"
}
}
]
}
'const options = {
method: 'POST',
headers: {'X-Analytics-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idempotency_key: 'batch-2026-09-01-001',
events: [
{
event_id: '14fb0864-445b-4ed6-8d67-02c93538d668',
event_name: 'page_view',
timestamp: '2026-09-01T12:30:00Z',
distinct_id: 'visitor-123',
properties: {pathname: '/pricing', plan: 'pro'}
}
]
})
};
fetch('https://apigw.mka1.com/api/v1/analytics/capture', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apigw.mka1.com/api/v1/analytics/capture",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idempotency_key' => 'batch-2026-09-01-001',
'events' => [
[
'event_id' => '14fb0864-445b-4ed6-8d67-02c93538d668',
'event_name' => 'page_view',
'timestamp' => '2026-09-01T12:30:00Z',
'distinct_id' => 'visitor-123',
'properties' => [
'pathname' => '/pricing',
'plan' => 'pro'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Analytics-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apigw.mka1.com/api/v1/analytics/capture"
payload := strings.NewReader("{\n \"idempotency_key\": \"batch-2026-09-01-001\",\n \"events\": [\n {\n \"event_id\": \"14fb0864-445b-4ed6-8d67-02c93538d668\",\n \"event_name\": \"page_view\",\n \"timestamp\": \"2026-09-01T12:30:00Z\",\n \"distinct_id\": \"visitor-123\",\n \"properties\": {\n \"pathname\": \"/pricing\",\n \"plan\": \"pro\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Analytics-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apigw.mka1.com/api/v1/analytics/capture")
.header("X-Analytics-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"idempotency_key\": \"batch-2026-09-01-001\",\n \"events\": [\n {\n \"event_id\": \"14fb0864-445b-4ed6-8d67-02c93538d668\",\n \"event_name\": \"page_view\",\n \"timestamp\": \"2026-09-01T12:30:00Z\",\n \"distinct_id\": \"visitor-123\",\n \"properties\": {\n \"pathname\": \"/pricing\",\n \"plan\": \"pro\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apigw.mka1.com/api/v1/analytics/capture")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Analytics-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotency_key\": \"batch-2026-09-01-001\",\n \"events\": [\n {\n \"event_id\": \"14fb0864-445b-4ed6-8d67-02c93538d668\",\n \"event_name\": \"page_view\",\n \"timestamp\": \"2026-09-01T12:30:00Z\",\n \"distinct_id\": \"visitor-123\",\n \"properties\": {\n \"pathname\": \"/pricing\",\n \"plan\": \"pro\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "<string>",
"duplicate": true,
"event_count": 0
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}Eventos
Capture events
Envía un lote de eventos utilizando el encabezado X-Analytics-Key del proyecto. Una respuesta 202 confirma que el lote se ha almacenado; los eventos estarán disponibles para las consultas después del procesamiento en segundo plano. Vuelve a intentarlo con la misma idempotency_key y sin cambios en los eventos si no recibes una respuesta.
POST
/
api
/
v1
/
analytics
/
capture
Python (SDK)
from meetkai_mka1 import SDK, models
from meetkai_mka1.utils import parse_datetime
with SDK() as sdk:
res = sdk.analytics.capture(security=models.AnalyticsCaptureSecurity(
analytics_capture_key="<YOUR_API_KEY_HERE>",
), idempotency_key="batch-2026-09-01-001", events=[
{
"event_id": "14fb0864-445b-4ed6-8d67-02c93538d668",
"event_name": "page_view",
"timestamp": parse_datetime("2026-09-01T12:30:00Z"),
"distinct_id": "visitor-123",
"properties": {
"pathname": "/pricing",
"plan": "pro",
},
},
])
# Handle response
print(res)import { SDK } from "@meetkai/mka1";
const sdk = new SDK();
async function run() {
const result = await sdk.analytics.capture({
analyticsCaptureKey: "<YOUR_API_KEY_HERE>",
}, {
analyticsCaptureRequest: {
idempotencyKey: "batch-2026-09-01-001",
events: [
{
eventId: "14fb0864-445b-4ed6-8d67-02c93538d668",
eventName: "page_view",
timestamp: new Date("2026-09-01T12:30:00Z"),
distinctId: "visitor-123",
properties: {
"pathname": "/pricing",
"plan": "pro",
},
},
],
},
});
console.log(result);
}
run();using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
using MeetKai.MKA1.Types.Requests;
using System;
using System.Collections.Generic;
var sdk = new SDK();
var res = await sdk.Analytics.CaptureAsync(
security: new AnalyticsCaptureSecurity() {
AnalyticsCaptureKey = "<YOUR_API_KEY_HERE>",
},
body: new MeetKai.MKA1.Types.Components.AnalyticsCaptureRequest() {
IdempotencyKey = "batch-2026-09-01-001",
Events = new List<AnalyticsEvent>() {
new AnalyticsEvent() {
EventId = "14fb0864-445b-4ed6-8d67-02c93538d668",
EventName = "page_view",
Timestamp = System.DateTime.Parse("2026-09-01T12:30:00Z").ToUniversalTime(),
DistinctId = "visitor-123",
Properties = new Dictionary<string, Properties?>() {
{ "pathname", Properties.CreateStr(
"/pricing"
) },
{ "plan", Properties.CreateStr(
"pro"
) },
},
},
},
}
);
// handle responsecurl --request POST \
--url https://apigw.mka1.com/api/v1/analytics/capture \
--header 'Content-Type: application/json' \
--header 'X-Analytics-Key: <api-key>' \
--data '
{
"idempotency_key": "batch-2026-09-01-001",
"events": [
{
"event_id": "14fb0864-445b-4ed6-8d67-02c93538d668",
"event_name": "page_view",
"timestamp": "2026-09-01T12:30:00Z",
"distinct_id": "visitor-123",
"properties": {
"pathname": "/pricing",
"plan": "pro"
}
}
]
}
'const options = {
method: 'POST',
headers: {'X-Analytics-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idempotency_key: 'batch-2026-09-01-001',
events: [
{
event_id: '14fb0864-445b-4ed6-8d67-02c93538d668',
event_name: 'page_view',
timestamp: '2026-09-01T12:30:00Z',
distinct_id: 'visitor-123',
properties: {pathname: '/pricing', plan: 'pro'}
}
]
})
};
fetch('https://apigw.mka1.com/api/v1/analytics/capture', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apigw.mka1.com/api/v1/analytics/capture",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idempotency_key' => 'batch-2026-09-01-001',
'events' => [
[
'event_id' => '14fb0864-445b-4ed6-8d67-02c93538d668',
'event_name' => 'page_view',
'timestamp' => '2026-09-01T12:30:00Z',
'distinct_id' => 'visitor-123',
'properties' => [
'pathname' => '/pricing',
'plan' => 'pro'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Analytics-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apigw.mka1.com/api/v1/analytics/capture"
payload := strings.NewReader("{\n \"idempotency_key\": \"batch-2026-09-01-001\",\n \"events\": [\n {\n \"event_id\": \"14fb0864-445b-4ed6-8d67-02c93538d668\",\n \"event_name\": \"page_view\",\n \"timestamp\": \"2026-09-01T12:30:00Z\",\n \"distinct_id\": \"visitor-123\",\n \"properties\": {\n \"pathname\": \"/pricing\",\n \"plan\": \"pro\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Analytics-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apigw.mka1.com/api/v1/analytics/capture")
.header("X-Analytics-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"idempotency_key\": \"batch-2026-09-01-001\",\n \"events\": [\n {\n \"event_id\": \"14fb0864-445b-4ed6-8d67-02c93538d668\",\n \"event_name\": \"page_view\",\n \"timestamp\": \"2026-09-01T12:30:00Z\",\n \"distinct_id\": \"visitor-123\",\n \"properties\": {\n \"pathname\": \"/pricing\",\n \"plan\": \"pro\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apigw.mka1.com/api/v1/analytics/capture")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Analytics-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotency_key\": \"batch-2026-09-01-001\",\n \"events\": [\n {\n \"event_id\": \"14fb0864-445b-4ed6-8d67-02c93538d668\",\n \"event_name\": \"page_view\",\n \"timestamp\": \"2026-09-01T12:30:00Z\",\n \"distinct_id\": \"visitor-123\",\n \"properties\": {\n \"pathname\": \"/pricing\",\n \"plan\": \"pro\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "<string>",
"duplicate": true,
"event_count": 0
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}Autorizaciones
Public project capture credential. Use a separate capture-only MKA1 client without privileged credentials.
Encabezados
Optional external end-user identifier forwarded by the API gateway.
Cuerpo
application/json
Identificador único para este lote. Reutilízalo con los mismos eventos al reintentar. Reutilizarlo con eventos diferentes devuelve 409.
Required string length:
1 - 128Pattern:
^[^\u0000]*$Required array length:
1 - 500 elementsShow child attributes
Show child attributes
¿Esta página le ayudó?
⌘I