"execute" (default) runs the query and returns rows. "plan" returns the optimizer's plan without executing or consuming DynamoDB read capacity. API clients require the query scope.
Extended error detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"DynamoSQL","colors":{"primary":"#FF9900","light":"#FFB84D","dark":"#CC7A00"},"favicon":"https://mintcdn.com/jmrapidapps/zPacbr5tPJpZGVDx/public/logo/favicon.svg?fit=max\u0026auto=format\u0026n=zPacbr5tPJpZGVDx\u0026q=85\u0026s=174d2799d2c7fea0cca12c504852eb82","logo":{"light":"https://mintcdn.com/jmrapidapps/zPacbr5tPJpZGVDx/public/logo/light.svg?fit=max\u0026auto=format\u0026n=zPacbr5tPJpZGVDx\u0026q=85\u0026s=b0b5e003ebd8596309d1d3c65f1766b2","dark":"https://mintcdn.com/jmrapidapps/zPacbr5tPJpZGVDx/public/logo/dark.svg?fit=max\u0026auto=format\u0026n=zPacbr5tPJpZGVDx\u0026q=85\u0026s=edbec3c5e90a09e52d9fb90ed5ebed42","href":"https://dynamosql.com"},"api":{"openapi":"openapi.yaml","mdx":{"server":"https://api.dynamosql.com"}},"navbar":{"links":[{"label":"Postman Collection","href":"/guides/postman"}],"primary":null},"footer":{"socials":{"github":"https://github.com/dynamosql"}},"integrations":{"posthog":{"apiKey":"phc_AbHH4xBEuoGEcrzBotzsBK3KUbXXaMc9WyPdSjg7soPf"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jmrapidapps","hasAudioNarration":false,"actualSubdomain":"jmrapidapps","customDomains":["docs.dynamosql.com"],"gitSource":{"type":"github","owner":"jmrapidapps","repo":"dynamosql-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21ec174469870420d777be","collectionId":"b13809aa-716c-4dcc-bf02-a17b49ccbb8c","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21ec174469870420d777be:success","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":12},{"language":"default","tag":"SQL Reference","count":10},{"language":"default","tag":"Schemas","count":7},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"MCP Server","count":4},{"language":"default","tag":"Authentication","count":3},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Changelog","count":1}]},"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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/query","slug":"/api-reference/query","pageMetadata":{"title":"Query","description":"Run or plan SQL queries against DynamoDB.","openapi":"POST /v1/query","href":"/api-reference/query"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Run or plan SQL queries against DynamoDB.\"\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};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`Required scope: `,_jsx(_components.code,{children:`query`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before You Start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/guides/query-modes`,children:`Query Modes`}),` for when to use `,_jsx(_components.code,{children:`execute`}),` vs `,_jsx(_components.code,{children:`plan`}),` and what each response field means.`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/guides/pagination`,children:`Pagination`}),` for how to page through large result sets using `,_jsx(_components.code,{children:`maxRows`}),` and `,_jsx(_components.code,{children:`resumeIdx`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/guides/response-formats`,children:`Response Formats`}),` to choose between row arrays and key-value objects.`]}),`\n`,_jsxs(_components.li,{children:[`See the `,_jsx(_components.a,{href:`/sql-reference/overview`,children:`SQL Reference`}),` for the full list of supported SQL features and current limitations.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`authentication`,children:`Authentication`}),`\n`,_jsxs(_components.p,{children:[`All requests require a bearer token obtained from `,_jsx(_components.code,{children:`POST /v1/auth/token`}),`. Pass it in the `,_jsx(_components.code,{children:`Authorization`}),` header:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Authorization: Bearer YOUR_ACCESS_TOKEN`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Both modes require the `,_jsx(_components.code,{children:`query`}),` scope.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Query","description":"Run or plan SQL queries against DynamoDB.","openapi":"POST /v1/query","href":"/api-reference/query"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before You Start","slug":"before-you-start","depth":2,"children":[]},{"title":"Authentication","slug":"authentication","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Query"],"summary":"Execute or plan SQL","operationId":"runQuery","description":"Run or plan SQL queries against DynamoDB.","requestBody":"98776379-8517-4bed-a98e-7ce9529f3eb0","responses":{"200":"ed02662c-7d6a-418d-9757-3b9c4c071bb7","400":"4a32e56d-93a3-4a8b-8a4b-3e476ca129cc","401":"f832d524-b027-480d-8725-b8116ca04224","403":"76ed50eb-46b9-46db-ac5d-d2b493d1c941","500":"f46084d6-9187-4e4d-a15d-c03fb360a8cf"},"method":"post","type":"path","servers":["f0e8b82c-f23b-45b8-98d0-a5dfa741027c"],"security":["5d4db47c-9a52-4670-89b6-ced7f3f65594"],"path":"/v1/query","baseUrlOptions":["https://api.dynamosql.com"],"title":"Execute or plan SQL","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sql"],"properties":{"sql":{"type":"string","description":"The SQL SELECT statement to execute or plan. DynamoSQL supports SELECT only; INSERT, UPDATE, DELETE, and DDL are not supported.\n","isRequired":true,"uniqueKey":"sql","typeLabel":"string"},"mode":{"type":"string","enum":["execute","plan"],"default":"execute","description":"\"execute\" (default) runs the query and returns rows. \"plan\" returns the optimizer's plan without executing or consuming DynamoDB read capacity. API clients require the `query` scope.\n","uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"options":{"type":"object","properties":{"responseType":{"type":"string","enum":["row","object"],"description":"\"row\" (default): data is an array of value arrays, ordered to match the columns array — compact, suited for tabular display. \"object\": data is an array of key/value objects keyed by column name — convenient for dynamic languages. No effect when mode is \"plan\".\n","uniqueKey":"options.responseType","typeLabel":"enum\u003cstring>"},"maxRows":{"type":"integer","minimum":0,"description":"Maximum rows to return in one response. Defaults to 100. When the result set has more rows, the response includes resumeIdx for the next page. Note: passing 0 returns 0 rows.\n","uniqueKey":"options.maxRows","typeLabel":"integer"},"resumeIdx":{"type":"integer","minimum":0,"description":"Zero-based row offset at which to begin reading. Pass the resumeIdx from a prior response to fetch the next page. Defaults to 0. The engine re-executes the full query and skips the first resumeIdx rows on each request (stateless offset pagination).\n","uniqueKey":"options.resumeIdx","typeLabel":"integer"}},"uniqueKey":"options","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"basic-execute":{"title":"basic-execute","value":{"sql":"SELECT * FROM myschema.orders LIMIT 10","mode":"execute","options":{"maxRows":10}}},"paginated-next-page":{"title":"paginated-next-page","description":"Pass resumeIdx from the previous response to fetch the next page of results.\n","value":{"sql":"SELECT * FROM myschema.orders LIMIT 10","mode":"execute","options":{"maxRows":10,"resumeIdx":10}}},"plan-mode":{"title":"plan-mode","description":"Returns the optimizer's execution plan without fetching rows or consuming DynamoDB RCUs.\n","value":{"sql":"SELECT * FROM myschema.orders LIMIT 10","mode":"plan"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"ed02662c-7d6a-418d-9757-3b9c4c071bb7":{"description":"Query succeeded or returned a structured query error envelope.","headers":{"x-request-id":{"description":"Unique request ID from the Lambda invocation context. Include this when reporting issues.\n","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","description":"true when the request was processed without errors, false otherwise. Always present.\n","enum":[true],"isRequired":true,"uniqueKey":"oneOf.0.success","typeLabel":"enum\u003cboolean>"},"data":{"oneOf":[{"type":"object","required":["data","columns","firstRowIdx","planTime","execTime"],"example":{"data":[[1,"Alice","alice@example.com"],[2,"Bob","bob@example.com"]],"columns":["id","name","email"],"firstRowIdx":0,"resumeIdx":10,"planTime":3,"execTime":47},"properties":{"data":{"type":"array","items":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"oneOf.0.data.oneOf.0.data.items.[INDEX].items.[INDEX]","typeLabel":"any"},"uniqueKey":"oneOf.0.data.oneOf.0.data.items.[INDEX]","typeLabel":"any[]"},"description":"Array of rows; each row is an array of values ordered to match the columns array.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.0.data","typeLabel":"any[][]"},"columns":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.data.oneOf.0.columns.items.[INDEX]","typeLabel":"string"},"description":"Ordered list of column names from the SELECT clause.","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.0.columns","typeLabel":"string[]"},"firstRowIdx":{"type":"integer","description":"Zero-based index of the first row in this response within the full result set. Equal to the resumeIdx sent in the request (or 0 if not specified).\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.0.firstRowIdx","typeLabel":"integer"},"planTime":{"type":"integer","description":"Milliseconds spent parsing, planning, and optimizing the SQL query. Does not include DynamoDB I/O time.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.0.planTime","typeLabel":"integer"},"execTime":{"type":"integer","description":"Total elapsed milliseconds from query start through row collection. Always greater than or equal to planTime. Includes all DynamoDB I/O.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.0.execTime","typeLabel":"integer"},"resumeIdx":{"type":"integer","description":"Index of the next row to fetch. Present only when more rows exist beyond this page (i.e., exactly maxRows rows were returned). Absent when the result set is exhausted. Pass this value as resumeIdx in the next request.\n","uniqueKey":"oneOf.0.data.oneOf.0.resumeIdx","typeLabel":"integer"}},"uniqueKey":"oneOf.0.data.oneOf.0","typeLabel":"object"},{"type":"object","required":["data","columns","firstRowIdx","planTime","execTime"],"example":{"data":[{"id":1,"name":"Alice","email":"alice@example.com"},{"id":2,"name":"Bob","email":"bob@example.com"}],"columns":["id","name","email"],"firstRowIdx":0,"resumeIdx":10,"planTime":3,"execTime":47},"properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.data.oneOf.1.data.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"oneOf.0.data.oneOf.1.data.items.[INDEX]","typeLabel":"object"},"description":"Array of rows; each row is a key/value object keyed by column name.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.1.data","typeLabel":"object[]"},"columns":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.data.oneOf.1.columns.items.[INDEX]","typeLabel":"string"},"description":"Ordered list of column names from the SELECT clause.","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.1.columns","typeLabel":"string[]"},"firstRowIdx":{"type":"integer","description":"Zero-based index of the first row in this response within the full result set. Equal to the resumeIdx sent in the request (or 0 if not specified).\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.1.firstRowIdx","typeLabel":"integer"},"planTime":{"type":"integer","description":"Milliseconds spent parsing, planning, and optimizing the SQL query. Does not include DynamoDB I/O time.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.1.planTime","typeLabel":"integer"},"execTime":{"type":"integer","description":"Total elapsed milliseconds from query start through row collection. Always greater than or equal to planTime. Includes all DynamoDB I/O.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.1.execTime","typeLabel":"integer"},"resumeIdx":{"type":"integer","description":"Index of the next row to fetch. Present only when more rows exist beyond this page (i.e., exactly maxRows rows were returned). Absent when the result set is exhausted. Pass this value as resumeIdx in the next request.\n","uniqueKey":"oneOf.0.data.oneOf.1.resumeIdx","typeLabel":"integer"}},"uniqueKey":"oneOf.0.data.oneOf.1","typeLabel":"object"},{"type":"object","required":["sql","weight","plan","planTime"],"example":{"sql":"SELECT id, name FROM myschema.orders LIMIT 10","weight":12,"plan":"Limit(10)\n Scan(myschema.orders)\n Filter(id IS NOT NULL)","planTime":5},"properties":{"sql":{"type":"string","description":"The normalized SQL statement that was planned.","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.2.sql","typeLabel":"string"},"weight":{"type":"number","description":"Optimizer's relative cost estimate. Lower is cheaper. 0 means no cost estimate was computed.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.2.weight","typeLabel":"number"},"plan":{"type":"string","description":"Human-readable execution plan tree showing scan, filter, join, group, sort, and other operations.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.2.plan","typeLabel":"string"},"planTime":{"type":"integer","description":"Milliseconds spent parsing, planning, and optimizing. No DynamoDB I/O is performed in plan mode.\n","isRequired":true,"uniqueKey":"oneOf.0.data.oneOf.2.planTime","typeLabel":"integer"}},"uniqueKey":"oneOf.0.data.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.0.data","typeLabel":"object"},"error":{"type":"string","description":"Short error message. Present when success is false.\n","uniqueKey":"oneOf.0.error","typeLabel":"string"},"detailedError":{"type":"string","description":"Extended error detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.\n","uniqueKey":"oneOf.0.detailedError","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["success","error"],"example":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"},"properties":{"success":{"type":"boolean","description":"true when the request was processed without errors, false otherwise. Always present.\n","enum":[false],"isRequired":true,"uniqueKey":"oneOf.1.success","typeLabel":"enum\u003cboolean>"},"error":{"type":"string","description":"Short error message.","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"string"},"data":{"oneOf":[{}],"uniqueKey":"oneOf.1.data","typeLabel":"any"},"detailedError":{"type":"string","description":"Extended detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.\n","uniqueKey":"oneOf.1.detailedError","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"data":[[1,"Alice","alice@example.com"],[2,"Bob","bob@example.com"]],"columns":["id","name","email"],"firstRowIdx":0,"resumeIdx":10,"planTime":3,"execTime":47},"error":"\u003cstring>","detailedError":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4a32e56d-93a3-4a8b-8a4b-3e476ca129cc":{"description":"Request body is malformed, SQL cannot be parsed, or SQL uses an unsupported feature. Check error and detailedError for parse position.\n","content":{"application/json":{"schema":{"type":"object","required":["success","error"],"example":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"},"properties":{"success":{"type":"boolean","description":"true when the request was processed without errors, false otherwise. Always present.\n","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"string","description":"Short error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"data":{"oneOf":[{}],"uniqueKey":"data","typeLabel":"any"},"detailedError":{"type":"string","description":"Extended detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.\n","uniqueKey":"detailedError","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"}}},"exampleType":"generated"}},"exampleType":"generated"},"f832d524-b027-480d-8725-b8116ca04224":{"description":"Authorization header missing, JWT expired, or token issuer/audience does not match the Cognito pool.\n","content":{"application/json":{"schema":{"type":"object","required":["success","error"],"example":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"},"properties":{"success":{"type":"boolean","description":"true when the request was processed without errors, false otherwise. Always present.\n","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"string","description":"Short error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"data":{"oneOf":[{}],"uniqueKey":"data","typeLabel":"any"},"detailedError":{"type":"string","description":"Extended detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.\n","uniqueKey":"detailedError","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"}}},"exampleType":"generated"}},"exampleType":"generated"},"76ed50eb-46b9-46db-ac5d-d2b493d1c941":{"description":"tenantId in request body does not match JWT claims.\n","content":{"application/json":{"schema":{"type":"object","required":["success","error"],"example":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"},"properties":{"success":{"type":"boolean","description":"true when the request was processed without errors, false otherwise. Always present.\n","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"string","description":"Short error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"data":{"oneOf":[{}],"uniqueKey":"data","typeLabel":"any"},"detailedError":{"type":"string","description":"Extended detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.\n","uniqueKey":"detailedError","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"}}},"exampleType":"generated"}},"exampleType":"generated"},"f46084d6-9187-4e4d-a15d-c03fb360a8cf":{"description":"Internal error during execution, DynamoDB access, or initialization. Retry with backoff. Include x-request-id when reporting.\n","content":{"application/json":{"schema":{"type":"object","required":["success","error"],"example":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"},"properties":{"success":{"type":"boolean","description":"true when the request was processed without errors, false otherwise. Always present.\n","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"string","description":"Short error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"data":{"oneOf":[{}],"uniqueKey":"data","typeLabel":"any"},"detailedError":{"type":"string","description":"Extended detail. For SQL parse errors, includes the parser's verbose message with line and column position. May be absent even when error is present.\n","uniqueKey":"detailedError","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":"Parse error near 'SELEKT'","detailedError":"Parse error at line 1, column 1: unexpected token 'SELEKT', expected SELECT"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"5d4db47c-9a52-4670-89b6-ced7f3f65594":{"cognitoJwt":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token obtained from `POST /v1/auth/token`. Pass in the `Authorization` header as `Bearer \u003ctoken>`.\n","scopes":[]}}},"servers":{"f0e8b82c-f23b-45b8-98d0-a5dfa741027c":{"url":"https://api.dynamosql.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token obtained from `POST /v1/auth/token`. Pass in the `Authorization` header as `Bearer \u003ctoken>`.\n","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token obtained from `POST /v1/auth/token`. Pass in the `Authorization` header as `Bearer \u003ctoken>`.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"cognitoJwt","name":"Authorization"}],"title":"cognitoJwt"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"jmrapidapps","siteName":"DynamoSQL","title":"Query - DynamoSQL","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-03-13T23:18:21.575Z","originalFileLocation":"api-reference/query.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=\"Run or plan SQL queries against DynamoDB.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DynamoSQL\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_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/jmrapidapps/W3kttRsvcCgl31Iw/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Query - DynamoSQL\">\u003cmeta data-mint-head property=\"og:description\" content=\"Run or plan SQL queries against DynamoDB.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DynamoSQL\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dynamosql.com/api-reference/query\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jmrapidapps.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Query\u0026amp;description=Run+or+plan+SQL+queries+against+DynamoDB.\u0026amp;theme=e55e953bcc4617de573a62ae\u0026amp;signature=7661117582a1a7c1f692ffca3ec66cf6dfa3e00b3d56a6e3d18ec25337c4bbbb\">\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=\"Query - DynamoSQL\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Run or plan SQL queries against DynamoDB.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jmrapidapps.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Query\u0026amp;description=Run+or+plan+SQL+queries+against+DynamoDB.\u0026amp;theme=e55e953bcc4617de573a62ae\u0026amp;signature=7661117582a1a7c1f692ffca3ec66cf6dfa3e00b3d56a6e3d18ec25337c4bbbb\">\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/jmrapidapps/W3kttRsvcCgl31Iw/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DynamoSQL\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF9900\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dynamosql.com/api-reference/query\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/query.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dynamosql.com/#organization\",\"name\":\"DynamoSQL\",\"url\":\"https://docs.dynamosql.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jmrapidapps/zPacbr5tPJpZGVDx/public/logo/light.svg?fit=max\u0026auto=format\u0026n=zPacbr5tPJpZGVDx\u0026q=85\u0026s=b0b5e003ebd8596309d1d3c65f1766b2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dynamosql.com#website\",\"name\":\"DynamoSQL\",\"url\":\"https://docs.dynamosql.com\",\"publisher\":{\"@id\":\"https://docs.dynamosql.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dynamosql.com/api-reference/query#webpage\",\"url\":\"https://docs.dynamosql.com/api-reference/query\",\"name\":\"Query\",\"description\":\"Run or plan SQL queries against DynamoDB.\",\"dateModified\":\"2026-03-13T23:18:21.575Z\",\"isPartOf\":{\"@id\":\"https://docs.dynamosql.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dynamosql.com/api-reference/query#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dynamosql.com/api-reference/query#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.dynamosql.com/api-reference/authentication\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Query\",\"item\":\"https://docs.dynamosql.com/api-reference/query\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.dynamosql.com/api-reference/query#apireference\",\"headline\":\"Query\",\"name\":\"Query\",\"description\":\"Run or plan SQL queries against DynamoDB.\",\"url\":\"https://docs.dynamosql.com/api-reference/query\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dynamosql.com/api-reference/query#webpage\"},\"dateModified\":\"2026-03-13T23:18:21.575Z\",\"publisher\":{\"@id\":\"https://docs.dynamosql.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dynamosql.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DynamoSQL\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DynamoSQL","nav":{"global":null,"groups":[{"group":"Get Started","pages":[{"title":"Quickstart","href":"/guides/quickstart"},{"title":"Authentication","href":"/guides/authentication"},{"title":"IAM Setup","href":"/guides/iam-setup"}]},{"group":"Guides","pages":[{"title":"Query Modes","href":"/guides/query-modes"},{"title":"Response Formats","href":"/guides/response-formats"},{"title":"Pagination","href":"/guides/pagination"},{"title":"Error Handling","href":"/guides/error-handling"},{"title":"Rate Limits and Quotas","href":"/guides/rate-limits-and-quotas"},{"title":"Postman Collection","href":"/guides/postman"}]},{"group":"MCP Server","pages":[{"title":"Overview","href":"/mcp/overview"},{"title":"MCP Quickstart","href":"/mcp/quickstart"},{"title":"MCP Authentication","href":"/mcp/authentication"},{"title":"Tools and Resources","href":"/mcp/tools-and-resources"}]},{"group":"API Reference","pages":[{"group":"Authentication","pages":[{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Get Access Token","openapi":"POST /v1/auth/token","href":"/api-reference/authentication/get-token"},{"title":"Refresh Access Token","description":"Exchange a refresh token for a new access token.","openapi":"POST /v1/auth/refresh","href":"/api-reference/authentication/refresh-token"}]},{"title":"Query","openapi":"POST /v1/query","href":"/api-reference/query"},{"group":"Schemas","pages":[{"title":"List Schemas","description":"List all schemas for your tenant.","openapi":"GET /v1/schemas","href":"/api-reference/schemas/list"},{"title":"Create Schema","openapi":"POST /v1/schemas","href":"/api-reference/schemas/create"},{"title":"Get Schema","openapi":"GET /v1/schemas/{schemaName}","href":"/api-reference/schemas/get"},{"title":"Update Schema","openapi":"PATCH /v1/schemas/{schemaName}","href":"/api-reference/schemas/update"},{"title":"Delete Schema","openapi":"DELETE /v1/schemas/{schemaName}","href":"/api-reference/schemas/delete"},{"title":"Refresh Metadata","openapi":"POST /v1/schemas/{schemaName}/refresh-metadata","href":"/api-reference/schemas/refresh-metadata"},{"title":"Validate Role","openapi":"POST /v1/schemas/{schemaName}/validate-role","href":"/api-reference/schemas/validate-role"}]},{"title":"Usage Summary","openapi":"GET /v1/usage/summary","href":"/api-reference/usage"}]},{"group":"SQL Reference","pages":[{"title":"SQL Reference Overview","href":"/sql-reference/overview"},{"title":"SELECT","href":"/sql-reference/select"},{"title":"FROM and JOINs","href":"/sql-reference/from-and-joins"},{"title":"WHERE Predicates","href":"/sql-reference/where-predicates"},{"title":"Grouping and Aggregation","href":"/sql-reference/grouping-and-aggregation"},{"title":"Subqueries and CTEs","href":"/sql-reference/subqueries-and-ctes"},{"title":"Set Operations","href":"/sql-reference/set-operations"},{"title":"Expressions and Operators","href":"/sql-reference/expressions-and-operators"},{"title":"Functions","href":"/sql-reference/functions"},{"title":"Limitations","href":"/sql-reference/limitations"}]},{"group":"Changelog","pages":[{"title":"2026 Changelog","href":"/changelog/2026"}]}]},"basePath":"","title":"Query - DynamoSQL","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}