Developer area
API, webhooks, external agents and whatever else a system needs to talk to Tenka.
Everything here comes from the code that is live: limits, resources, events and doors are read from the platform, not typed. What changes in the system changes on this page.
Getting started Download openapi.json Open in Swagger
The first call
Set TENKA_API_KEY to the key created in Settings › API. The response tells which account the key sees.
cURL
curl "https://tenka.app.br/api/v1/me" \
-H "Authorization: Bearer $TENKA_API_KEY"JavaScript
const response = await fetch("https://tenka.app.br/api/v1/me", {
method: "GET",
headers: {
"Authorization": "Bearer " + TENKA_API_KEY
}
});
const data = await response.json();
if (!response.ok || data.erro) throw new Error(response.status + " " + data.erro);
console.log(data);Python
import os
import requests
response = requests.get(
"https://tenka.app.br/api/v1/me",
headers={
"Authorization": f"Bearer {os.environ['TENKA_API_KEY']}",
},
timeout=30,
)
data = response.json()
if not response.ok or "erro" in data:
raise RuntimeError(f"{response.status_code} {data.get('erro')}")
print(data)Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("https://tenka.app.br/api/v1/me"))
.header("Authorization", "Bearer " + System.getenv("TENKA_API_KEY"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());C#
using System.Net.Http.Headers;
using System.Text;
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("TENKA_API_KEY"));
var request = new HttpRequestMessage(HttpMethod.Get, "https://tenka.app.br/api/v1/me");
var response = await http.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");PHP
<?php
$ch = curl_init("https://tenka.app.br/api/v1/me");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("TENKA_API_KEY"),
],
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($body, true);
echo $status . " " . $body;Node (SDK)
// SDK generated from the contract — download at https://tenka.app.br/api/v1/sdk/tenka.js
import { Tenka } from "./tenka.js";
const tenka = new Tenka(process.env.TENKA_API_KEY, "https://tenka.app.br/api/v1");
const data = await tenka.getMe({});
console.log(data);Guides
Getting startedFrom key to first GET in five minutes.SandboxHow to get access and test without touching production.AuthenticationOne key per account, a scope per key, authorship per user.Pagination and syncPage by page, or only what changed since last time.ErrorsEvery message the API returns, with the reason and what to do.LimitsThe ceilings the platform enforces, read from code.IdempotencyRetry a write without duplicating the record.VersioningWhat may change in v1 and what never does.WebhooksTenka tells your system when something happens.SDKReady-made JavaScript and Python client, generated from the contract.AI agents (MCP and A2A)External agents, provisioning and corporate sign-in.Change logWho changed what and when, on any record.API historyEvery contract change, dated, with what integrators must do.Best practicesWhat makes an integration last.FAQWhat integrators ask first.Status and demoBefore opening a ticket, check that everything is up.
Reference by resource
Account1 operationRecords2 operationsCRM1 operationRead16 operationsSales1 operationFinance1 operationOperations1 operationTêxtil2 operationsChange log10 operationsBatch3 operationsAnalytics2 operations
Generated from OpenAPI contract v1.2.0, the same one openapi.json publishes.