Área do desenvolvedor
API, webhooks, agentes externos e o que mais um sistema precisa para conversar com o Tenka.
Tudo aqui vem do código que está no ar: os limites, os recursos, os eventos e as portas são lidos da plataforma, não digitados. O que mudar no sistema muda nesta página.
Começar Baixar openapi.json Abrir no Swagger
A primeira chamada
Troque a variável TENKA_API_KEY pela chave criada em Configurações › API. A resposta diz qual conta a chave enxerga.
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 gerado do contrato — baixe em 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);Guias
ComeçarDa chave ao primeiro GET em cinco minutos.SandboxComo obter acesso e testar sem tocar na produção.AutenticaçãoChave por conta, escopo por chave, autoria por usuário.Paginação e sincronizaçãoPágina a página ou só o que mudou desde a última vez.ErrosToda mensagem que a API devolve, com o motivo e o que fazer.LimitesOs tetos que a plataforma aplica, lidos do código.IdempotênciaRepetir uma escrita sem duplicar o registro.VersionamentoO que pode mudar na v1 e o que nunca muda.WebhooksO Tenka avisa o seu sistema quando algo acontece.SDKCliente pronto em JavaScript e Python, gerado do contrato.Agentes de IA (MCP e A2A)Agentes externos, provisionamento e login corporativo.Log de alteraçõesQuem mudou o quê e quando, em qualquer registro.Histórico da APICada mudança de contrato, com data e o que o integrador precisa fazer.Boas práticasO que faz a integração durar.Perguntas frequentesO que quem integra pergunta primeiro.Status e demonstraçãoAntes de abrir chamado, veja se está tudo no ar.
Referência por recurso
Tenant1 operaçãoCadastros2 operaçõesCRM1 operaçãoLeitura16 operaçõesComercial1 operaçãoFinanceiro1 operaçãoOperação1 operaçãoTêxtil2 operaçõesAlterações10 operaçõesLote3 operaçõesAnalítico2 operações
Gerado do contrato OpenAPI v1.2.0, o mesmo que o openapi.json publica.