This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments.
Our Field
Open Dental
Velox
Meaning
pd_mf
MBvalue (SequenceType=0)
pd_mf
Pocket depth at the mesial facial/buccal site (mm).
gm_mf
MBvalue (SequenceType=3)
gm_mf
Gingival margin measurement (mm).
mj_mf
MBvalue (SequenceType=2)
mj_mf
Mucogingival junction measurement (mm).
fg_mf
MBvalue (SequenceType=4)
fg_mf
Furcation grade.
bleeding_mf
Bit 1 of MBvalue (SequenceType=5)
bleeding_mf
Bleeding present at the site.
suppuration_mf
Bit 2 of MBvalue (SequenceType=5)
suppuration_mf
Suppuration (pus) present at the site.
plaque_mf
Bit 4 of MBvalue (SequenceType=5)
N/A
Site-specific plaque.
calculus_mf
Bit 8 of MBvalue (SequenceType=5)
N/A
Site-specific calculus.
plaque
N/A
plaque
Whole-tooth plaque score (Velox only).
mobility
ToothValue (SequenceType=1)
mobility
Tooth mobility score.
missing
SequenceType=6 exists
mobility == 5
Indicates the tooth was skipped or missing during the exam.
Open Dental
Each tooth is represented by multiple PerioMeasure rows, one per SequenceType.
The API combines these into a single PerioMeasurement.
Site measurements are stored in MB, B, DB, ML, L, and DL columns.
SequenceType=5 stores bleeding, suppuration, plaque, and calculus as bit flags in the site values.
A SequenceType=6 row indicates the tooth was skipped (treated as missing=true).
Velox
Already provides a single measurement object per tooth.
Uses the same JSON keys (pd_mf, gm_cf, etc.) directly.
Includes a whole-tooth plaque score.
Does not have site-specific calculus values.
A mobility value of 5 indicates a missing tooth.
This endpoint retrieves appointments for a specific location.
Parameters
location_id (required): The ID of the location for which patients are to be retrieved.
after: A parameter to specify the cursor for pagination.
items: A parameter to specify the number of items to be returned.
The q[fetch_modified_since] is used to capture the delta changes, pass the datetime in UTC as shown in example below
{
"errors": "Too many locations syncing concurrently. At most 5 locations may have initial sync requests in flight at a time.",
"sync_type": "initial",
"max_concurrent_locations": 5,
"active_location_ids": [
101,
102,
103,
104,
105
],
"retry_after_seconds": 1
}
{
"errors": "Too many locations syncing concurrently. At most 5 locations may have initial sync requests in flight at a time.",
"sync_type": "initial",
"max_concurrent_locations": 5,
"active_location_ids": [
101,
102,
103,
104,
105
],
"retry_after_seconds": 1
}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"TeamCare APIs","colors":{"primary":"#A67C00","light":"#FDCD0F","dark":"#8A6500"},"logo":{"light":"https://mintcdn.com/teamcare-dental/C9tikQPY1JpylSlb/logo/light.png?fit=max\u0026auto=format\u0026n=C9tikQPY1JpylSlb\u0026q=85\u0026s=f1b65ebedfb93ded01a7e1a65f291dbb","dark":"https://mintcdn.com/teamcare-dental/C9tikQPY1JpylSlb/logo/dark.png?fit=max\u0026auto=format\u0026n=C9tikQPY1JpylSlb\u0026q=85\u0026s=2d9b2d5e6d41fc3fc6f79d1f2d132cab"},"favicon":"https://mintcdn.com/teamcare-dental/KajxjrxLWTx1RX8g/favicon.png?fit=max\u0026auto=format\u0026n=KajxjrxLWTx1RX8g\u0026q=85\u0026s=519b83c5da513afc2c3dc325710f3fec","api":{"openapi":["https://app.teamcaredental.com/openapi-vendors.json","https://app.teamcaredental.com/openapi-ai-voice.json"],"mdx":{"server":"https://app.teamcaredental.com/api/v1/vendors"}},"navbar":{"links":[{"href":"https://app.teamcaredental.com","label":"Dashboard"}]},"footer":{"socials":{}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"teamcare-dental","hasAudioNarration":false,"actualSubdomain":"teamcare-dental","customDomains":["docs.teamcaredental.com"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-team-care-27871c41","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae1d4221b3fbf8078ed7d58","collectionId":"06742fb4-d19a-4188-8e8e-bbfef0a1fb4f","liveDeploymentHistoryId":"6ae1d4221b3fbf8078ed7d58","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae1d4221b3fbf8078ed7d58","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Core APIs","count":72},{"language":"default","tag":"Billing \u0026 Insurance","count":20},{"language":"default","tag":"Reporting","count":18},{"language":"default","tag":"AI Agent API","count":16},{"language":"default","tag":"Patients \u0026 Clinical","count":15},{"language":"default","tag":"Organization","count":10},{"language":"default","tag":"Stats","count":10},{"language":"default","tag":"Practice","count":10},{"language":"default","tag":"Foundations","count":9},{"language":"default","tag":"Patients","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/perio-charts/list-perio-measurements","slug":"/api-reference/perio-charts/list-perio-measurements","pageMetadata":{"title":"List perio measurements","description":"**This endpoint is not yet available in production.**\n\nThis resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments.\n\n| Our Field | Open Dental | Velox | Meaning |\n| --- | --- | --- | --- |\n| `pd_mf` | `MBvalue` (SequenceType=0) | `pd_mf` | Pocket depth at the mesial facial/buccal site (mm). |\n| `gm_mf` | `MBvalue` (SequenceType=3) | `gm_mf` | Gingival margin measurement (mm). |\n| `mj_mf` | `MBvalue` (SequenceType=2) | `mj_mf` | Mucogingival junction measurement (mm). |\n| `fg_mf` | `MBvalue` (SequenceType=4) | `fg_mf` | Furcation grade. |\n| `bleeding_mf` | Bit 1 of `MBvalue` (SequenceType=5) | `bleeding_mf` | Bleeding present at the site. |\n| `suppuration_mf` | Bit 2 of `MBvalue` (SequenceType=5) | `suppuration_mf` | Suppuration (pus) present at the site. |\n| `plaque_mf` | Bit 4 of `MBvalue` (SequenceType=5) | N/A | Site-specific plaque. |\n| `calculus_mf` | Bit 8 of `MBvalue` (SequenceType=5) | N/A | Site-specific calculus. |\n| `plaque` | N/A | `plaque` | Whole-tooth plaque score (Velox only). |\n| `mobility` | `ToothValue` (SequenceType=1) | `mobility` | Tooth mobility score. |\n| `missing` | `SequenceType=6` exists | `mobility == 5` | Indicates the tooth was skipped or missing during the exam. |\n\n### Open Dental\n\n- Each tooth is represented by multiple `PerioMeasure` rows, one per `SequenceType`.\n- The API combines these into a single `PerioMeasurement`.\n- Site measurements are stored in `MB`, `B`, `DB`, `ML`, `L`, and `DL` columns.\n- `SequenceType=5` stores bleeding, suppuration, plaque, and calculus as bit flags in the site values.\n- A `SequenceType=6` row indicates the tooth was skipped (treated as `missing=true`).\n\n### Velox\n\n- Already provides a single measurement object per tooth.\n- Uses the same JSON keys (`pd_mf`, `gm_cf`, etc.) directly.\n- Includes a whole-tooth `plaque` score.\n- Does not have site-specific `calculus` values.\n- A mobility value of `5` indicates a missing tooth.\n\nThis endpoint retrieves appointments for a specific location.\n\n#### Parameters\n\n- location_id (required): The ID of the location for which patients are to be retrieved.\n- after: A parameter to specify the cursor for pagination.\n- items: A parameter to specify the number of items to be returned.\n- The `q[fetch_modified_since]` is used to capture the delta changes, pass the datetime in UTC as shown in example below\n\n```json\n{\n \"q\": {\n \"fetch_modified_since\": \"2025-12-02T01:58:00.164Z\"\n }\n}\n```","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/{patient_id}/perio_charts/{perio_chart_id}/perio_measurements","href":"/api-reference/perio-charts/list-perio-measurements","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h3: \"h3\",\n h4: \"h4\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n strong: \"strong\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"This endpoint is not yet available in production.\"\n })\n }), \"\\n\", _jsx(_components.p, {\n children: \"This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments.\"\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Our Field\"\n }), _jsx(_components.th, {\n children: \"Open Dental\"\n }), _jsx(_components.th, {\n children: \"Velox\"\n }), _jsx(_components.th, {\n children: \"Meaning\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"pd_mf\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=0)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"pd_mf\"\n })\n }), _jsx(_components.td, {\n children: \"Pocket depth at the mesial facial/buccal site (mm).\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"gm_mf\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=3)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"gm_mf\"\n })\n }), _jsx(_components.td, {\n children: \"Gingival margin measurement (mm).\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"mj_mf\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=2)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"mj_mf\"\n })\n }), _jsx(_components.td, {\n children: \"Mucogingival junction measurement (mm).\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"fg_mf\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=4)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"fg_mf\"\n })\n }), _jsx(_components.td, {\n children: \"Furcation grade.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"bleeding_mf\"\n })\n }), _jsxs(_components.td, {\n children: [\"Bit 1 of \", _jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=5)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"bleeding_mf\"\n })\n }), _jsx(_components.td, {\n children: \"Bleeding present at the site.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"suppuration_mf\"\n })\n }), _jsxs(_components.td, {\n children: [\"Bit 2 of \", _jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=5)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"suppuration_mf\"\n })\n }), _jsx(_components.td, {\n children: \"Suppuration (pus) present at the site.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"plaque_mf\"\n })\n }), _jsxs(_components.td, {\n children: [\"Bit 4 of \", _jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=5)\"]\n }), _jsx(_components.td, {\n children: \"N/A\"\n }), _jsx(_components.td, {\n children: \"Site-specific plaque.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"calculus_mf\"\n })\n }), _jsxs(_components.td, {\n children: [\"Bit 8 of \", _jsx(_components.code, {\n children: \"MBvalue\"\n }), \" (SequenceType=5)\"]\n }), _jsx(_components.td, {\n children: \"N/A\"\n }), _jsx(_components.td, {\n children: \"Site-specific calculus.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"plaque\"\n })\n }), _jsx(_components.td, {\n children: \"N/A\"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"plaque\"\n })\n }), _jsx(_components.td, {\n children: \"Whole-tooth plaque score (Velox only).\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"mobility\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"ToothValue\"\n }), \" (SequenceType=1)\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"mobility\"\n })\n }), _jsx(_components.td, {\n children: \"Tooth mobility score.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"missing\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"SequenceType=6\"\n }), \" exists\"]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"mobility == 5\"\n })\n }), _jsx(_components.td, {\n children: \"Indicates the tooth was skipped or missing during the exam.\"\n })]\n })]\n })]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Open Dental\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Each tooth is represented by multiple \", _jsx(_components.code, {\n children: \"PerioMeasure\"\n }), \" rows, one per \", _jsx(_components.code, {\n children: \"SequenceType\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The API combines these into a single \", _jsx(_components.code, {\n children: \"PerioMeasurement\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Site measurements are stored in \", _jsx(_components.code, {\n children: \"MB\"\n }), \", \", _jsx(_components.code, {\n children: \"B\"\n }), \", \", _jsx(_components.code, {\n children: \"DB\"\n }), \", \", _jsx(_components.code, {\n children: \"ML\"\n }), \", \", _jsx(_components.code, {\n children: \"L\"\n }), \", and \", _jsx(_components.code, {\n children: \"DL\"\n }), \" columns.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"SequenceType=5\"\n }), \" stores bleeding, suppuration, plaque, and calculus as bit flags in the site values.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"A \", _jsx(_components.code, {\n children: \"SequenceType=6\"\n }), \" row indicates the tooth was skipped (treated as \", _jsx(_components.code, {\n children: \"missing=true\"\n }), \").\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Velox\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Already provides a single measurement object per tooth.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Uses the same JSON keys (\", _jsx(_components.code, {\n children: \"pd_mf\"\n }), \", \", _jsx(_components.code, {\n children: \"gm_cf\"\n }), \", etc.) directly.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Includes a whole-tooth \", _jsx(_components.code, {\n children: \"plaque\"\n }), \" score.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Does not have site-specific \", _jsx(_components.code, {\n children: \"calculus\"\n }), \" values.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"A mobility value of \", _jsx(_components.code, {\n children: \"5\"\n }), \" indicates a missing tooth.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"This endpoint retrieves appointments for a specific location.\"\n }), \"\\n\", _jsx(_components.h4, {\n children: \"Parameters\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"location_id (required): The ID of the location for which patients are to be retrieved.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"after: A parameter to specify the cursor for pagination.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"items: A parameter to specify the number of items to be returned.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The \", _jsx(_components.code, {\n children: \"q[fetch_modified_since]\"\n }), \" is used to capture the delta changes, pass the datetime in UTC as shown in example below\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"5\",\n language: \"json\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"json\",\n children: _jsxs(_components.code, {\n language: \"json\",\n numberOfLines: \"5\",\n children: [_jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"q\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": {\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"fetch_modified_since\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"2025-12-02T01:58:00.164Z\\\"\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" }\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"List perio measurements","description":"**This endpoint is not yet available in production.**\n\nThis resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments.\n\n| Our Field | Open Dental | Velox | Meaning |\n| --- | --- | --- | --- |\n| `pd_mf` | `MBvalue` (SequenceType=0) | `pd_mf` | Pocket depth at the mesial facial/buccal site (mm). |\n| `gm_mf` | `MBvalue` (SequenceType=3) | `gm_mf` | Gingival margin measurement (mm). |\n| `mj_mf` | `MBvalue` (SequenceType=2) | `mj_mf` | Mucogingival junction measurement (mm). |\n| `fg_mf` | `MBvalue` (SequenceType=4) | `fg_mf` | Furcation grade. |\n| `bleeding_mf` | Bit 1 of `MBvalue` (SequenceType=5) | `bleeding_mf` | Bleeding present at the site. |\n| `suppuration_mf` | Bit 2 of `MBvalue` (SequenceType=5) | `suppuration_mf` | Suppuration (pus) present at the site. |\n| `plaque_mf` | Bit 4 of `MBvalue` (SequenceType=5) | N/A | Site-specific plaque. |\n| `calculus_mf` | Bit 8 of `MBvalue` (SequenceType=5) | N/A | Site-specific calculus. |\n| `plaque` | N/A | `plaque` | Whole-tooth plaque score (Velox only). |\n| `mobility` | `ToothValue` (SequenceType=1) | `mobility` | Tooth mobility score. |\n| `missing` | `SequenceType=6` exists | `mobility == 5` | Indicates the tooth was skipped or missing during the exam. |\n\n### Open Dental\n\n- Each tooth is represented by multiple `PerioMeasure` rows, one per `SequenceType`.\n- The API combines these into a single `PerioMeasurement`.\n- Site measurements are stored in `MB`, `B`, `DB`, `ML`, `L`, and `DL` columns.\n- `SequenceType=5` stores bleeding, suppuration, plaque, and calculus as bit flags in the site values.\n- A `SequenceType=6` row indicates the tooth was skipped (treated as `missing=true`).\n\n### Velox\n\n- Already provides a single measurement object per tooth.\n- Uses the same JSON keys (`pd_mf`, `gm_cf`, etc.) directly.\n- Includes a whole-tooth `plaque` score.\n- Does not have site-specific `calculus` values.\n- A mobility value of `5` indicates a missing tooth.\n\nThis endpoint retrieves appointments for a specific location.\n\n#### Parameters\n\n- location_id (required): The ID of the location for which patients are to be retrieved.\n- after: A parameter to specify the cursor for pagination.\n- items: A parameter to specify the number of items to be returned.\n- The `q[fetch_modified_since]` is used to capture the delta changes, pass the datetime in UTC as shown in example below\n\n```json\n{\n \"q\": {\n \"fetch_modified_since\": \"2025-12-02T01:58:00.164Z\"\n }\n}\n```","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/{patient_id}/perio_charts/{perio_chart_id}/perio_measurements","href":"/api-reference/perio-charts/list-perio-measurements","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"List perio measurements","operationId":"locations_resources_patients_perio_charts_measurments_measurments","tags":["Perio Charts"],"description":"**This endpoint is not yet available in production.**\n\nThis resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments.\n\n| Our Field | Open Dental | Velox | Meaning |\n| --- | --- | --- | --- |\n| `pd_mf` | `MBvalue` (SequenceType=0) | `pd_mf` | Pocket depth at the mesial facial/buccal site (mm). |\n| `gm_mf` | `MBvalue` (SequenceType=3) | `gm_mf` | Gingival margin measurement (mm). |\n| `mj_mf` | `MBvalue` (SequenceType=2) | `mj_mf` | Mucogingival junction measurement (mm). |\n| `fg_mf` | `MBvalue` (SequenceType=4) | `fg_mf` | Furcation grade. |\n| `bleeding_mf` | Bit 1 of `MBvalue` (SequenceType=5) | `bleeding_mf` | Bleeding present at the site. |\n| `suppuration_mf` | Bit 2 of `MBvalue` (SequenceType=5) | `suppuration_mf` | Suppuration (pus) present at the site. |\n| `plaque_mf` | Bit 4 of `MBvalue` (SequenceType=5) | N/A | Site-specific plaque. |\n| `calculus_mf` | Bit 8 of `MBvalue` (SequenceType=5) | N/A | Site-specific calculus. |\n| `plaque` | N/A | `plaque` | Whole-tooth plaque score (Velox only). |\n| `mobility` | `ToothValue` (SequenceType=1) | `mobility` | Tooth mobility score. |\n| `missing` | `SequenceType=6` exists | `mobility == 5` | Indicates the tooth was skipped or missing during the exam. |\n\n### Open Dental\n\n- Each tooth is represented by multiple `PerioMeasure` rows, one per `SequenceType`.\n- The API combines these into a single `PerioMeasurement`.\n- Site measurements are stored in `MB`, `B`, `DB`, `ML`, `L`, and `DL` columns.\n- `SequenceType=5` stores bleeding, suppuration, plaque, and calculus as bit flags in the site values.\n- A `SequenceType=6` row indicates the tooth was skipped (treated as `missing=true`).\n\n### Velox\n\n- Already provides a single measurement object per tooth.\n- Uses the same JSON keys (`pd_mf`, `gm_cf`, etc.) directly.\n- Includes a whole-tooth `plaque` score.\n- Does not have site-specific `calculus` values.\n- A mobility value of `5` indicates a missing tooth.\n\nThis endpoint retrieves appointments for a specific location.\n\n#### Parameters\n\n- location_id (required): The ID of the location for which patients are to be retrieved.\n- after: A parameter to specify the cursor for pagination.\n- items: A parameter to specify the number of items to be returned.\n- The `q[fetch_modified_since]` is used to capture the delta changes, pass the datetime in UTC as shown in example below\n\n```json\n{\n \"q\": {\n \"fetch_modified_since\": \"2025-12-02T01:58:00.164Z\"\n }\n}\n```","parameters":["2a8ce57d-bc1f-4d99-afe7-8a08cbe1be14","80c13c06-0a05-4c12-9181-bd49fb561088","a11043be-ac7e-48bb-a68f-bcbbaca745d8","64d8dc67-b792-4df2-a192-3871bbd93a1c","aee0d115-fda1-418d-b0f7-9879500708e5","71aaa761-0450-4b38-ac05-cc66c6b1894d"],"responses":{"200":"851001dd-5639-47c5-b5c1-c4bc800d5c5d","401":"5347292a-fd5f-49df-a552-b9f5fbcb1fdc","403":"243fe006-35dc-48c5-b7a8-163fe71da227","404":"03138244-4918-407d-8f4b-0f6757018b27","422":"f890e85b-416d-4c20-af26-c0908e28f03b","429":"b38e0cfe-b31b-4689-9e8a-5c0ce33897e4"},"method":"get","type":"path","servers":["b91bf1cd-83c4-4ee4-a1e3-63b52a8f9d59"],"security":["052ca5b8-928b-479c-a5a1-ca169145f2d5"],"path":"/locations/{location_id}/patients/{patient_id}/perio_charts/{perio_chart_id}/perio_measurements","baseUrlOptions":["https://app.teamcaredental.com/api/v1/vendors"],"title":"List perio measurements","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"2a8ce57d-bc1f-4d99-afe7-8a08cbe1be14":{"name":"location_id","in":"path","required":true,"description":"The ID of the location for which patients are to be retrieved.","schema":{"type":"string","example":"58","isRequired":true,"description":"The ID of the location for which patients are to be retrieved.","uniqueKey":"","typeLabel":"string"}},"80c13c06-0a05-4c12-9181-bd49fb561088":{"name":"patient_id","in":"path","required":true,"schema":{"type":"string","example":"3859416","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"a11043be-ac7e-48bb-a68f-bcbbaca745d8":{"name":"perio_chart_id","in":"path","required":true,"schema":{"type":"string","example":"1","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"64d8dc67-b792-4df2-a192-3871bbd93a1c":{"name":"after","in":"query","required":false,"description":"A parameter to specify the cursor for pagination.","schema":{"type":"integer","isRequired":false,"description":"A parameter to specify the cursor for pagination.","uniqueKey":"","typeLabel":"integer"}},"aee0d115-fda1-418d-b0f7-9879500708e5":{"name":"items","in":"query","required":false,"description":"A parameter to specify the number of items to be returned.","schema":{"type":"integer","example":500,"isRequired":false,"description":"A parameter to specify the number of items to be returned.","uniqueKey":"","typeLabel":"integer"}},"71aaa761-0450-4b38-ac05-cc66c6b1894d":{"name":"q","in":"query","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","properties":{"fetch_modified_since":{"type":"string","format":"date-time","example":"2025-12-02T01:58:00.164Z","uniqueKey":"fetch_modified_since","typeLabel":"string\u003cdate-time>"}},"isRequired":false,"uniqueKey":"","typeLabel":"object"},"example":{"fetch_modified_since":"2025-12-02T01:58:00.164Z"}}},"responses":{"851001dd-5639-47c5-b5c1-c4bc800d5c5d":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"2","uniqueKey":"data.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","example":"perio_measurement","uniqueKey":"data.items.[INDEX].type","typeLabel":"string"},"attributes":{"type":"object","properties":{"perio_chart_id":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.perio_chart_id","typeLabel":"integer"},"tooth_number":{"type":"integer","example":2,"uniqueKey":"data.items.[INDEX].attributes.tooth_number","typeLabel":"integer"},"measurements":{"type":"object","properties":{"fg_cf":{"type":"integer","uniqueKey":"data.items.[INDEX].attributes.measurements.fg_cf","typeLabel":"integer"},"fg_cl":{"type":"integer","uniqueKey":"data.items.[INDEX].attributes.measurements.fg_cl","typeLabel":"integer"},"fg_df":{"type":"integer","uniqueKey":"data.items.[INDEX].attributes.measurements.fg_df","typeLabel":"integer"},"fg_dl":{"type":"integer","uniqueKey":"data.items.[INDEX].attributes.measurements.fg_dl","typeLabel":"integer"},"fg_mf":{"type":"integer","uniqueKey":"data.items.[INDEX].attributes.measurements.fg_mf","typeLabel":"integer"},"fg_ml":{"type":"integer","uniqueKey":"data.items.[INDEX].attributes.measurements.fg_ml","typeLabel":"integer"},"gm_cf":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.gm_cf","typeLabel":"integer"},"gm_cl":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.gm_cl","typeLabel":"integer"},"gm_df":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.gm_df","typeLabel":"integer"},"gm_dl":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.gm_dl","typeLabel":"integer"},"gm_mf":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.gm_mf","typeLabel":"integer"},"gm_ml":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.gm_ml","typeLabel":"integer"},"mj_cf":{"type":"integer","example":5,"uniqueKey":"data.items.[INDEX].attributes.measurements.mj_cf","typeLabel":"integer"},"mj_cl":{"type":"integer","example":5,"uniqueKey":"data.items.[INDEX].attributes.measurements.mj_cl","typeLabel":"integer"},"mj_df":{"type":"integer","example":5,"uniqueKey":"data.items.[INDEX].attributes.measurements.mj_df","typeLabel":"integer"},"mj_dl":{"type":"integer","example":5,"uniqueKey":"data.items.[INDEX].attributes.measurements.mj_dl","typeLabel":"integer"},"mj_mf":{"type":"integer","example":5,"uniqueKey":"data.items.[INDEX].attributes.measurements.mj_mf","typeLabel":"integer"},"mj_ml":{"type":"integer","example":5,"uniqueKey":"data.items.[INDEX].attributes.measurements.mj_ml","typeLabel":"integer"},"pd_cf":{"type":"integer","example":2,"uniqueKey":"data.items.[INDEX].attributes.measurements.pd_cf","typeLabel":"integer"},"pd_cl":{"type":"integer","example":2,"uniqueKey":"data.items.[INDEX].attributes.measurements.pd_cl","typeLabel":"integer"},"pd_df":{"type":"integer","example":3,"uniqueKey":"data.items.[INDEX].attributes.measurements.pd_df","typeLabel":"integer"},"pd_dl":{"type":"integer","example":3,"uniqueKey":"data.items.[INDEX].attributes.measurements.pd_dl","typeLabel":"integer"},"pd_mf":{"type":"integer","example":3,"uniqueKey":"data.items.[INDEX].attributes.measurements.pd_mf","typeLabel":"integer"},"pd_ml":{"type":"integer","example":2,"uniqueKey":"data.items.[INDEX].attributes.measurements.pd_ml","typeLabel":"integer"},"missing":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.missing","typeLabel":"boolean"},"mobility":{"type":"integer","example":1,"uniqueKey":"data.items.[INDEX].attributes.measurements.mobility","typeLabel":"integer"},"plaque_cf":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.plaque_cf","typeLabel":"boolean"},"plaque_cl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.plaque_cl","typeLabel":"boolean"},"plaque_df":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.plaque_df","typeLabel":"boolean"},"plaque_dl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.plaque_dl","typeLabel":"boolean"},"plaque_mf":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.plaque_mf","typeLabel":"boolean"},"plaque_ml":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.plaque_ml","typeLabel":"boolean"},"bleeding_cf":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.bleeding_cf","typeLabel":"boolean"},"bleeding_cl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.bleeding_cl","typeLabel":"boolean"},"bleeding_df":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.bleeding_df","typeLabel":"boolean"},"bleeding_dl":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.bleeding_dl","typeLabel":"boolean"},"bleeding_mf":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.bleeding_mf","typeLabel":"boolean"},"bleeding_ml":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.bleeding_ml","typeLabel":"boolean"},"calculus_cf":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.calculus_cf","typeLabel":"boolean"},"calculus_cl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.calculus_cl","typeLabel":"boolean"},"calculus_df":{"type":"boolean","example":true,"uniqueKey":"data.items.[INDEX].attributes.measurements.calculus_df","typeLabel":"boolean"},"calculus_dl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.calculus_dl","typeLabel":"boolean"},"calculus_mf":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.calculus_mf","typeLabel":"boolean"},"calculus_ml":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.calculus_ml","typeLabel":"boolean"},"suppuration_cf":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.suppuration_cf","typeLabel":"boolean"},"suppuration_cl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.suppuration_cl","typeLabel":"boolean"},"suppuration_df":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.suppuration_df","typeLabel":"boolean"},"suppuration_dl":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.suppuration_dl","typeLabel":"boolean"},"suppuration_mf":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.suppuration_mf","typeLabel":"boolean"},"suppuration_ml":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.measurements.suppuration_ml","typeLabel":"boolean"}},"uniqueKey":"data.items.[INDEX].attributes.measurements","typeLabel":"object"},"deleted":{"type":"boolean","example":false,"uniqueKey":"data.items.[INDEX].attributes.deleted","typeLabel":"boolean"},"updated_at":{"type":"string","format":"date-time","example":"2026-07-02T06:23:59.327Z","uniqueKey":"data.items.[INDEX].attributes.updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.items.[INDEX].attributes","typeLabel":"object"}},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data","typeLabel":"object[]"},"pagy":{"type":"object","properties":{"total":{"type":"integer","uniqueKey":"pagy.total","typeLabel":"integer"},"items":{"type":"integer","uniqueKey":"pagy.\\items","typeLabel":"integer"}},"uniqueKey":"pagy","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":[{"id":"2","type":"perio_measurement","attributes":{"perio_chart_id":1,"tooth_number":2,"measurements":{"fg_cf":0,"fg_cl":0,"fg_df":0,"fg_dl":0,"fg_mf":0,"fg_ml":0,"gm_cf":1,"gm_cl":1,"gm_df":1,"gm_dl":1,"gm_mf":1,"gm_ml":1,"mj_cf":5,"mj_cl":5,"mj_df":5,"mj_dl":5,"mj_mf":5,"mj_ml":5,"pd_cf":2,"pd_cl":2,"pd_df":3,"pd_dl":3,"pd_mf":3,"pd_ml":2,"missing":false,"mobility":1,"plaque_cf":true,"plaque_cl":false,"plaque_df":false,"plaque_dl":false,"plaque_mf":true,"plaque_ml":true,"bleeding_cf":false,"bleeding_cl":false,"bleeding_df":true,"bleeding_dl":true,"bleeding_mf":true,"bleeding_ml":false,"calculus_cf":false,"calculus_cl":false,"calculus_df":true,"calculus_dl":false,"calculus_mf":false,"calculus_ml":false,"suppuration_cf":false,"suppuration_cl":false,"suppuration_df":false,"suppuration_dl":false,"suppuration_mf":false,"suppuration_ml":false},"deleted":false,"updated_at":"2026-07-02T06:23:59.327Z"}}],"pagy":{"total":0,"items":0}},"examples":{"Example":{"title":"Example","value":{"data":[{"id":"2","type":"perio_measurement","attributes":{"perio_chart_id":1,"tooth_number":2,"measurements":{"fg_cf":0,"fg_cl":0,"fg_df":0,"fg_dl":0,"fg_mf":0,"fg_ml":0,"gm_cf":1,"gm_cl":1,"gm_df":1,"gm_dl":1,"gm_mf":1,"gm_ml":1,"mj_cf":5,"mj_cl":5,"mj_df":5,"mj_dl":5,"mj_mf":5,"mj_ml":5,"pd_cf":2,"pd_cl":2,"pd_df":3,"pd_dl":3,"pd_mf":3,"pd_ml":2,"missing":false,"mobility":1,"plaque_cf":true,"plaque_cl":false,"plaque_df":false,"plaque_dl":false,"plaque_mf":true,"plaque_ml":true,"bleeding_cf":false,"bleeding_cl":false,"bleeding_df":true,"bleeding_dl":true,"bleeding_mf":true,"bleeding_ml":false,"calculus_cf":false,"calculus_cl":false,"calculus_df":true,"calculus_dl":false,"calculus_mf":false,"calculus_ml":false,"suppuration_cf":false,"suppuration_cl":false,"suppuration_df":false,"suppuration_dl":false,"suppuration_mf":false,"suppuration_ml":false},"deleted":false,"updated_at":"2026-07-02T06:23:59.327Z"}}],"pagy":{"total":0,"items":0}}}},"exampleType":"examples"}},"exampleType":"examples"},"5347292a-fd5f-49df-a552-b9f5fbcb1fdc":{"description":"Missing, invalid or expired token.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"string","uniqueKey":"errors","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"errors":"not authorized"},"examples":{"Example":{"title":"Example","value":{"errors":"not authorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"243fe006-35dc-48c5-b7a8-163fe71da227":{"description":"The credential may not access this resource.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"string","uniqueKey":"errors","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"errors":"access Denied"},"examples":{"Example":{"title":"Example","value":{"errors":"access Denied"}}},"exampleType":"examples"}},"exampleType":"examples"},"03138244-4918-407d-8f4b-0f6757018b27":{"description":"Resource not found.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"string","uniqueKey":"errors","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"errors":"resource not found"},"examples":{"Example":{"title":"Example","value":{"errors":"resource not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"f890e85b-416d-4c20-af26-c0908e28f03b":{"description":"The request could not be processed.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"string","uniqueKey":"errors","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"errors":"..."},"examples":{"Example":{"title":"Example","value":{"errors":"..."}}},"exampleType":"examples"}},"exampleType":"examples"},"b38e0cfe-b31b-4689-9e8a-5c0ce33897e4":{"description":"Concurrency limit exceeded. The request was not executed; retry is safe.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"string","uniqueKey":"errors","typeLabel":"string"},"sync_type":{"type":"string","enum":["initial","incremental"],"uniqueKey":"sync_type","typeLabel":"enum\u003cstring>"},"max_concurrent_locations":{"type":"integer","uniqueKey":"max_concurrent_locations","typeLabel":"integer"},"active_location_ids":{"type":"array","items":{"type":"integer","uniqueKey":"active_location_ids.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"active_location_ids","typeLabel":"integer[]"},"retry_after_seconds":{"type":"integer","uniqueKey":"retry_after_seconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"example":{"errors":"Too many locations syncing concurrently. At most 5 locations may have initial sync requests in flight at a time.","sync_type":"initial","max_concurrent_locations":5,"active_location_ids":[101,102,103,104,105],"retry_after_seconds":1},"examples":{"Example":{"title":"Example","value":{"errors":"Too many locations syncing concurrently. At most 5 locations may have initial sync requests in flight at a time.","sync_type":"initial","max_concurrent_locations":5,"active_location_ids":[101,102,103,104,105],"retry_after_seconds":1}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"052ca5b8-928b-479c-a5a1-ca169145f2d5":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT returned by POST /auth/token. Valid for six hours.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"b91bf1cd-83c4-4ee4-a1e3-63b52a8f9d59":{"url":"https://app.teamcaredental.com/api/v1/vendors"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT returned by POST /auth/token. Valid for six hours.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"JWT returned by POST /auth/token. Valid for six hours.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://app.teamcaredental.com/openapi-vendors.json"},"subdomain":"teamcare-dental","siteName":"TeamCare APIs","title":"List perio measurements - TeamCare APIs","navMaps":{"firstHrefInVersion":{"v2":{"href":"/v2/core-apis","matchLevel":2},"v1":{"href":"/api-reference/perio-charts/list-perio-measurements","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T10:53:28.011Z","originalFileLocation":"api-reference/perio-charts/list-perio-measurements.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"This endpoint is not yet available in production. This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments. | Our Field | Open Dental | Velox | Meaning | | --- | --- | --- | --- | | pd_mf | MBvalue (SequenceType=0) | pd_mf | Pocket depth at the mesial facial/buccal site (mm). | | gm_mf | MBvalue (SequenceType=3) | gm_mf | Gingival margin measurement (mm). | | mj_mf | MBvalue (SequenceType=2) | mj_mf | Mucogingival junction measurement (mm). | | fg_mf | MBvalue (SequenceType=4) | fg_mf | Furcation grade. | | bleeding_mf | Bit 1 of MBvalue (SequenceType=5) | bleeding_mf | Bleeding present at the site. | | suppuration_mf | Bit 2 of MBvalue (SequenceType=5) | suppuration_mf | Suppuration (pus) present at the site. | | plaque_mf | Bit 4 of MBvalue (SequenceType=5) | N/A | Site-specific plaque. | | calculus_mf | Bit 8 of MBvalue (SequenceType=5) | N/A | Site-specific calculus. | | plaque | N/A | plaque | Whole-tooth plaque score (Velox only). | | mobility | ToothValue (SequenceType=1) | mobility | Tooth mobility score. | | missing | SequenceType=6 exists | mobility == 5 | Indicates the tooth was skipped or missing during the exam. | ### Open Dental - Each tooth is represented by multiple PerioMeasure rows, one per SequenceType. - The API combines these into a single PerioMeasurement. - Site measurements are stored in MB, B, DB, ML, L, and DL columns. - SequenceType=5 stores bleeding, suppuration, plaque, and calculus as bit flags in the site values. - A SequenceType=6 row indicates the tooth was skipped (treated as missing=true). ### Velox - Already provides a single measurement object per tooth. - Uses the same JSON keys (pd_mf, gm_cf, etc.) directly. - Includes a whole-tooth plaque score. - Does not have site-specific calculus values. - A mobility value of 5 indicates a missing tooth. This endpoint retrieves appointments for a specific location. #### Parameters - location_id (required): The ID of the location for which patients are to be retrieved. - after: A parameter to specify the cursor for pagination. - items: A parameter to specify the number of items to be returned. - The q[fetch_modified_since] is used to capture the delta changes, pass the datetime in UTC as shown in example below json { \u0026quot;q\u0026quot;: { \u0026quot;fetch_modified_since\u0026quot;: \u0026quot;2025-12-02T01:58:00.164Z\u0026quot; } }\">\u003cmeta data-mint-head name=\"application-name\" content=\"TeamCare APIs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List perio measurements - TeamCare APIs\">\u003cmeta data-mint-head property=\"og:description\" content=\"This endpoint is not yet available in production. This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments. | Our Field | Open Dental | Velox | Meaning | | --- | --- | --- | --- | | pd_mf | MBvalue (SequenceType=0) | pd_mf | Pocket depth at the mesial facial/buccal site (mm). | | gm_mf | MBvalue (SequenceType=3) | gm_mf | Gingival margin measurement (mm). | | mj_mf | MBvalue (SequenceType=2) | mj_mf | Mucogingival junction measurement (mm). | | fg_mf | MBvalue (SequenceType=4) | fg_mf | Furcation grade. | | bleeding_mf | Bit 1 of MBvalue (SequenceType=5) | bleeding_mf | Bleeding present at the site. | | suppuration_mf | Bit 2 of MBvalue (SequenceType=5) | suppuration_mf | Suppuration (pus) present at the site. | | plaque_mf | Bit 4 of MBvalue (SequenceType=5) | N/A | Site-specific plaque. | | calculus_mf | Bit 8 of MBvalue (SequenceType=5) | N/A | Site-specific calculus. | | plaque | N/A | plaque | Whole-tooth plaque score (Velox only). | | mobility | ToothValue (SequenceType=1) | mobility | Tooth mobility score. | | missing | SequenceType=6 exists | mobility == 5 | Indicates the tooth was skipped or missing during the exam. | ### Open Dental - Each tooth is represented by multiple PerioMeasure rows, one per SequenceType. - The API combines these into a single PerioMeasurement. - Site measurements are stored in MB, B, DB, ML, L, and DL columns. - SequenceType=5 stores bleeding, suppuration, plaque, and calculus as bit flags in the site values. - A SequenceType=6 row indicates the tooth was skipped (treated as missing=true). ### Velox - Already provides a single measurement object per tooth. - Uses the same JSON keys (pd_mf, gm_cf, etc.) directly. - Includes a whole-tooth plaque score. - Does not have site-specific calculus values. - A mobility value of 5 indicates a missing tooth. This endpoint retrieves appointments for a specific location. #### Parameters - location_id (required): The ID of the location for which patients are to be retrieved. - after: A parameter to specify the cursor for pagination. - items: A parameter to specify the number of items to be returned. - The q[fetch_modified_since] is used to capture the delta changes, pass the datetime in UTC as shown in example below json { \u0026quot;q\u0026quot;: { \u0026quot;fetch_modified_since\u0026quot;: \u0026quot;2025-12-02T01:58:00.164Z\u0026quot; } }\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TeamCare APIs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://teamcare-dental.mintlify.app/_mintlify/api/og/v2?division=Measurements\u0026amp;title=List+perio+measurements\u0026amp;description=**This+endpoint+is+not+yet+available+in+production.**%0A%0AThis+resource+will+give+us+information+regarding+Perio+Charts+or+Exams+the+patient+had+when+visit+a+clini\u0026amp;theme=3ccd0e1a60db7aabd74bc034\u0026amp;signature=a279249ef109fc35d1211f83421a2df5397fdc304e4427193737fbdbb8308dfb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List perio measurements - TeamCare APIs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"This endpoint is not yet available in production. This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments. | Our Field | Open Dental | Velox | Meaning | | --- | --- | --- | --- | | pd_mf | MBvalue (SequenceType=0) | pd_mf | Pocket depth at the mesial facial/buccal site (mm). | | gm_mf | MBvalue (SequenceType=3) | gm_mf | Gingival margin measurement (mm). | | mj_mf | MBvalue (SequenceType=2) | mj_mf | Mucogingival junction measurement (mm). | | fg_mf | MBvalue (SequenceType=4) | fg_mf | Furcation grade. | | bleeding_mf | Bit 1 of MBvalue (SequenceType=5) | bleeding_mf | Bleeding present at the site. | | suppuration_mf | Bit 2 of MBvalue (SequenceType=5) | suppuration_mf | Suppuration (pus) present at the site. | | plaque_mf | Bit 4 of MBvalue (SequenceType=5) | N/A | Site-specific plaque. | | calculus_mf | Bit 8 of MBvalue (SequenceType=5) | N/A | Site-specific calculus. | | plaque | N/A | plaque | Whole-tooth plaque score (Velox only). | | mobility | ToothValue (SequenceType=1) | mobility | Tooth mobility score. | | missing | SequenceType=6 exists | mobility == 5 | Indicates the tooth was skipped or missing during the exam. | ### Open Dental - Each tooth is represented by multiple PerioMeasure rows, one per SequenceType. - The API combines these into a single PerioMeasurement. - Site measurements are stored in MB, B, DB, ML, L, and DL columns. - SequenceType=5 stores bleeding, suppuration, plaque, and calculus as bit flags in the site values. - A SequenceType=6 row indicates the tooth was skipped (treated as missing=true). ### Velox - Already provides a single measurement object per tooth. - Uses the same JSON keys (pd_mf, gm_cf, etc.) directly. - Includes a whole-tooth plaque score. - Does not have site-specific calculus values. - A mobility value of 5 indicates a missing tooth. This endpoint retrieves appointments for a specific location. #### Parameters - location_id (required): The ID of the location for which patients are to be retrieved. - after: A parameter to specify the cursor for pagination. - items: A parameter to specify the number of items to be returned. - The q[fetch_modified_since] is used to capture the delta changes, pass the datetime in UTC as shown in example below json { \u0026quot;q\u0026quot;: { \u0026quot;fetch_modified_since\u0026quot;: \u0026quot;2025-12-02T01:58:00.164Z\u0026quot; } }\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://teamcare-dental.mintlify.app/_mintlify/api/og/v2?division=Measurements\u0026amp;title=List+perio+measurements\u0026amp;description=**This+endpoint+is+not+yet+available+in+production.**%0A%0AThis+resource+will+give+us+information+regarding+Perio+Charts+or+Exams+the+patient+had+when+visit+a+clini\u0026amp;theme=3ccd0e1a60db7aabd74bc034\u0026amp;signature=a279249ef109fc35d1211f83421a2df5397fdc304e4427193737fbdbb8308dfb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/teamcare-dental/wlYo3q_II6rf8LJ-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TeamCare APIs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#A67C00\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/perio-charts/list-perio-measurements.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.teamcaredental.com/#organization\",\"name\":\"TeamCare APIs\",\"url\":\"https://docs.teamcaredental.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/teamcare-dental/C9tikQPY1JpylSlb/logo/light.png?fit=max\u0026auto=format\u0026n=C9tikQPY1JpylSlb\u0026q=85\u0026s=f1b65ebedfb93ded01a7e1a65f291dbb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.teamcaredental.com#website\",\"name\":\"TeamCare APIs\",\"url\":\"https://docs.teamcaredental.com\",\"publisher\":{\"@id\":\"https://docs.teamcaredental.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements#webpage\",\"url\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements\",\"name\":\"List perio measurements\",\"description\":\"This endpoint is not yet available in production. This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments. | Our Field | Open Dental | Velox | Meaning | | --- | --- | --- | --- | | pd_mf | MBvalue (SequenceType=0) | pd_mf | Pocket depth at the mesial facial/buccal site (mm). | | gm_mf | MBvalue (SequenceType=3) | gm_mf | Gingival margin measurement (mm). | | mj_mf | MBvalue (SequenceType=2) | mj_mf | Mucogingival junction measurement (mm). | | fg_mf | MBvalue (SequenceType=4) | fg_mf | Furcation grade. | | bleeding_mf | Bit 1 of MBvalue (SequenceType=5) | bleeding_mf | Bleeding present at the site. | | suppuration_mf | Bit 2 of MBvalue (SequenceType=5) | suppuration_mf | Suppuration (pus) present at the site. | | plaque_mf | Bit 4 of MBvalue (SequenceType=5) | N/A | Site-specific plaque. | | calculus_mf | Bit 8 of MBvalue (SequenceType=5) | N/A | Site-specific calculus. | | plaque | N/A | plaque | Whole-tooth plaque score (Velox only). | | mobility | ToothValue (SequenceType=1) | mobility | Tooth mobility score. | | missing | SequenceType=6 exists | mobility == 5 | Indicates the tooth was skipped or missing during the exam. | ### Open Dental - Each tooth is represented by multiple PerioMeasure rows, one per SequenceType. - The API combines these into a single PerioMeasurement. - Site measurements are stored in MB, B, DB, ML, L, and DL columns. - SequenceType=5 stores bleeding, suppuration, plaque, and calculus as bit flags in the site values. - A SequenceType=6 row indicates the tooth was skipped (treated as missing=true). ### Velox - Already provides a single measurement object per tooth. - Uses the same JSON keys (pd_mf, gm_cf, etc.) directly. - Includes a whole-tooth plaque score. - Does not have site-specific calculus values. - A mobility value of 5 indicates a missing tooth. This endpoint retrieves appointments for a specific location. #### Parameters - location_id (required): The ID of the location for which patients are to be retrieved. - after: A parameter to specify the cursor for pagination. - items: A parameter to specify the number of items to be returned. - The q[fetch_modified_since] is used to capture the delta changes, pass the datetime in UTC as shown in example below json { \\\"q\\\": { \\\"fetch_modified_since\\\": \\\"2025-12-02T01:58:00.164Z\\\" } }\",\"dateModified\":\"2026-10-28T10:53:28.011Z\",\"isPartOf\":{\"@id\":\"https://docs.teamcaredental.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Core APIs\",\"item\":\"https://docs.teamcaredental.com/core-apis\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Patients \u0026 Clinical\",\"item\":\"https://docs.teamcaredental.com/api-reference/metrics/new-patients\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Patients\",\"item\":\"https://docs.teamcaredental.com/api-reference/metrics/new-patients\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"List perio measurements\",\"item\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements#apireference\",\"headline\":\"List perio measurements\",\"name\":\"List perio measurements\",\"description\":\"This endpoint is not yet available in production. This resource will give us information regarding Perio Charts or Exams the patient had when visit a clinic. Nested to charts there is measurments list (Velox refered it to as Perio Tooth) which will give us infomation regarding per tooth measuments. | Our Field | Open Dental | Velox | Meaning | | --- | --- | --- | --- | | pd_mf | MBvalue (SequenceType=0) | pd_mf | Pocket depth at the mesial facial/buccal site (mm). | | gm_mf | MBvalue (SequenceType=3) | gm_mf | Gingival margin measurement (mm). | | mj_mf | MBvalue (SequenceType=2) | mj_mf | Mucogingival junction measurement (mm). | | fg_mf | MBvalue (SequenceType=4) | fg_mf | Furcation grade. | | bleeding_mf | Bit 1 of MBvalue (SequenceType=5) | bleeding_mf | Bleeding present at the site. | | suppuration_mf | Bit 2 of MBvalue (SequenceType=5) | suppuration_mf | Suppuration (pus) present at the site. | | plaque_mf | Bit 4 of MBvalue (SequenceType=5) | N/A | Site-specific plaque. | | calculus_mf | Bit 8 of MBvalue (SequenceType=5) | N/A | Site-specific calculus. | | plaque | N/A | plaque | Whole-tooth plaque score (Velox only). | | mobility | ToothValue (SequenceType=1) | mobility | Tooth mobility score. | | missing | SequenceType=6 exists | mobility == 5 | Indicates the tooth was skipped or missing during the exam. | ### Open Dental - Each tooth is represented by multiple PerioMeasure rows, one per SequenceType. - The API combines these into a single PerioMeasurement. - Site measurements are stored in MB, B, DB, ML, L, and DL columns. - SequenceType=5 stores bleeding, suppuration, plaque, and calculus as bit flags in the site values. - A SequenceType=6 row indicates the tooth was skipped (treated as missing=true). ### Velox - Already provides a single measurement object per tooth. - Uses the same JSON keys (pd_mf, gm_cf, etc.) directly. - Includes a whole-tooth plaque score. - Does not have site-specific calculus values. - A mobility value of 5 indicates a missing tooth. This endpoint retrieves appointments for a specific location. #### Parameters - location_id (required): The ID of the location for which patients are to be retrieved. - after: A parameter to specify the cursor for pagination. - items: A parameter to specify the number of items to be returned. - The q[fetch_modified_since] is used to capture the delta changes, pass the datetime in UTC as shown in example below json { \\\"q\\\": { \\\"fetch_modified_since\\\": \\\"2025-12-02T01:58:00.164Z\\\" } }\",\"url\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements\",\"mainEntityOfPage\":{\"@id\":\"https://docs.teamcaredental.com/api-reference/perio-charts/list-perio-measurements#webpage\"},\"dateModified\":\"2026-10-28T10:53:28.011Z\",\"publisher\":{\"@id\":\"https://docs.teamcaredental.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.teamcaredental.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TeamCare APIs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TeamCare APIs","nav":{"global":null,"versions":[{"version":"v2","default":true,"pages":[{"title":"v2","href":"/v2/core-apis"}]},{"version":"v1","groups":[{"group":"Getting Started","pages":[{"title":"TeamCare APIs","mode":"wide","href":""},{"title":"Getting Started","sidebarTitle":"Getting Started","href":"/getting-started"},{"title":"Environments","sidebarTitle":"Environments","href":"/environments"},{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/quickstart"},{"title":"Changelog","href":"/changelog"}]},{"group":"Core APIs","pages":[{"title":"Core APIs","href":"/core-apis"},{"group":"Authentication","pages":[{"title":"Create token","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /auth/token","href":"/api-reference/authentication/create-token"}]},{"group":"Practice","expanded":false,"pages":[{"title":"List locations","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations","href":"/api-reference/locations/list-locations"},{"title":"List operatories","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/operatories","href":"/api-reference/operatories/list-operatories"},{"title":"List employees","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/employees","href":"/api-reference/employees/list-employees"},{"title":"Set third-party identifier","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /locations/{location_id}/third_party_identifiers","href":"/api-reference/externals/set-third-party-identifier"}]},{"group":"Patients \u0026 Clinical","expanded":false,"pages":[{"group":"Patients","pages":[{"group":"Metrics","pages":[{"title":"New patients","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/new_patients","href":"/api-reference/metrics/new-patients"},{"title":"Reactivation attended","description":"This endpoint retrieves reactivation values for a specific location and for a specific duration.\n\n#### Parameters\n\n- location_id (required): The ID of the location for which patients are to be retrieved.\n- date (required): The reference date representing when the first treatment was performed.\n- duration (optional): The time period (in days) to look up data within, starting from the given date.\n- submitted_by_id (optional): Identifies the provider who submitted the appointments.\n- q[exam_type_filter] (optional): A parameter to specify the exam type that can be \"limited\", \"comprehensive\" or \"periodic\".\n- q[appointment_exam_provider_id_in] (optional): A parameter to specify the provider ids of exams to search with given in array.\n- q[appointment_provider_id_in] (optional): A parameter to specify the provider ids of appointments to search with given in array.","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/reactivation_attended","href":"/api-reference/metrics/reactivation-attended"}]},{"group":"Perio Charts","pages":[{"group":"Measurements","pages":[{"title":"List perio measurements","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/{patient_id}/perio_charts/{perio_chart_id}/perio_measurements","href":"/api-reference/perio-charts/list-perio-measurements"}]},{"title":"List perio charts","description":"**This endpoint is not yet available in production.**\n\nThis endpoint retrieves appointments for a specific location.\n\n#### Parameters\n\n- location_id (required): The ID of the location for which patients are to be retrieved.\n- after: A parameter to specify the cursor for pagination.\n- items: A parameter to specify the number of items to be returned.\n- The `q[fetch_modified_since]` is used to capture the delta changes, pass the datetime in UTC as shown in example below\n\n```json\n{\n \"q\": {\n \"fetch_modified_since\": \"2025-12-02T01:58:00.164Z\"\n }\n}\n```","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/{patient_id}/perio_charts","href":"/api-reference/perio-charts/list-perio-charts"}]},{"group":"Clinical Notes","pages":[{"title":"List clinical notes","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients/{patient_id}/clinical_notes","href":"/api-reference/clinical-notes/list-clinical-notes"}]},{"title":"List patients","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/patients","href":"/api-reference/patients/list-patients"}]},{"title":"List referrals","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/referrals","href":"/api-reference/patients-referrals/list-referrals"},{"title":"List treatment plans","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/treatment_plans","href":"/api-reference/treatment-plan/list-treatment-plans"},{"title":"List treatments","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/treatments","href":"/api-reference/treatments/list-treatments"}]},{"group":"Scheduling","expanded":false,"pages":[{"title":"List appointments","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/appointments","href":"/api-reference/appointments/list-appointments"},{"title":"List appointment types","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/appointment_types","href":"/api-reference/appointment-types/list-appointment-types"},{"title":"List scheduling leads","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/scheduling_leads","href":"/api-reference/scheduling-leads/list-scheduling-leads"}]},{"group":"Billing \u0026 Insurance","expanded":false,"pages":[{"title":"List ledger transactions","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/ledger_transactions","href":"/api-reference/ledger-transactions/list-ledger-transactions"},{"title":"List insurance claims","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/insurance_claims","href":"/api-reference/insurance-claims/list-insurance-claims"},{"title":"Update insurance claims","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json patch /locations/{location_id}/insurance_claims/{insurance_claim_id}","href":"/api-reference/insurance-claims/update-insurance-claims"},{"title":"List insurance verifications","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/insurance_verifications","href":"/api-reference/insurance-verifications/list-insurance-verifications"},{"title":"Update insurance verifications","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json patch /locations/{location_id}/insurance_verifications/{insurance_verification_id}","href":"/api-reference/insurance-verifications/update-insurance-verifications"},{"title":"List claim payments","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/claim_payments","href":"/api-reference/claim-payments/list-claim-payments"},{"title":"Post claim payments","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /locations/{location_id}/claim_payments","href":"/api-reference/claim-payments/post-claim-payments"},{"title":"List insurance plans","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/insurance_plans","href":"/api-reference/insurance-plans/list-insurance-plans"},{"title":"List fee schedules","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/fee_schedules","href":"/api-reference/fee-schedules/list-fee-schedules"},{"title":"List fee schedule items","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/fee_schedule_items","href":"/api-reference/fee-schedule-items/list-fee-schedule-items"}]},{"group":"Reporting","expanded":false,"pages":[{"group":"Stats","pages":[{"group":"Daily","pages":[{"title":"Daily stats","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/daily/stats","href":"/api-reference/daily/daily-stats"},{"title":"Daily schedule stats","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/daily/schedule_stats","href":"/api-reference/daily/daily-schedule-stats"}]},{"group":"Monthly","pages":[{"title":"Monthly stats","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/monthly/stats","href":"/api-reference/monthly/monthly-stats"},{"title":"Monthly schedule stats","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/monthly/schedule_stats","href":"/api-reference/monthly/monthly-schedule-stats"}]},{"title":"Current stats","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/current/stats","href":"/api-reference/stats/current-stats"}]},{"group":"Dashboard","pages":[{"title":"Lifetime stats","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /locations/{location_id}/dashboard/lifetime_stats","href":"/api-reference/dashboard/lifetime-stats"},{"title":"Dashboard goals","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /locations/{location_id}/dashboard/goals","href":"/api-reference/dashboard/dashboard-goals"},{"title":"Dashboard schedule","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /locations/{location_id}/dashboard/schedule","href":"/api-reference/dashboard/dashboard-schedule"},{"title":"Dashboard leaderboards","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json post /locations/{location_id}/dashboard/leaderboards","href":"/api-reference/dashboard/dashboard-leaderboards"}]}]}]},{"group":"AI Agent API","pages":[{"title":"AI Agent APIs","sidebarTitle":"AI Agent APIs","href":"/ai-voice/index"},{"title":"Getting Started","sidebarTitle":"Getting Started","href":"/ai-voice/getting-started"},{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/ai-voice/quickstart"},{"title":"Authentication","sidebarTitle":"Authentication","href":"/ai-voice/authentication"},{"title":"Error Codes","sidebarTitle":"Error Codes","href":"/ai-voice/error-codes"},{"title":"Versioning Strategy","sidebarTitle":"Versioning Strategy","href":"/ai-voice/versioning-strategy"},{"group":"Organization","pages":[{"group":"Patient","pages":[{"title":"Search patients","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json get /organizations/{organization_id}/patients/search","href":"/api-reference/patient/search-patients"},{"title":"List patient appointments","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json get /organizations/{organization_id}/patients/{patient_id}/appointments","href":"/api-reference/patient/list-patient-appointments"}]},{"group":"Appointment Types","pages":[{"title":"List appointment types","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-vendors.json get /locations/{location_id}/appointment_types","href":"/api-reference/appointment-types/list-appointment-types"},{"title":"Create appointment type","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json post /organizations/{organization_id}/appointment_types","href":"/api-reference/appointment-types/create-appointment-type"}]},{"group":"Available Slots","pages":[{"title":"List available slots","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json get /organizations/{organization_id}/available_slots","href":"/api-reference/available-slots/list-available-slots"}]},{"group":"Appointment","pages":[{"title":"Schedule appointment","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json post /organizations/{organization_id}/appointments/schedule","href":"/api-reference/appointment/schedule-appointment"},{"title":"Reschedule appointment","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json post /organizations/{organization_id}/appointments/{appointment_id}/reschedule","href":"/api-reference/appointment/reschedule-appointment"},{"title":"Confirm appointment","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json post /organizations/{organization_id}/appointments/{appointment_id}/confirm","href":"/api-reference/appointment/confirm-appointment"},{"title":"Cancel appointment","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json post /organizations/{organization_id}/appointments/{appointment_id}/cancel","href":"/api-reference/appointment/cancel-appointment"}]},{"title":"List organizations","deprecated":null,"version":null,"openapi":"https://app.teamcaredental.com/openapi-ai-voice.json get /organizations","href":"/api-reference/organizations/list-organizations"}]}]},{"group":"Foundations","pages":[{"title":"Authentication","sidebarTitle":"Authentication","href":"/authentication"},{"title":"Error Codes","sidebarTitle":"Error Codes","href":"/error-codes"},{"title":"Versioning Strategy","sidebarTitle":"Versioning Strategy","href":"/versioning-strategy"},{"title":"Output Formats","sidebarTitle":"Output Formats","href":"/output-formats"},{"title":"Pagination","sidebarTitle":"Pagination","href":"/pagination"},{"title":"Filteration","sidebarTitle":"Filteration","href":"/filteration"},{"title":"Concurrency Limits","sidebarTitle":"Concurrency Limits","href":"/concurrency-limits"}]}]}]},"title":"List perio measurements - TeamCare APIs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CBCH2P7b.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}