Раздел разработчика
API, вебхуки, внешние агенты и всё, что нужно системе для общения с Tenka.
Всё здесь берётся из работающего кода: лимиты, ресурсы, события и двери читаются из платформы, а не набираются вручную. Что меняется в системе — меняется на этой странице.
Первые шаги 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
Первые шагиОт ключа до первого GET за пять минут.SandboxComo obter acesso e testar sem tocar na produção.АутентификацияКлюч на аккаунт, scope на ключ, авторство на пользователя.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.Лимиты и ошибкиЧто возвращает API, когда что-то не так.IdempotênciaRepetir uma escrita sem duplicar o registro.VersionamentoO que pode mudar na v1 e o que nunca muda.ВебхукиTenka уведомляет вашу систему, когда что-то происходит.SDKCliente pronto em JavaScript e Python, gerado do contrato.Двери для системПомимо API: ИИ-агенты, провижининг, корпоративный вход и каналы команды.Журнал измененийКто, что и когда изменил в любой записи.Histórico da APICada mudança de contrato, com data e o que o integrador precisa fazer.Лучшие практикиЧто делает интеграцию долговечной.Частые вопросыО чём интеграторы спрашивают в первую очередь.Статус и песочницаПрежде чем открывать заявку, проверьте, всё ли работает.
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.