API keys, webhooks, eventos y un playground para probar todo sin salir de acá.
REST, JSON, paginación por cursor. Autenticación con Bearer token.
curl https://api.tinkay.app/v1/contacts?limit=25 \
-H "Authorization: Bearer dk_live_4f2a…" \
-H "Accept: application/json"{
"object": "list",
"data": [
{ "id": "ct_juan", "object": "contact", "name": "Juan Pérez", "email": "[email protected]", "country": "Argentina" }
],
"next_cursor": "ct_camila",
"has_more": true
}El mismo pedido en cada stack: listar conversaciones abiertas y crear un contacto.
using System.Net.Http.Headers;using System.Net.Http.Json;var http = new HttpClient { BaseAddress = new Uri("https://api.tinkay.app/v1/") };http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("TINKAY_API_KEY"));http.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));// Conversaciones abiertas, 25 por páginavar page = await http.GetFromJsonAsync<TinkayPage<Conversation>>("conversations?status=open&limit=25");foreach (var c in page!.Data) Console.WriteLine($"{c.Id} · {c.Subject} · {c.Status}");// Crear un contactovar created = await http.PostAsJsonAsync("contacts", new{ name = "Juan Pérez", email = "[email protected]", attributes = new { plan = "Pro" }});created.EnsureSuccessStatusCode();record TinkayPage<T>(T[] Data, string? NextCursor, bool HasMore);record Conversation(string Id, string Subject, string Status);La API key vive en una variable de entorno del servidor. Nunca la expongas en el navegador ni en apps móviles.