[{"data":1,"prerenderedAt":566},["ShallowReactive",2],{"developers:\u002Fdevelopers\u002Fes\u002Ffaq":3},{"doc":4,"lang":392,"nav":403,"alternatePath":495,"policy":496,"specVersion":540,"reference":7,"layout":541,"toc":542,"prev":564,"next":7,"operations":565,"overview":7,"heroExample":7},{"id":5,"title":6,"apiTag":7,"body":8,"description":389,"draft":390,"extension":391,"lang":392,"meta":393,"navTitle":6,"navigation":394,"order":395,"path":396,"rawbody":397,"section":398,"seo":399,"stem":400,"translationKey":401,"version":7,"__hash__":402},"developers_es\u002Fdevelopers\u002Fes\u002Ffaq.md","Preguntas frecuentes",null,{"type":9,"value":10,"toc":357},"minimark",[11,16,21,49,53,71,75,93,97,108,112,116,124,128,131,135,149,153,157,168,172,180,184,199,203,207,222,226,249,253,257,300,304,308,345,349],[12,13,15],"h2",{"id":14},"acceso-y-claves","Acceso y claves",[17,18,20],"h3",{"id":19},"cómo-consigo-una-clave","¿Cómo consigo una clave?",[22,23,24,25,35,36,39,40,44,45,48],"p",{},"Un administrador de tu equipo de Totem crea una integración en ",[26,27,31],"a",{"href":28,"rel":29},"https:\u002F\u002Fapp.totemstudio.ai\u002Fsettings?tab=developers",[30],"nofollow",[32,33,34],"strong",{},"Ajustes → Desarrolladores"," y copia su clave secreta en el almacén de secretos de tu servidor. La API está en ",[32,37,38],{},"Beta",", sin invitación. El administrador necesita una dirección de correo verificada, tu organización necesita el plan Pro o uno superior, o acceso a la API acordado con Totem, y el equipo debe haber completado su configuración legal; el ",[26,41,43],{"href":42},"\u002Fdevelopers\u002Fes\u002Fquickstart#antes-de-empezar","Inicio rápido"," enumera todos los requisitos y qué comprobar si no ves ",[32,46,47],{},"Crear clave API",". Después te guía en tus primeras peticiones.",[17,50,52],{"id":51},"puede-una-clave-leer-varios-equipos","¿Puede una clave leer varios equipos?",[22,54,55,56,60,61,65,66,70],{},"Sí, si los equipos pertenecen a la misma organización, y solo un administrador de la familia puede crear una clave así. Una integración cubre una lista explícita de hasta ",[57,58],"api-const",{"name":59},"MAX_FAMILY_INTEGRATION_TEAMS"," equipos. Las peticiones sobre las colecciones de un equipo indican entonces el equipo en la cabecera ",[62,63,64],"code",{},"Totem-Team",", y guardas un cursor del feed de cambios por equipo. Consulta ",[26,67,69],{"href":68},"\u002Fdevelopers\u002Fes\u002Fauthentication","Autenticación",".",[17,72,74],{"id":73},"puedo-limitar-una-clave-a-las-direcciones-ip-de-mis-servidores","¿Puedo limitar una clave a las direcciones IP de mis servidores?",[22,76,77,78,81,82,84,85,88,89,92],{},"Sí. Una integración puede llevar una lista de hasta ",[57,79],{"name":80},"MAX_IP_ALLOWLIST"," direcciones IP o rangos CIDR permitidos, que se configura en ",[32,83,34],{},". La API solo es accesible por IPv4, así que indica las direcciones IPv4 públicas desde las que salen tus peticiones. Una petición desde cualquier otra dirección recibe ",[62,86,87],{},"403 ip_not_allowed",". En ",[26,90,69],{"href":91},"\u002Fdevelopers\u002Fes\u002Fauthentication#lista-de-ip-permitidas"," se explica cómo configurarla.",[17,94,96],{"id":95},"puedo-llamar-a-la-api-desde-un-navegador-o-una-app-móvil","¿Puedo llamar a la API desde un navegador o una app móvil?",[22,98,99,100,103,104,107],{},"No. Una clave lee datos con nivel de administrador, así que debe quedarse en tu servidor. La API no envía cabeceras CORS y responde ",[62,101,102],{},"400 secret_key_in_browser"," a una petición que lleve una clave y una cabecera ",[62,105,106],{},"Origin",". Llama a la API desde tu backend y envía a tu app solo los datos que necesita.",[12,109,111],{"id":110},"datos","Datos",[17,113,115],{"id":114},"puedo-escribir-datos-con-la-api","¿Puedo escribir datos con la API?",[22,117,118,119,123],{},"No. La versión 1.0a es de solo lectura: ningún endpoint crea ni modifica nada en Totem. El ",[26,120,122],{"href":121},"\u002Fdevelopers\u002Fes\u002Fchangelog","registro de cambios"," anuncia cualquier capacidad nueva.",[17,125,127],{"id":126},"puedo-leer-el-texto-de-los-mensajes-las-transcripciones-o-las-grabaciones","¿Puedo leer el texto de los mensajes, las transcripciones o las grabaciones?",[22,129,130],{},"No. La versión 1.0a devuelve datos de contacto, como nombres, correos electrónicos y teléfonos, y metadatos. No devuelve el texto de los mensajes, las transcripciones de llamadas, los resúmenes, las grabaciones, las notas, las respuestas de texto libre ni los campos personalizados de los formularios. Una conversación indica su canal, su estado y cuándo llegaron y salieron los últimos mensajes. Una llamada indica su dirección, su duración y su resultado.",[17,132,134],{"id":133},"cómo-busco-un-lead-por-teléfono-o-por-correo-electrónico","¿Cómo busco un lead por teléfono o por correo electrónico?",[22,136,137,138,144,145,148],{},"Envía el teléfono o la dirección de correo electrónico en el cuerpo JSON de ",[26,139,141],{"href":140},"\u002Fdevelopers\u002Fes\u002Freference-leads#leads.search",[62,142,143],{},"POST \u002Fv1\u002Fleads\u002Fsearch",", nunca en una URL. Envía exactamente uno de los dos. La búsqueda es exacta, devuelve como máximo ",[57,146],{"name":147},"SEARCH_MAX_RESULTS"," leads y nunca pagina, así que, si muchos registros comparten el mismo teléfono o correo electrónico, puede que no los devuelva todos.",[12,150,152],{"id":151},"sincronización-y-actualidad","Sincronización y actualidad",[17,154,156],{"id":155},"hay-webhooks","¿Hay webhooks?",[22,158,159,160,163,164,70],{},"No. La API de Totem no tiene webhooks: lee el feed de cambios con tu cursor guardado cada 1 a 5 minutos. Los webhooks que incluyen los planes de Totem son otra función del producto, que se configura en Totem y no con una clave de la API. Una consulta que no encuentra nada nuevo devuelve una página vacía que, aun así, hace avanzar tu cursor, así que guarda también su ",[62,161,162],{},"next_cursor",". Consulta ",[26,165,167],{"href":166},"\u002Fdevelopers\u002Fes\u002Fsync","Sincroniza una copia",[17,169,171],{"id":170},"cuánto-tardan-en-aparecer-los-cambios","¿Cuánto tardan en aparecer los cambios?",[22,173,174,175,179],{},"Poco después de producirse en Totem. El feed de cambios retiene sus últimos ",[57,176],{"name":177,"divide":178},"FEED_SETTLE_LAG_MS","1000"," segundos, para no saltarse nunca un cambio que todavía se está escribiendo. Si consultas cada 1 a 5 minutos, tu copia va más o menos ese tiempo por detrás de Totem.",[17,181,183],{"id":182},"por-qué-un-registro-nuevo-responde-404-durante-un-momento","¿Por qué un registro nuevo responde 404 durante un momento?",[22,185,186,187,190,191,194,195,70],{},"Totem prepara cada registro para la API poco después de que cambie. Hasta entonces, las listas y la búsqueda omiten un registro nuevo, y ",[62,188,189],{},"GET"," sobre su identificador responde ",[62,192,193],{},"404 resource_missing",". El feed de cambios entrega el registro en cuanto está listo. Consulta ",[26,196,198],{"href":197},"\u002Fdevelopers\u002Fes\u002Fpagination","Listas y paginación",[12,200,202],{"id":201},"pruebas-y-herramientas","Pruebas y herramientas",[17,204,206],{"id":205},"hay-un-entorno-de-pruebas","¿Hay un entorno de pruebas?",[22,208,209,210,217,218,70],{},"Todavía no. La versión 1.0a no tiene entorno de pruebas ni claves de prueba: cada clave lee un equipo real. Usa un equipo dedicado que solo contenga contactos ficticios. El archivo ",[26,211,214],{"href":212,"rel":213},"https:\u002F\u002Ftotemstudio.ai\u002Fdevelopers\u002Fkit\u002Ffixtures.json",[30],[62,215,216],{},"fixtures.json"," del kit contiene datos de ejemplo para tus pruebas unitarias. Consulta ",[26,219,221],{"href":220},"\u002Fdevelopers\u002Fes\u002Ftesting","Pruebas y puesta en producción",[17,223,225],{"id":224},"hay-un-sdk","¿Hay un SDK?",[22,227,228,229,233,234,237,238,242,243,248],{},"Sí. El ",[26,230,232],{"href":231},"\u002Fdevelopers\u002Fes\u002Ftypescript","SDK oficial de TypeScript",", ",[62,235,236],{},"@totemstudioai\u002Fsdk",", cubre todos los endpoints y ofrece respuestas tipadas, paginación y errores de la API. Se ejecuta en tu servidor, con las versiones de Node.js que indica su página. Para mantener una copia de un equipo, parte del ",[26,239,241],{"href":240},"\u002Fdevelopers\u002Fes\u002Fsync#cliente-de-referencia-probado","cliente de referencia probado"," de la guía de sincronización. El ",[26,244,247],{"href":245,"rel":246},"https:\u002F\u002Ftotemstudio.ai\u002Fdevelopers\u002Fkit\u002Fopenapi.json",[30],"documento OpenAPI"," sigue disponible para otros lenguajes.",[12,250,252],{"id":251},"límites","Límites",[17,254,256],{"id":255},"cuáles-son-los-límites","¿Cuáles son los límites?",[22,258,259,260,263,264,267,268,271,272,275,276,279,280,283,284,287,288,291,292,295,296,70],{},"Una clave lee hasta ",[57,261],{"name":262},"SYNC_VELOCITY.perMinute"," elementos por minuto, con ráfagas de hasta ",[57,265],{"name":266},"SYNC_VELOCITY.burst",". Cada día UTC, los endpoints de lista y el feed de cambios le devuelven hasta ",[57,269],{"name":270},"SYNC_DAILY_BUDGET.floor"," elementos, o ",[57,273],{"name":274},"SYNC_DAILY_BUDGET.recordsMultiplier"," veces el número de registros de sus equipos si es mayor; las peticiones de un solo registro, la búsqueda y ",[62,277,278],{},"GET \u002Fv1\u002Fme"," no cuentan para esa cuota. Una página contiene hasta ",[57,281],{"name":282},"PAGE_LIMIT.max"," elementos. Al superar un límite, la API responde ",[62,285,286],{},"429"," con ",[62,289,290],{},"Retry-After",": espera esos segundos y continúa con el mismo cursor. Durante la Beta estas cifras son aproximadas, y una organización puede tener hasta ",[57,293],{"name":294},"MAX_INTEGRATIONS_PER_FAMILY"," integraciones activas. Consulta ",[26,297,299],{"href":298},"\u002Fdevelopers\u002Fes\u002Frate-limits","Límites de frecuencia y cuota",[12,301,303],{"id":302},"privacidad","Privacidad",[17,305,307],{"id":306},"cómo-respeto-las-solicitudes-de-supresión","¿Cómo respeto las solicitudes de supresión?",[22,309,310,311,314,315,318,319,322,323,326,327,330,331,334,335,338,339,342,343,70],{},"Cuando un registro se suprime en Totem, el feed de cambios entrega una eliminación con ",[62,312,313],{},"reason: \"erased\"",". Suprimir un lead también suprime sus llamadas, sus conversaciones y los leads archivados que se fusionaron con él, y cada uno llega como una eliminación propia; sus citas se conservan, con ",[62,316,317],{},"lead"," igual a ",[62,320,321],{},"null",". Borra el registro de tu copia y de todos los sistemas a los que lo pasaste, y conserva solo su marca de eliminación: su ",[62,324,325],{},"kind",", su ",[62,328,329],{},"id"," y su ",[62,332,333],{},"version",". Las eliminaciones permanecen en el feed ",[57,336],{"name":337},"REMOVAL_RETENTION_DAYS"," días, más de lo que vive un cursor, así que una sincronización que sigue consultando con éxito nunca se pierde ninguna. Mientras la API rechaza un equipo, no llega ninguna eliminación de él y, si el acceso vuelve cuando su cursor ya ha caducado, la resincronización completa borra lo que se eliminó mientras tanto. Un equipo de un sector excluido (",[62,340,341],{},"sector_restricted",") no recibe eliminaciones hasta que Totem cambie su política de sectores, así que conserva su copia solo mientras lo permita tu política de conservación. Consulta ",[26,344,167],{"href":166},[17,346,348],{"id":347},"dónde-funciona-la-api-y-quién-protege-los-datos-que-copio","¿Dónde funciona la API y quién protege los datos que copio?",[22,350,351,352,356],{},"La API funciona en Google Cloud, en la Unión Europea, y solo responde por HTTPS. Una vez copias los datos, protegerlos os corresponde a ti y al cliente al que pertenecen. En ",[26,353,355],{"href":354},"\u002Fdevelopers\u002Fes\u002Fsecurity","Seguridad y datos personales"," se explican las dos cosas y cómo informar de una vulnerabilidad.",{"title":358,"searchDepth":359,"depth":359,"links":360},"",3,[361,368,373,378,382,385],{"id":14,"depth":362,"text":15,"children":363},2,[364,365,366,367],{"id":19,"depth":359,"text":20},{"id":51,"depth":359,"text":52},{"id":73,"depth":359,"text":74},{"id":95,"depth":359,"text":96},{"id":110,"depth":362,"text":111,"children":369},[370,371,372],{"id":114,"depth":359,"text":115},{"id":126,"depth":359,"text":127},{"id":133,"depth":359,"text":134},{"id":151,"depth":362,"text":152,"children":374},[375,376,377],{"id":155,"depth":359,"text":156},{"id":170,"depth":359,"text":171},{"id":182,"depth":359,"text":183},{"id":201,"depth":362,"text":202,"children":379},[380,381],{"id":205,"depth":359,"text":206},{"id":224,"depth":359,"text":225},{"id":251,"depth":362,"text":252,"children":383},[384],{"id":255,"depth":359,"text":256},{"id":302,"depth":362,"text":303,"children":386},[387,388],{"id":306,"depth":359,"text":307},{"id":347,"depth":359,"text":348},"Respuestas breves a las preguntas más habituales sobre la API de Totem, con enlaces a los detalles.",false,"md","es",{},true,"4","\u002Fdevelopers\u002Fes\u002Ffaq","---\ntitle: Preguntas frecuentes\ndescription: Respuestas breves a las preguntas más habituales sobre la API de Totem, con enlaces a los detalles.\nnavTitle: Preguntas frecuentes\nsection: resources\norder: 4\ntranslationKey: faq\nlang: es\ndraft: false\n---\n\n## Acceso y claves\n\n### ¿Cómo consigo una clave?\n\nUn administrador de tu equipo de Totem crea una integración en [**Ajustes → Desarrolladores**](https:\u002F\u002Fapp.totemstudio.ai\u002Fsettings?tab=developers) y copia su clave secreta en el almacén de secretos de tu servidor. La API está en **Beta**, sin invitación. El administrador necesita una dirección de correo verificada, tu organización necesita el plan Pro o uno superior, o acceso a la API acordado con Totem, y el equipo debe haber completado su configuración legal; el [Inicio rápido](\u002Fdevelopers\u002Fes\u002Fquickstart#antes-de-empezar) enumera todos los requisitos y qué comprobar si no ves **Crear clave API**. Después te guía en tus primeras peticiones.\n\n### ¿Puede una clave leer varios equipos?\n\nSí, si los equipos pertenecen a la misma organización, y solo un administrador de la familia puede crear una clave así. Una integración cubre una lista explícita de hasta :api-const{name=\"MAX_FAMILY_INTEGRATION_TEAMS\"} equipos. Las peticiones sobre las colecciones de un equipo indican entonces el equipo en la cabecera `Totem-Team`, y guardas un cursor del feed de cambios por equipo. Consulta [Autenticación](\u002Fdevelopers\u002Fes\u002Fauthentication).\n\n### ¿Puedo limitar una clave a las direcciones IP de mis servidores?\n\nSí. Una integración puede llevar una lista de hasta :api-const{name=\"MAX_IP_ALLOWLIST\"} direcciones IP o rangos CIDR permitidos, que se configura en **Ajustes → Desarrolladores**. La API solo es accesible por IPv4, así que indica las direcciones IPv4 públicas desde las que salen tus peticiones. Una petición desde cualquier otra dirección recibe `403 ip_not_allowed`. En [Autenticación](\u002Fdevelopers\u002Fes\u002Fauthentication#lista-de-ip-permitidas) se explica cómo configurarla.\n\n### ¿Puedo llamar a la API desde un navegador o una app móvil?\n\nNo. Una clave lee datos con nivel de administrador, así que debe quedarse en tu servidor. La API no envía cabeceras CORS y responde `400 secret_key_in_browser` a una petición que lleve una clave y una cabecera `Origin`. Llama a la API desde tu backend y envía a tu app solo los datos que necesita.\n\n## Datos\n\n### ¿Puedo escribir datos con la API?\n\nNo. La versión 1.0a es de solo lectura: ningún endpoint crea ni modifica nada en Totem. El [registro de cambios](\u002Fdevelopers\u002Fes\u002Fchangelog) anuncia cualquier capacidad nueva.\n\n### ¿Puedo leer el texto de los mensajes, las transcripciones o las grabaciones?\n\nNo. La versión 1.0a devuelve datos de contacto, como nombres, correos electrónicos y teléfonos, y metadatos. No devuelve el texto de los mensajes, las transcripciones de llamadas, los resúmenes, las grabaciones, las notas, las respuestas de texto libre ni los campos personalizados de los formularios. Una conversación indica su canal, su estado y cuándo llegaron y salieron los últimos mensajes. Una llamada indica su dirección, su duración y su resultado.\n\n### ¿Cómo busco un lead por teléfono o por correo electrónico?\n\nEnvía el teléfono o la dirección de correo electrónico en el cuerpo JSON de [`POST \u002Fv1\u002Fleads\u002Fsearch`](\u002Fdevelopers\u002Fes\u002Freference-leads#leads.search), nunca en una URL. Envía exactamente uno de los dos. La búsqueda es exacta, devuelve como máximo :api-const{name=\"SEARCH_MAX_RESULTS\"} leads y nunca pagina, así que, si muchos registros comparten el mismo teléfono o correo electrónico, puede que no los devuelva todos.\n\n## Sincronización y actualidad\n\n### ¿Hay webhooks?\n\nNo. La API de Totem no tiene webhooks: lee el feed de cambios con tu cursor guardado cada 1 a 5 minutos. Los webhooks que incluyen los planes de Totem son otra función del producto, que se configura en Totem y no con una clave de la API. Una consulta que no encuentra nada nuevo devuelve una página vacía que, aun así, hace avanzar tu cursor, así que guarda también su `next_cursor`. Consulta [Sincroniza una copia](\u002Fdevelopers\u002Fes\u002Fsync).\n\n### ¿Cuánto tardan en aparecer los cambios?\n\nPoco después de producirse en Totem. El feed de cambios retiene sus últimos :api-const{name=\"FEED_SETTLE_LAG_MS\" divide=\"1000\"} segundos, para no saltarse nunca un cambio que todavía se está escribiendo. Si consultas cada 1 a 5 minutos, tu copia va más o menos ese tiempo por detrás de Totem.\n\n### ¿Por qué un registro nuevo responde 404 durante un momento?\n\nTotem prepara cada registro para la API poco después de que cambie. Hasta entonces, las listas y la búsqueda omiten un registro nuevo, y `GET` sobre su identificador responde `404 resource_missing`. El feed de cambios entrega el registro en cuanto está listo. Consulta [Listas y paginación](\u002Fdevelopers\u002Fes\u002Fpagination).\n\n## Pruebas y herramientas\n\n### ¿Hay un entorno de pruebas?\n\nTodavía no. La versión 1.0a no tiene entorno de pruebas ni claves de prueba: cada clave lee un equipo real. Usa un equipo dedicado que solo contenga contactos ficticios. El archivo [`fixtures.json`](https:\u002F\u002Ftotemstudio.ai\u002Fdevelopers\u002Fkit\u002Ffixtures.json) del kit contiene datos de ejemplo para tus pruebas unitarias. Consulta [Pruebas y puesta en producción](\u002Fdevelopers\u002Fes\u002Ftesting).\n\n### ¿Hay un SDK?\n\nSí. El [SDK oficial de TypeScript](\u002Fdevelopers\u002Fes\u002Ftypescript), `@totemstudioai\u002Fsdk`, cubre todos los endpoints y ofrece respuestas tipadas, paginación y errores de la API. Se ejecuta en tu servidor, con las versiones de Node.js que indica su página. Para mantener una copia de un equipo, parte del [cliente de referencia probado](\u002Fdevelopers\u002Fes\u002Fsync#cliente-de-referencia-probado) de la guía de sincronización. El [documento OpenAPI](https:\u002F\u002Ftotemstudio.ai\u002Fdevelopers\u002Fkit\u002Fopenapi.json) sigue disponible para otros lenguajes.\n\n## Límites\n\n### ¿Cuáles son los límites?\n\nUna clave lee hasta :api-const{name=\"SYNC_VELOCITY.perMinute\"} elementos por minuto, con ráfagas de hasta :api-const{name=\"SYNC_VELOCITY.burst\"}. Cada día UTC, los endpoints de lista y el feed de cambios le devuelven hasta :api-const{name=\"SYNC_DAILY_BUDGET.floor\"} elementos, o :api-const{name=\"SYNC_DAILY_BUDGET.recordsMultiplier\"} veces el número de registros de sus equipos si es mayor; las peticiones de un solo registro, la búsqueda y `GET \u002Fv1\u002Fme` no cuentan para esa cuota. Una página contiene hasta :api-const{name=\"PAGE_LIMIT.max\"} elementos. Al superar un límite, la API responde `429` con `Retry-After`: espera esos segundos y continúa con el mismo cursor. Durante la Beta estas cifras son aproximadas, y una organización puede tener hasta :api-const{name=\"MAX_INTEGRATIONS_PER_FAMILY\"} integraciones activas. Consulta [Límites de frecuencia y cuota](\u002Fdevelopers\u002Fes\u002Frate-limits).\n\n## Privacidad\n\n### ¿Cómo respeto las solicitudes de supresión?\n\nCuando un registro se suprime en Totem, el feed de cambios entrega una eliminación con `reason: \"erased\"`. Suprimir un lead también suprime sus llamadas, sus conversaciones y los leads archivados que se fusionaron con él, y cada uno llega como una eliminación propia; sus citas se conservan, con `lead` igual a `null`. Borra el registro de tu copia y de todos los sistemas a los que lo pasaste, y conserva solo su marca de eliminación: su `kind`, su `id` y su `version`. Las eliminaciones permanecen en el feed :api-const{name=\"REMOVAL_RETENTION_DAYS\"} días, más de lo que vive un cursor, así que una sincronización que sigue consultando con éxito nunca se pierde ninguna. Mientras la API rechaza un equipo, no llega ninguna eliminación de él y, si el acceso vuelve cuando su cursor ya ha caducado, la resincronización completa borra lo que se eliminó mientras tanto. Un equipo de un sector excluido (`sector_restricted`) no recibe eliminaciones hasta que Totem cambie su política de sectores, así que conserva su copia solo mientras lo permita tu política de conservación. Consulta [Sincroniza una copia](\u002Fdevelopers\u002Fes\u002Fsync).\n\n### ¿Dónde funciona la API y quién protege los datos que copio?\n\nLa API funciona en Google Cloud, en la Unión Europea, y solo responde por HTTPS. Una vez copias los datos, protegerlos os corresponde a ti y al cliente al que pertenecen. En [Seguridad y datos personales](\u002Fdevelopers\u002Fes\u002Fsecurity) se explican las dos cosas y cómo informar de una vulnerabilidad.\n","resources",{"title":6,"description":389},"developers\u002Fes\u002Ffaq","faq","JWxHmbybvzSJ2IhgWdyZsSh0sRX30CNWkwXsRc0MmG0",[404,416,434,481],{"section":405,"items":406},"start",[407,411,414],{"path":408,"title":409,"description":410},"\u002Fdevelopers\u002Fes","Introducción","Lee desde tus propios sistemas los leads, las llamadas, las conversaciones y las citas de tus equipos de Totem, y mantén una copia sincronizada.",{"path":412,"title":43,"description":413},"\u002Fdevelopers\u002Fes\u002Fquickstart","Haz tus primeras peticiones a la API de Totem en unos minutos. Comprueba tu clave, busca tu equipo, lista leads e inicia una sincronización.",{"path":68,"title":69,"description":415},"Las claves secretas y dónde pueden guardarse, la cabecera Totem-Team de las claves con varios equipos, la lista de IP permitidas y cómo rotar o revocar una clave.",{"section":417,"items":418},"guides",[419,422,424,426,430,432],{"path":231,"title":420,"description":421},"SDK de TypeScript","Usa el cliente oficial de TypeScript para leer tus datos de Totem, paginar listas y gestionar errores de la API desde tu servidor.",{"path":166,"title":167,"description":423},"Copia un equipo con el feed de cambios y mantén la copia al día. Aplica las páginas sin riesgos, recupérate de los errores y parte de un cliente de referencia que Totem prueba.",{"path":197,"title":198,"description":425},"Cómo devuelven los endpoints de lista los registros página a página, cómo leer todas las páginas y qué orden y qué filtros admite una lista.",{"path":427,"title":428,"description":429},"\u002Fdevelopers\u002Fes\u002Fcoverage","Cobertura de los datos","Qué registra Totem, desde cuándo y cómo distinguir un valor vacío de un dato que nunca se registró.",{"path":220,"title":221,"description":431},"Cómo construir y probar una integración con seguridad mientras la API no tiene entorno de pruebas, y qué comprobar antes de pasar a producción.",{"path":354,"title":355,"description":433},"Cómo protege Totem las claves de la API y los datos que sirve, qué registra de cada clave, dónde funciona la API y qué hacer con los datos personales que copias.",{"section":435,"items":436},"reference",[437,441,445,447,452,457,462,467,472,477],{"path":438,"title":439,"description":440},"\u002Fdevelopers\u002Fes\u002Fconventions","Convenciones","La notación de esta documentación y las reglas que siguen todas las respuestas: identificadores, fechas, valores vacíos, importes, enumeraciones, versiones, estabilidad, errores y textos no fiables.",{"path":442,"title":443,"description":444},"\u002Fdevelopers\u002Fes\u002Ferrors","Errores","El formato de los errores, cómo debe tratar tu integración cada tipo de error y todos los códigos de error, con cuándo ocurren y qué hacer.",{"path":298,"title":299,"description":446},"Cuánto puede leer una clave por minuto y por día, qué cuenta para cada límite, cómo reintentar tras un 429 y cuánto tarda una carga inicial.",{"path":448,"title":449,"description":450,"apiTag":451},"\u002Fdevelopers\u002Fes\u002Freference-account","Cuenta, equipos y miembros","Comprueba que una clave funciona y qué puede leer, lista sus equipos con su zona horaria, lista los miembros de cada equipo y comprueba que la API está funcionando.","account",{"path":453,"title":454,"description":455,"apiTag":456},"\u002Fdevelopers\u002Fes\u002Freference-leads","Leads, tableros y actividades","Lista, obtén y busca los leads y los clientes de un equipo, lee las actividades de cada lead y lista los tableros y las etapas por los que pasan.","leads",{"path":458,"title":459,"description":460,"apiTag":461},"\u002Fdevelopers\u002Fes\u002Freference-calls","Llamadas","Lista y obtén las llamadas de un equipo, con su dirección, su horario y un resultado normalizado. Sin grabaciones ni transcripciones.","calls",{"path":463,"title":464,"description":465,"apiTag":466},"\u002Fdevelopers\u002Fes\u002Freference-conversations","Conversaciones","Lista y obtén las conversaciones de un equipo en todos los canales, con su estado, la persona asignada, si una persona ha tomado el control y cuándo llegaron y salieron los últimos mensajes. Nunca el contenido de los mensajes.","conversations",{"path":468,"title":469,"description":470,"apiTag":471},"\u002Fdevelopers\u002Fes\u002Freference-bookings","Citas y servicios","Lista y obtén las citas de un equipo, y lista los servicios que pueden reservar sus clientes.","bookings",{"path":473,"title":474,"description":475,"apiTag":476},"\u002Fdevelopers\u002Fes\u002Freference-sync","Feed de cambios","Un único endpoint que copia un equipo y, después, devuelve cada cambio, página a página.","sync",{"path":478,"title":479,"description":480},"\u002Fdevelopers\u002Fes\u002Fobjects","Todos los objetos","Todos los objetos que devuelve la API, campo a campo, con un ejemplo de cada uno.",{"section":398,"items":482},[483,486,490,494],{"path":121,"title":484,"description":485},"Registro de cambios","Los cambios de la API de Totem, del más reciente al más antiguo, cada uno bajo la fecha en que se publicó.",{"path":487,"title":488,"description":489},"\u002Fdevelopers\u002Fes\u002Fsupport","Soporte","Cómo pedir ayuda con la API de Totem, qué incluir en una solicitud y qué hacer si se filtra una clave.",{"path":491,"title":492,"description":493},"\u002Fdevelopers\u002Fes\u002Fglossary","Glosario","Los términos de esta documentación, definidos en un solo lugar, cada uno con un enlace a la página que lo explica.",{"path":396,"title":6,"description":389},"\u002Fdevelopers\u002Ffaq",{"ACTIVATION_MARGIN_MS":497,"ADMIN_ACCESS_DISCLOSURE_VERSION":498,"AUDIT_RETENTION_DAYS":499,"AUTH_FAILURE_LIMITS":500,"CAPTURE_LAG_FLOOR_MS":504,"CAPTURE_LAG_P99_MS":7,"CURSOR_MAX_AGE_DAYS":505,"DIRTY_TTL_DAYS":505,"FAMILY_TEAM_SCOPE":506,"FAMILY_TEAM_SCOPE_OPTIONS":507,"FEED_SETTLE_LAG_MS":509,"GATE_REFRESH_MS":497,"INTEGRATION_NAME_LENGTH":510,"INTEGRATION_PURPOSE_LENGTH":512,"KEY_CACHE_TTL_MS":515,"KEY_STATS_RETENTION_DAYS":516,"LEAD_RESPONSE_READ_BUDGET":517,"LIST_SCAN_MAX":520,"MAX_FAMILY_INTEGRATION_TEAMS":505,"MAX_INTEGRATIONS_PER_FAMILY":521,"MAX_IP_ALLOWLIST":502,"PAGE_LIMIT":522,"PLATFORM_CONFIG_TTL_MS":525,"REMOVAL_RETENTION_DAYS":526,"REQUEST_BODY_MAX_BYTES":527,"ROLL_GRACE_DEFAULT_HOURS":528,"ROLL_GRACE_HOURS":529,"SEARCH_MAX_RESULTS":521,"SENSITIVE_SECTOR_POLICY":532,"SENSITIVE_SECTOR_POLICY_OPTIONS":533,"SYNC_DAILY_BUDGET":535,"SYNC_VELOCITY":537,"TEAM_CACHE_TTL_MS":539},60000,"2026-10-17",365,{"perIpPerMinute":501,"perLookupIdPerMinute":502,"banMs":503},60,20,600000,300000,30,"explicit_list",[506,508],"all_family_teams",10000,{"min":362,"max":511},80,{"min":513,"max":514},1,280,5000,90,{"conversations":502,"messageReads":518,"calls":519},200,50,1000,10,{"default":523,"max":524},25,100,15000,45,16384,24,[530,513,528,531],0,168,"exclude",[532,534],"allow",{"floor":536,"recordsMultiplier":359},250000,{"perMinute":538,"burst":509},2000,30000,"1.0a","guide",[543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563],{"id":14,"text":15,"depth":362},{"id":19,"text":20,"depth":359},{"id":51,"text":52,"depth":359},{"id":73,"text":74,"depth":359},{"id":95,"text":96,"depth":359},{"id":110,"text":111,"depth":362},{"id":114,"text":115,"depth":359},{"id":126,"text":127,"depth":359},{"id":133,"text":134,"depth":359},{"id":151,"text":152,"depth":362},{"id":155,"text":156,"depth":359},{"id":170,"text":171,"depth":359},{"id":182,"text":183,"depth":359},{"id":201,"text":202,"depth":362},{"id":205,"text":206,"depth":359},{"id":224,"text":225,"depth":359},{"id":251,"text":252,"depth":362},{"id":255,"text":256,"depth":359},{"id":302,"text":303,"depth":362},{"id":306,"text":307,"depth":359},{"id":347,"text":348,"depth":359},{"path":491,"title":492,"section":398},[],1792502790388]