[{"data":1,"prerenderedAt":353},["ShallowReactive",2],{"developers:\u002Fdevelopers\u002Fsupport":3},{"doc":4,"lang":183,"nav":194,"alternatePath":297,"policy":298,"specVersion":342,"reference":7,"layout":343,"toc":344,"prev":350,"next":351,"operations":352,"overview":7,"heroExample":7},{"id":5,"title":6,"apiTag":7,"body":8,"description":180,"draft":181,"extension":182,"lang":183,"meta":184,"navTitle":7,"navigation":185,"order":186,"path":187,"rawbody":188,"section":189,"seo":190,"stem":191,"translationKey":192,"version":7,"__hash__":193},"developers_en\u002Fdevelopers\u002Fsupport.md","Support",null,{"type":9,"value":10,"toc":170},"minimark",[11,16,20,50,61,65,103,107,110,114,138,149,153],[12,13,15],"h2",{"id":14},"how-to-reach-us","How to reach us",[17,18,19],"p",{},"The Totem team handles API support requests.",[21,22,23,39],"ul",{},[24,25,26,30,31,38],"li",{},[27,28,29],"strong",{},"From Totem."," An administrator of your team opens ",[32,33,37],"a",{"href":34,"rel":35},"https:\u002F\u002Fapp.totemstudio.ai\u002Fhelp",[36],"nofollow","Help"," in the Totem app and sends a support request. It is the fastest route, because the request arrives tied to your team.",[24,40,41,44,45,49],{},[27,42,43],{},"By email."," Write to ",[32,46,48],{"href":47},"mailto:hello@totemstudio.ai","hello@totemstudio.ai",". A developer working for a customer can write too: say which customer and which integration the question is about.",[17,51,52,53,60],{},"There is no separate API status page yet. If the API seems down, call ",[32,54,56],{"href":55},"\u002Fdevelopers\u002Freference-account#health",[57,58,59],"code",{},"GET \u002Fv1\u002Fhealth",", which needs no key, and tell us what it answered.",[12,62,64],{"id":63},"what-to-include","What to include",[21,66,67,78,81,88,93,96],{},[24,68,69,70,73,74,77],{},"the ",[57,71,72],{},"Totem-Request-Id"," of the response that failed, if it has one, and its ",[57,75,76],{},"Totem-Release"," header, if it has one;",[24,79,80],{},"the time of the request, in UTC;",[24,82,83,84,87],{},"the method and the path, such as ",[57,85,86],{},"GET \u002Fv1\u002Fsync\u002Fchanges",";",[24,89,90,91,87],{},"the HTTP status and the error's ",[57,92,57],{},[24,94,95],{},"the integration's name and the last four characters of its key;",[24,97,98,99,102],{},"the team id (",[57,100,101],{},"team_…",") and the ids of the records concerned.",[12,104,106],{"id":105},"what-never-to-send","What never to send",[17,108,109],{},"Never send a secret key, in full or in part beyond its last four characters. Do not paste personal data from responses, such as names, phone numbers or email addresses: ids and request ids are enough for us to investigate.",[12,111,113],{"id":112},"if-a-key-leaks","If a key leaks",[17,115,116,117,120,121,128,129,132,133,137],{},"Choose ",[27,118,119],{},"Roll key"," at once in ",[32,122,125],{"href":123,"rel":124},"https:\u002F\u002Fapp.totemstudio.ai\u002Fsettings?tab=developers",[36],[27,126,127],{},"Settings → Developers"," and tick ",[27,130,131],{},"This key may have been compromised",", so the old key is revoked with no grace period. Then tell us the integration's name, when you think the key leaked and who or what had access to it. ",[32,134,136],{"href":135},"\u002Fdevelopers\u002Fauthentication#roll-and-revoke","Authentication"," explains rolling and revoking.",[17,139,140,141,143,144,148],{},"To report a suspected vulnerability in the API, these docs or the TypeScript SDK, write privately to ",[32,142,48],{"href":47},", as ",[32,145,147],{"href":146},"\u002Fdevelopers\u002Fsecurity#report-a-vulnerability","Security and personal data"," explains.",[12,150,152],{"id":151},"notices","Notices",[17,154,155,156,159,160,164,165,169],{},"The API is in ",[27,157,158],{},"Beta",". The ",[32,161,163],{"href":162},"\u002Fdevelopers\u002Fchangelog","changelog"," lists changes under the date they shipped, and ",[32,166,168],{"href":167},"\u002Fdevelopers\u002Fconventions#what-beta-means","Conventions"," explains what can change during the Beta.",{"title":171,"searchDepth":172,"depth":172,"links":173},"",3,[174,176,177,178,179],{"id":14,"depth":175,"text":15},2,{"id":63,"depth":175,"text":64},{"id":105,"depth":175,"text":106},{"id":112,"depth":175,"text":113},{"id":151,"depth":175,"text":152},"How to get help with the Totem API, what to include in a request, and what to do if a key leaks.",false,"md","en",{},true,"2","\u002Fdevelopers\u002Fsupport","---\ntitle: Support\ndescription: How to get help with the Totem API, what to include in a request, and what to do if a key leaks.\nsection: resources\norder: 2\ntranslationKey: support\nlang: en\ndraft: false\n---\n\n## How to reach us\n\nThe Totem team handles API support requests.\n\n- **From Totem.** An administrator of your team opens [Help](https:\u002F\u002Fapp.totemstudio.ai\u002Fhelp) in the Totem app and sends a support request. It is the fastest route, because the request arrives tied to your team.\n- **By email.** Write to hello@totemstudio.ai. A developer working for a customer can write too: say which customer and which integration the question is about.\n\nThere is no separate API status page yet. If the API seems down, call [`GET \u002Fv1\u002Fhealth`](\u002Fdevelopers\u002Freference-account#health), which needs no key, and tell us what it answered.\n\n## What to include\n\n- the `Totem-Request-Id` of the response that failed, if it has one, and its `Totem-Release` header, if it has one;\n- the time of the request, in UTC;\n- the method and the path, such as `GET \u002Fv1\u002Fsync\u002Fchanges`;\n- the HTTP status and the error's `code`;\n- the integration's name and the last four characters of its key;\n- the team id (`team_…`) and the ids of the records concerned.\n\n## What never to send\n\nNever send a secret key, in full or in part beyond its last four characters. Do not paste personal data from responses, such as names, phone numbers or email addresses: ids and request ids are enough for us to investigate.\n\n## If a key leaks\n\nChoose **Roll key** at once in [**Settings → Developers**](https:\u002F\u002Fapp.totemstudio.ai\u002Fsettings?tab=developers) and tick **This key may have been compromised**, so the old key is revoked with no grace period. Then tell us the integration's name, when you think the key leaked and who or what had access to it. [Authentication](\u002Fdevelopers\u002Fauthentication#roll-and-revoke) explains rolling and revoking.\n\nTo report a suspected vulnerability in the API, these docs or the TypeScript SDK, write privately to hello@totemstudio.ai, as [Security and personal data](\u002Fdevelopers\u002Fsecurity#report-a-vulnerability) explains.\n\n## Notices\n\nThe API is in **Beta**. The [changelog](\u002Fdevelopers\u002Fchangelog) lists changes under the date they shipped, and [Conventions](\u002Fdevelopers\u002Fconventions#what-beta-means) explains what can change during the Beta.\n","resources",{"title":6,"description":180},"developers\u002Fsupport","support","godImfF0T9-XUfyfptPqulem2K9MmKYW9gbH3qGs6IQ",[195,209,235,283],{"section":196,"items":197},"start",[198,202,206],{"path":199,"title":200,"description":201},"\u002Fdevelopers","Overview","Read the leads, calls, conversations and bookings of your Totem teams from your own systems, and keep a copy in sync.",{"path":203,"title":204,"description":205},"\u002Fdevelopers\u002Fquickstart","Quickstart","Make your first requests to the Totem API in a few minutes. Check your key, find your team, list leads and start a sync.",{"path":207,"title":136,"description":208},"\u002Fdevelopers\u002Fauthentication","Secret keys and where they may live, the Totem-Team header for keys with several teams, IP allowlists, and how to roll or revoke a key.",{"section":210,"items":211},"guides",[212,216,220,224,228,232],{"path":213,"title":214,"description":215},"\u002Fdevelopers\u002Ftypescript","TypeScript SDK","Use the official TypeScript client to read your Totem data, paginate lists and handle API errors from your server.",{"path":217,"title":218,"description":219},"\u002Fdevelopers\u002Fsync","Keep a copy in sync","Copy a team with the changes feed and keep the copy current. Apply pages safely, recover from errors, and start from a reference client that Totem tests.",{"path":221,"title":222,"description":223},"\u002Fdevelopers\u002Fpagination","Lists and pagination","How list endpoints return records a page at a time, how to read every page, and what order and filters a list supports.",{"path":225,"title":226,"description":227},"\u002Fdevelopers\u002Fcoverage","Data coverage","What Totem records, since when, and how to tell an empty value from a fact that was never recorded.",{"path":229,"title":230,"description":231},"\u002Fdevelopers\u002Ftesting","Testing and go-live","How to build and test an integration safely while the API has no test environment, and what to check before you go live.",{"path":233,"title":147,"description":234},"\u002Fdevelopers\u002Fsecurity","How Totem protects API keys and the data the API serves, what it records about each key, where the API runs, and what to do with the personal data you copy.",{"section":236,"items":237},"reference",[238,241,245,249,254,259,264,269,274,279],{"path":239,"title":168,"description":240},"\u002Fdevelopers\u002Fconventions","The notation these docs use, and the rules every response follows: ids, timestamps, empty values, amounts, enums, versions, stability, errors and untrusted text.",{"path":242,"title":243,"description":244},"\u002Fdevelopers\u002Ferrors","Errors","The error format, how your integration should handle each kind of error, and every error code with when it happens and what to do.",{"path":246,"title":247,"description":248},"\u002Fdevelopers\u002Frate-limits","Rate limits","How much a key can read per minute and per day, what counts toward each limit, how to retry after a 429, and how long an initial sync takes.",{"path":250,"title":251,"description":252,"apiTag":253},"\u002Fdevelopers\u002Freference-account","Account, teams and members","Check that a key works and what it can read, list its teams with their time zones, list each team's members, and check that the API is up.","account",{"path":255,"title":256,"description":257,"apiTag":258},"\u002Fdevelopers\u002Freference-leads","Leads, boards and activities","List, fetch and search a team's leads and clients, read each lead's activities, and list the boards and stages they move through.","leads",{"path":260,"title":261,"description":262,"apiTag":263},"\u002Fdevelopers\u002Freference-calls","Calls","List and fetch a team's calls, with their direction, timing and a normalized outcome. No recordings or transcripts.","calls",{"path":265,"title":266,"description":267,"apiTag":268},"\u002Fdevelopers\u002Freference-conversations","Conversations","List and fetch a team's conversations on every channel, with their status, assignee, whether a person has taken them over and when the last messages came and went. Never message content.","conversations",{"path":270,"title":271,"description":272,"apiTag":273},"\u002Fdevelopers\u002Freference-bookings","Bookings and services","List and fetch a team's bookings, and list the services its customers can book.","bookings",{"path":275,"title":276,"description":277,"apiTag":278},"\u002Fdevelopers\u002Freference-sync","Changes feed","One endpoint that copies a team and then returns every change, page by page.","sync",{"path":280,"title":281,"description":282},"\u002Fdevelopers\u002Fobjects","All objects","Every object the API returns, field by field, with an example of each.",{"section":189,"items":284},[285,288,289,293],{"path":162,"title":286,"description":287},"Changelog","Changes to the Totem API, newest first, each under the date it shipped.",{"path":187,"title":6,"description":180},{"path":290,"title":291,"description":292},"\u002Fdevelopers\u002Fglossary","Glossary","The terms these docs use, defined in one place, each with a link to the page that explains it.",{"path":294,"title":295,"description":296},"\u002Fdevelopers\u002Ffaq","FAQ","Short answers to the questions developers ask most about the Totem API, with links to the details.","\u002Fdevelopers\u002Fes\u002Fsupport",{"ACTIVATION_MARGIN_MS":299,"ADMIN_ACCESS_DISCLOSURE_VERSION":300,"AUDIT_RETENTION_DAYS":301,"AUTH_FAILURE_LIMITS":302,"CAPTURE_LAG_FLOOR_MS":306,"CAPTURE_LAG_P99_MS":7,"CURSOR_MAX_AGE_DAYS":307,"DIRTY_TTL_DAYS":307,"FAMILY_TEAM_SCOPE":308,"FAMILY_TEAM_SCOPE_OPTIONS":309,"FEED_SETTLE_LAG_MS":311,"GATE_REFRESH_MS":299,"INTEGRATION_NAME_LENGTH":312,"INTEGRATION_PURPOSE_LENGTH":314,"KEY_CACHE_TTL_MS":317,"KEY_STATS_RETENTION_DAYS":318,"LEAD_RESPONSE_READ_BUDGET":319,"LIST_SCAN_MAX":322,"MAX_FAMILY_INTEGRATION_TEAMS":307,"MAX_INTEGRATIONS_PER_FAMILY":323,"MAX_IP_ALLOWLIST":304,"PAGE_LIMIT":324,"PLATFORM_CONFIG_TTL_MS":327,"REMOVAL_RETENTION_DAYS":328,"REQUEST_BODY_MAX_BYTES":329,"ROLL_GRACE_DEFAULT_HOURS":330,"ROLL_GRACE_HOURS":331,"SEARCH_MAX_RESULTS":323,"SENSITIVE_SECTOR_POLICY":334,"SENSITIVE_SECTOR_POLICY_OPTIONS":335,"SYNC_DAILY_BUDGET":337,"SYNC_VELOCITY":339,"TEAM_CACHE_TTL_MS":341},60000,"2026-10-17",365,{"perIpPerMinute":303,"perLookupIdPerMinute":304,"banMs":305},60,20,600000,300000,30,"explicit_list",[308,310],"all_family_teams",10000,{"min":175,"max":313},80,{"min":315,"max":316},1,280,5000,90,{"conversations":304,"messageReads":320,"calls":321},200,50,1000,10,{"default":325,"max":326},25,100,15000,45,16384,24,[332,315,330,333],0,168,"exclude",[334,336],"allow",{"floor":338,"recordsMultiplier":172},250000,{"perMinute":340,"burst":311},2000,30000,"1.0a","guide",[345,346,347,348,349],{"id":14,"text":15,"depth":175},{"id":63,"text":64,"depth":175},{"id":105,"text":106,"depth":175},{"id":112,"text":113,"depth":175},{"id":151,"text":152,"depth":175},{"path":162,"title":286,"section":189},{"path":290,"title":291,"section":189},[],1792502789959]