All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.
Workspace API key (lora_sk_…) sent as Authorization: Bearer <api_key>. Each scoped operation names the scope it requires in its security requirement, for example shortcuts.write; a key without it receives 403 with code: insufficient_scope. GET /v1/qr also accepts anonymous requests and requires no scope.
Replace the icon recipe. Pass null to reset to the default. Omit to leave it untouched. The payload replaces the whole recipe — partial merges are not supported.
Replace the alias set. Pass the full set you want — existing aliases not in this list are removed. Omit to leave aliases untouched. Pass [] to clear all aliases.
Replace the stored screenshot. Pass an assetId already uploaded to this workspace together with its format, exactly as returned for that asset (omitting format for a jpeg asset fails with preview_asset_not_found), { "source": "none" } to decline a preview, or null to make it eligible for automatic capture again. Omit to leave it untouched. The payload replaces the whole record — partial merges are not supported.
Ordered routing rules, evaluated top to bottom — the first rule whose conditions all match wins. Conditions within a rule are ANDed; values within a condition are ORed. Visitors matching no rule get the shortcut's default destination.
The shortcut ID in your system. If set, it can identify the shortcut in future API requests. The ext_ prefix is recommended on query parameters for visual disambiguation, but the server accepts prefixed and bare values. This key is unique across your workspace.
Whether title and description are still kept in sync with the destination automatically, or have been overridden by hand. The screenshot's own sync state is previewSettings.source.
Resolved URL of the light preview image, or null when there is none. Usually the image described by previewSettings. It can also be set while previewSettings is null: a destination on a service Lora has brand art for falls back to a brand card, which is what a destination behind a login wall gets instead of a screenshot. Gate rendering on this field, not on previewSettings.assetId.
Short IDs of ADDITIONAL folders this shortcut appears in, excluding its primary folder (folderId). Empty array when it only lives in its primary folder. Settable at create; curate afterwards via the folder items endpoints. Folders you cannot see are omitted.
Stored destination screenshot for the hover preview. null when none has been resolved yet; source: "none" when the owner declined one. Use the resolved previewUrl / previewDarkUrl to render it — assetId, blobHost and format describe where and how the file is stored. format is jpeg for every preview stored today, and webp or png for older ones; blobHost is not accepted on a write.
Saved QR code design for this shortcut. null when the default design is used. Customization requires a paid plan.
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Lora Developers","description":"Developer documentation for the Lora API — build on top of your team's shortcuts.","colors":{"primary":"#000000","light":"#FDFCFC","dark":"#0A0D0D"},"logo":{"light":"https://mintcdn.com/lora-5b5199e2/ryYQakwxVJhAxQjJ/logo/logo_light.svg?fit=max\u0026auto=format\u0026n=ryYQakwxVJhAxQjJ\u0026q=85\u0026s=a15e432f45994371977fd6392f2d6c77","dark":"https://mintcdn.com/lora-5b5199e2/ryYQakwxVJhAxQjJ/logo/logo_dark.svg?fit=max\u0026auto=format\u0026n=ryYQakwxVJhAxQjJ\u0026q=85\u0026s=fee365ef76905e13dfeb30ffcce0ec3b","href":"https://uselora.dev"},"favicon":"https://mintcdn.com/lora-5b5199e2/ryYQakwxVJhAxQjJ/favicon.svg?fit=max\u0026auto=format\u0026n=ryYQakwxVJhAxQjJ\u0026q=85\u0026s=fcbbf88d22a959468c499026c22b32d4","navbar":{"links":[{"href":"mailto:feedback@uselora.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.uselora.com"}},"footer":{"socials":{"website":"https://www.uselora.com"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lora-5b5199e2","hasAudioNarration":false,"actualSubdomain":"lora-5b5199e2","customDomains":["uselora.dev"],"gitSource":{"type":"github","owner":"jan10","repo":"lora","deployBranch":"main","contentDirectory":"apps/developers","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb0d4979b24b77d1b955ff","collectionId":"11f6dbdf-fa2f-4f53-a3ff-f14ebba2e771","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb0d4979b24b77d1b955ff"},"feedback":{"agentFeedback":true,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adb0d4979b24b77d1b955ff","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"API Reference","count":22},{"language":"default","tag":"Folders","count":7},{"language":"default","tag":"Shortcuts","count":6},{"language":"default","tag":"Tags","count":5},{"language":"default","tag":"Lora API","count":3},{"language":"default","tag":"QR Codes","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/shortcuts/update-shortcut","slug":"/api-reference/shortcuts/update-shortcut","pageMetadata":{"title":"Update shortcut","description":"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. `archived` is not editable here and will get its own endpoint.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/shortcuts/{handle}","href":"/api-reference/shortcuts/update-shortcut","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. \", _jsx(_components.code, {\n children: \"archived\"\n }), \" is not editable here and will get its own endpoint.\"]\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}=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":"Update shortcut","description":"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. `archived` is not editable here and will get its own endpoint.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/shortcuts/{handle}","href":"/api-reference/shortcuts/update-shortcut","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"updateShortcut","tags":["Shortcuts"],"summary":"Update shortcut","description":"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. `archived` is not editable here and will get its own endpoint.","parameters":["858bc947-1db4-4b9b-a0f6-2ca042b9f1d2"],"requestBody":"62c0e76d-47f3-4654-a7da-480325eb1318","responses":{"200":"28ac36c7-1ffd-4d25-b468-8cdab5915393","400":"d1fa6260-a05c-4c65-aae9-cf5795d183e2","401":"2c47089d-4db5-481f-a8fe-2341e5944e40","402":"d37a6ff7-16d2-4c04-a217-fbe3b14790c0","403":"6363b424-bb7e-480c-b967-8fac9b5fffe4","404":"780e0c66-8e60-4d98-9743-6e7c7d8cd60d","409":"2b667e1a-3468-4956-8ca5-c47477c929a7","413":"ed30dec5-8277-4ca8-b9ef-610a01184953","429":"088a988b-e1a5-4334-8a92-993bc2d5d099","500":"cdb1e67b-cc2a-48eb-90f4-da565315e965"},"security":["0341c905-aa64-4083-9761-00f277c9929e"],"method":"patch","type":"path","servers":["e04fe8d2-b9b4-4716-96fe-7218328cbf2a"],"path":"/v1/shortcuts/{handle}","baseUrlOptions":["https://api.uselora.com"],"title":"Update shortcut","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"858bc947-1db4-4b9b-a0f6-2ca042b9f1d2":{"name":"handle","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"The shortcut's slug or `id` (UUID).","uniqueKey":"","typeLabel":"string"},"description":"The shortcut's slug or `id` (UUID)."}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"description":"New unique short path. Omit to keep the existing slug.","examples":["handbook"],"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$","uniqueKey":"slug","typeLabel":"string"},"destination":{"description":"New destination URL. Same scheme rules as create (no javascript:/data:/file:).","examples":["https://example.com/new-target"],"type":"string","minLength":1,"maxLength":32000,"uniqueKey":"destination","typeLabel":"string"},"title":{"oneOf":[{"description":"New title. Pass null to clear.","type":"string","uniqueKey":"title.oneOf.0","typeLabel":"string"},{"description":"New title. Pass null to clear.","type":"null","uniqueKey":"title.oneOf.1","typeLabel":"null"}],"uniqueKey":"title","typeLabel":"string | null"},"description":{"oneOf":[{"description":"New description. Pass null to clear.","type":"string","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"description":"New description. Pass null to clear.","type":"null","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"iconSettings":{"oneOf":[{"description":"Replace the icon recipe. Pass `null` to reset to the default. Omit to leave it untouched. The payload replaces the whole recipe — partial merges are not supported.","type":"object","properties":{"background":{"type":"object","properties":{"color":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","uniqueKey":"iconSettings.oneOf.0.background.color.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^#[0-9A-Fa-f]{6}$","uniqueKey":"iconSettings.oneOf.0.background.color.oneOf.1","typeLabel":"null"}],"uniqueKey":"iconSettings.oneOf.0.background.color","typeLabel":"string | null"},"type":{"type":"string","enum":["color","neutral"],"uniqueKey":"iconSettings.oneOf.0.background.type","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"iconSettings.oneOf.0.background","typeLabel":"object"},"glyph":{"type":"object","properties":{"ref":{"oneOf":[{"type":"string","maxLength":64,"uniqueKey":"iconSettings.oneOf.0.glyph.ref.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":64,"uniqueKey":"iconSettings.oneOf.0.glyph.ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"iconSettings.oneOf.0.glyph.ref","typeLabel":"string | null"},"source":{"type":"string","enum":["favicon","monogram","upload"],"uniqueKey":"iconSettings.oneOf.0.glyph.source","typeLabel":"enum\u003cstring>"},"variant":{"type":"string","enum":["color","mono"],"uniqueKey":"iconSettings.oneOf.0.glyph.variant","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"iconSettings.oneOf.0.glyph","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"iconSettings.oneOf.0","typeLabel":"object"},{"description":"Replace the icon recipe. Pass `null` to reset to the default. Omit to leave it untouched. The payload replaces the whole recipe — partial merges are not supported.","type":"null","properties":{"background":{"type":"object","properties":{"color":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},{"type":"null","pattern":"^#[0-9A-Fa-f]{6}$"}]},"type":{"type":"string","enum":["color","neutral"]}},"additionalProperties":false},"glyph":{"type":"object","properties":{"ref":{"oneOf":[{"type":"string","maxLength":64},{"type":"null","maxLength":64}]},"source":{"type":"string","enum":["favicon","monogram","upload"]},"variant":{"type":"string","enum":["color","mono"]}},"additionalProperties":false}},"additionalProperties":false,"uniqueKey":"iconSettings.oneOf.1","typeLabel":"null"}],"uniqueKey":"iconSettings","typeLabel":"object | null"},"visibility":{"description":"New visibility level. One of `PRIVATE`, `WORKSPACE`, or `UNLISTED`.","type":"string","enum":["PRIVATE","WORKSPACE","UNLISTED"],"uniqueKey":"visibility","typeLabel":"enum\u003cstring>"},"masked":{"type":"boolean","uniqueKey":"masked","typeLabel":"boolean"},"password":{"oneOf":[{"type":"string","description":"The password required to access the destination URL of the shortcut.","format":"password","maxLength":256,"minLength":1,"uniqueKey":"password.oneOf.0","typeLabel":"string\u003cpassword>"},{"type":"string","description":"The password required to access the destination URL of the shortcut.","format":"password","const":"","uniqueKey":"password.oneOf.1","typeLabel":"string\u003cpassword>"}],"uniqueKey":"password","typeLabel":"string\u003cpassword>"},"expiresAt":{"oneOf":[{"description":"The date and time when the shortcut expires.","format":"date-time","type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","uniqueKey":"expiresAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"The date and time when the shortcut expires.","format":"date-time","type":"null","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","uniqueKey":"expiresAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"expiresAt","typeLabel":"string\u003cdate-time> | null"},"dynamicRouting":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"conditions":{"minItems":1,"maxItems":2,"type":"array","items":{"oneOf":[{"type":"object","title":"DynamicRoutingCondition","description":"One test against a visitor attribute. Values inside a condition are ORed.","required":["attribute","operator","values"],"properties":{"attribute":{"type":"string","const":"country","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.attribute","typeLabel":"string"},"operator":{"type":"string","enum":["is","is_not"],"description":"`is` matches when the visitor attribute is one of `values`; `is_not` matches when it is not. A visitor attribute we cannot determine (no geo signal, or a non-phone / unclassifiable user agent) never satisfies `is` and always satisfies `is_not`.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.operator","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Za-z]{2}$","uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"ISO-3166-1 alpha-2 country codes. Matched case-insensitively and stored uppercase.","examples":[["DE","AT","CH"]],"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0","typeLabel":"DynamicRoutingCondition · object"},{"type":"object","title":"DynamicRoutingCondition","description":"One test against a visitor attribute. Values inside a condition are ORed.","required":["attribute","operator","values"],"properties":{"attribute":{"type":"string","const":"platform","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.attribute","typeLabel":"string"},"operator":{"type":"string","enum":["is","is_not"],"description":"`is` matches when the visitor attribute is one of `values`; `is_not` matches when it is not. A visitor attribute we cannot determine (no geo signal, or a non-phone / unclassifiable user agent) never satisfies `is` and always satisfies `is_not`.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["ios","android"],"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Phone platforms. Tablets, desktops and unclassifiable clients are not any of these — they fall through to `destination` unless an `is_not` condition catches them.","examples":[["ios"]],"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.values","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":false,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1","typeLabel":"DynamicRoutingCondition · object"}],"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX]","typeLabel":"DynamicRoutingCondition · object"},"description":"Conditions to satisfy, ANDed together. At most 2 — one per attribute.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions","typeLabel":"DynamicRoutingCondition · object[]"},"destination":{"type":"string","minLength":1,"maxLength":32000,"description":"Where to send visitors matching this rule. Same scheme rules as the shortcut's default `destination`, and dynamic placeholders work here too.","examples":["https://apps.apple.com/de/app/id123456789"],"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].destination","typeLabel":"string"}},"required":["conditions","destination"],"additionalProperties":false,"title":"DynamicRoutingRule","description":"A set of ANDed conditions and the destination they select.","uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX]","typeLabel":"DynamicRoutingRule · object"},"title":"DynamicRouting","description":"Replace the routing rules. Pass `[]` or `null` to remove all rules. Omit to leave them untouched.","maxItems":10,"uniqueKey":"dynamicRouting.oneOf.0","typeLabel":"DynamicRoutingRule · object[]"},{"type":"null","description":"Replace the routing rules. Pass `[]` or `null` to remove all rules. Omit to leave them untouched.","uniqueKey":"dynamicRouting.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamicRouting","typeLabel":"DynamicRoutingRule · object[] | null"},"folderId":{"description":"Move the shortcut to a different folder, by its 8-character ID. The caller must have access to the target folder.","type":"string","pattern":"^[0-9abcdefghjkmnpqrstvwxyz]{8}$","uniqueKey":"folderId","typeLabel":"string"},"tagIds":{"description":"Replace the tag set. Pass the full set you want — existing tags not in this list are removed. Omit to leave tags untouched. Pass `[]` to clear all tags.","examples":[["a1b2c3d4"]],"maxItems":50,"type":"array","items":{"type":"string","pattern":"^[0-9abcdefghjkmnpqrstvwxyz]{8}$","uniqueKey":"tagIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"tagIds","typeLabel":"string[]"},"aliases":{"description":"Replace the alias set. Pass the full set you want — existing aliases not in this list are removed. Omit to leave aliases untouched. Pass `[]` to clear all aliases.","examples":[["urlaub"]],"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$","uniqueKey":"aliases.items.[INDEX]","typeLabel":"string"},"uniqueKey":"aliases","typeLabel":"string[]"},"comments":{"oneOf":[{"type":"string","description":"Comments about the shortcut.","uniqueKey":"comments.oneOf.0","typeLabel":"string"},{"type":"null","description":"Comments about the shortcut.","uniqueKey":"comments.oneOf.1","typeLabel":"null"}],"uniqueKey":"comments","typeLabel":"string | null"},"proxy":{"type":"boolean","uniqueKey":"proxy","typeLabel":"boolean"},"qrSettings":{"oneOf":[{"description":"Saved QR code design. Pass `null` to reset to the default design.","type":"object","properties":{"dotColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","uniqueKey":"qrSettings.oneOf.0.dotColor","typeLabel":"string"},"dotStyle":{"type":"string","enum":["square","dots","rounded"],"uniqueKey":"qrSettings.oneOf.0.dotStyle","typeLabel":"enum\u003cstring>"},"frame":{"type":"string","enum":["none","solid-logo","solid-scan","solid-slug","window-logo","window-scan","window-slug","card-logo","card-scan","card-slug"],"uniqueKey":"qrSettings.oneOf.0.frame","typeLabel":"enum\u003cstring>"},"hideLogo":{"type":"boolean","uniqueKey":"qrSettings.oneOf.0.hideLogo","typeLabel":"boolean"},"markerBorder":{"type":"string","enum":["square","rounded","circle"],"uniqueKey":"qrSettings.oneOf.0.markerBorder","typeLabel":"enum\u003cstring>"},"markerCenter":{"type":"string","enum":["square","dot"],"uniqueKey":"qrSettings.oneOf.0.markerCenter","typeLabel":"enum\u003cstring>"},"markerColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","uniqueKey":"qrSettings.oneOf.0.markerColor","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"qrSettings.oneOf.0","typeLabel":"object"},{"description":"Saved QR code design. Pass `null` to reset to the default design.","type":"null","properties":{"dotColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"dotStyle":{"type":"string","enum":["square","dots","rounded"]},"frame":{"type":"string","enum":["none","solid-logo","solid-scan","solid-slug","window-logo","window-scan","window-slug","card-logo","card-scan","card-slug"]},"hideLogo":{"type":"boolean"},"markerBorder":{"type":"string","enum":["square","rounded","circle"]},"markerCenter":{"type":"string","enum":["square","dot"]},"markerColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"additionalProperties":false,"uniqueKey":"qrSettings.oneOf.1","typeLabel":"null"}],"uniqueKey":"qrSettings","typeLabel":"object | null"},"previewSettings":{"oneOf":[{"description":"Replace the stored screenshot. Pass an `assetId` already uploaded to this workspace together with its `format`, exactly as returned for that asset (omitting `format` for a `jpeg` asset fails with `preview_asset_not_found`), `{ \"source\": \"none\" }` to decline a preview, or `null` to make it eligible for automatic capture again. Omit to leave it untouched. The payload replaces the whole record — partial merges are not supported.","type":"object","properties":{"assetId":{"oneOf":[{"type":"string","maxLength":64,"uniqueKey":"previewSettings.oneOf.0.assetId.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":64,"uniqueKey":"previewSettings.oneOf.0.assetId.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.assetId","typeLabel":"string | null"},"capturedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","uniqueKey":"previewSettings.oneOf.0.capturedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","uniqueKey":"previewSettings.oneOf.0.capturedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.capturedAt","typeLabel":"string\u003cdate-time> | null"},"capturedFor":{"oneOf":[{"type":"string","maxLength":32000,"uniqueKey":"previewSettings.oneOf.0.capturedFor.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":32000,"uniqueKey":"previewSettings.oneOf.0.capturedFor.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.capturedFor","typeLabel":"string | null"},"format":{"oneOf":[{"type":"string","enum":["jpeg","webp","png",null],"uniqueKey":"previewSettings.oneOf.0.format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["jpeg","webp","png",null],"uniqueKey":"previewSettings.oneOf.0.format.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.format","typeLabel":"enum\u003cstring> | null"},"hasDark":{"oneOf":[{"type":"boolean","uniqueKey":"previewSettings.oneOf.0.hasDark.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"previewSettings.oneOf.0.hasDark.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.hasDark","typeLabel":"boolean | null"},"height":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560,"uniqueKey":"previewSettings.oneOf.0.height.oneOf.0","typeLabel":"integer"},{"type":"null","exclusiveMinimum":0,"maximum":2560,"uniqueKey":"previewSettings.oneOf.0.height.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.height","typeLabel":"integer | null"},"source":{"type":"string","enum":["screenshot","opengraph","upload","none"],"uniqueKey":"previewSettings.oneOf.0.source","typeLabel":"enum\u003cstring>"},"width":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560,"uniqueKey":"previewSettings.oneOf.0.width.oneOf.0","typeLabel":"integer"},{"type":"null","exclusiveMinimum":0,"maximum":2560,"uniqueKey":"previewSettings.oneOf.0.width.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings.oneOf.0.width","typeLabel":"integer | null"}},"additionalProperties":false,"uniqueKey":"previewSettings.oneOf.0","typeLabel":"object"},{"description":"Replace the stored screenshot. Pass an `assetId` already uploaded to this workspace together with its `format`, exactly as returned for that asset (omitting `format` for a `jpeg` asset fails with `preview_asset_not_found`), `{ \"source\": \"none\" }` to decline a preview, or `null` to make it eligible for automatic capture again. Omit to leave it untouched. The payload replaces the whole record — partial merges are not supported.","type":"null","properties":{"assetId":{"oneOf":[{"type":"string","maxLength":64},{"type":"null","maxLength":64}]},"capturedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}]},"capturedFor":{"oneOf":[{"type":"string","maxLength":32000},{"type":"null","maxLength":32000}]},"format":{"oneOf":[{"type":"string","enum":["jpeg","webp","png",null]},{"type":"null","enum":["jpeg","webp","png",null]}]},"hasDark":{"oneOf":[{"type":"boolean"},{"type":"null"}]},"height":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560},{"type":"null","exclusiveMinimum":0,"maximum":2560}]},"source":{"type":"string","enum":["screenshot","opengraph","upload","none"]},"width":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560},{"type":"null","exclusiveMinimum":0,"maximum":2560}]}},"additionalProperties":false,"uniqueKey":"previewSettings.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings","typeLabel":"object | null"}},"additionalProperties":false,"title":"UpdateShortcutRequest","description":"Partial shortcut update — all fields optional (PATCH semantics).","uniqueKey":"","typeLabel":"UpdateShortcutRequest · object"},"examples":{"Example":{"title":"Example","value":{"slug":"handbook","destination":"https://example.com/new-target","title":"\u003cstring>","description":"\u003cstring>","iconSettings":{"background":{"color":"\u003cstring>"},"glyph":{"ref":"\u003cstring>"}},"masked":true,"password":"\u003cstring>","expiresAt":"2023-11-07T05:31:56Z","dynamicRouting":[{"conditions":[{"attribute":"country","values":["DE","AT","CH"]}],"destination":"https://apps.apple.com/de/app/id123456789"}],"folderId":"\u003cstring>","tagIds":["a1b2c3d4"],"aliases":["urlaub"],"comments":"\u003cstring>","proxy":true,"qrSettings":{"dotColor":"\u003cstring>","hideLogo":true,"markerColor":"\u003cstring>"},"previewSettings":{"assetId":"\u003cstring>","capturedAt":"2023-11-07T05:31:56Z","capturedFor":"\u003cstring>","hasDark":true,"height":123,"width":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"28ac36c7-1ffd-4d25-b468-8cdab5915393":{"description":"The updated shortcut.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The shortcut's unique ID.","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"slug":{"type":"string","description":"The shortcut slug.","isRequired":true,"uniqueKey":"slug","typeLabel":"string"},"url":{"type":"string","description":"Workspace-scoped shortcut URL. Open it to record a click and redirect to the destination.","examples":["https://app.uselora.com/acme/short/handbook"],"isRequired":true,"uniqueKey":"url","typeLabel":"string"},"destination":{"type":"string","description":"The shortcut's destination URL.","isRequired":true,"uniqueKey":"destination","typeLabel":"string"},"title":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"title.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"title","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"description","typeLabel":"string | null"},"icon":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"icon.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"icon.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"icon","typeLabel":"string | null"},"image":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"image.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"image.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"image","typeLabel":"string | null"},"video":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"video.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"video.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"video","typeLabel":"string | null"},"visibility":{"type":"string","enum":["PRIVATE","WORKSPACE","UNLISTED"],"isRequired":true,"uniqueKey":"visibility","typeLabel":"enum\u003cstring>"},"archived":{"type":"boolean","description":"Whether the shortcut is archived. Defaults to false if not provided.","isRequired":true,"uniqueKey":"archived","typeLabel":"boolean"},"masked":{"type":"boolean","isRequired":true,"uniqueKey":"masked","typeLabel":"boolean"},"passwordProtected":{"type":"boolean","description":"Whether this shortcut requires a password before redirecting. The password hash is never returned.","isRequired":true,"uniqueKey":"passwordProtected","typeLabel":"boolean"},"expiresAt":{"oneOf":[{"type":"string","description":"The date and time when the shortcut expires.","isRequired":true,"uniqueKey":"expiresAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"The date and time when the shortcut expires.","isRequired":true,"uniqueKey":"expiresAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"expiresAt","typeLabel":"string | null"},"dynamicRouting":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"conditions":{"minItems":1,"maxItems":2,"type":"array","items":{"oneOf":[{"type":"object","title":"DynamicRoutingCondition","description":"One test against a visitor attribute. Values inside a condition are ORed.","required":["attribute","operator","values"],"properties":{"attribute":{"type":"string","const":"country","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.attribute","typeLabel":"string"},"operator":{"type":"string","enum":["is","is_not"],"description":"`is` matches when the visitor attribute is one of `values`; `is_not` matches when it is not. A visitor attribute we cannot determine (no geo signal, or a non-phone / unclassifiable user agent) never satisfies `is` and always satisfies `is_not`.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.operator","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Za-z]{2}$","uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"ISO-3166-1 alpha-2 country codes. Matched case-insensitively and stored uppercase.","examples":[["DE","AT","CH"]],"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.0","typeLabel":"DynamicRoutingCondition · object"},{"type":"object","title":"DynamicRoutingCondition","description":"One test against a visitor attribute. Values inside a condition are ORed.","required":["attribute","operator","values"],"properties":{"attribute":{"type":"string","const":"platform","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.attribute","typeLabel":"string"},"operator":{"type":"string","enum":["is","is_not"],"description":"`is` matches when the visitor attribute is one of `values`; `is_not` matches when it is not. A visitor attribute we cannot determine (no geo signal, or a non-phone / unclassifiable user agent) never satisfies `is` and always satisfies `is_not`.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["ios","android"],"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Phone platforms. Tablets, desktops and unclassifiable clients are not any of these — they fall through to `destination` unless an `is_not` condition catches them.","examples":[["ios"]],"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1.values","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":false,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX].oneOf.1","typeLabel":"DynamicRoutingCondition · object"}],"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions.items.[INDEX]","typeLabel":"DynamicRoutingCondition · object"},"description":"Conditions to satisfy, ANDed together. At most 2 — one per attribute.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].conditions","typeLabel":"DynamicRoutingCondition · object[]"},"destination":{"type":"string","minLength":1,"maxLength":32000,"description":"Where to send visitors matching this rule. Same scheme rules as the shortcut's default `destination`, and dynamic placeholders work here too.","examples":["https://apps.apple.com/de/app/id123456789"],"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX].destination","typeLabel":"string"}},"required":["conditions","destination"],"additionalProperties":false,"title":"DynamicRoutingRule","description":"A set of ANDed conditions and the destination they select.","uniqueKey":"dynamicRouting.oneOf.0.items.[INDEX]","typeLabel":"DynamicRoutingRule · object"},"title":"DynamicRouting","description":"Ordered routing rules, evaluated top to bottom — the first rule whose conditions all match wins. Conditions within a rule are ANDed; values within a condition are ORed. Visitors matching no rule get the shortcut's default `destination`.","maxItems":10,"isRequired":true,"uniqueKey":"dynamicRouting.oneOf.0","typeLabel":"DynamicRoutingRule · object[]"},{"type":"null","description":"Ordered routing rules, evaluated top to bottom — the first rule whose conditions all match wins. Conditions within a rule are ANDed; values within a condition are ORed. Visitors matching no rule get the shortcut's default `destination`.","isRequired":true,"uniqueKey":"dynamicRouting.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"dynamicRouting","typeLabel":"DynamicRoutingRule · object[] | null"},"placeholders":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Placeholder name (between curly braces).","isRequired":true,"uniqueKey":"placeholders.items.[INDEX].name","typeLabel":"string"},"default":{"oneOf":[{"description":"Default value substituted when no value is captured at click time.","type":"string","isRequired":true,"uniqueKey":"placeholders.items.[INDEX].default.oneOf.0","typeLabel":"string"},{"description":"Default value substituted when no value is captured at click time.","type":"null","isRequired":true,"uniqueKey":"placeholders.items.[INDEX].default.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"placeholders.items.[INDEX].default","typeLabel":"string | null"}},"required":["name","default"],"additionalProperties":false,"title":"PlaceholderDescriptor","description":"A dynamic placeholder declared in a shortcut's destination URL.","uniqueKey":"placeholders.items.[INDEX]","typeLabel":"PlaceholderDescriptor · object"},"description":"Dynamic placeholders parsed from the destination URL, in template order (e.g. `{query}`). Empty for static destinations.","isRequired":true,"uniqueKey":"placeholders","typeLabel":"PlaceholderDescriptor · object[]"},"folderId":{"type":"string","pattern":"^[0-9abcdefghjkmnpqrstvwxyz]{8}$","description":"The 8-character ID of the folder this shortcut belongs to.","examples":["a1b2c3d4"],"isRequired":true,"uniqueKey":"folderId","typeLabel":"string"},"tagIds":{"default":[],"description":"The unique IDs of the tags assigned to the shortcut.","examples":[["a1b2c3d4"]],"type":"array","items":{"type":"string","pattern":"^[0-9abcdefghjkmnpqrstvwxyz]{8}$","uniqueKey":"tagIds.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"tagIds","typeLabel":"string[]"},"aliases":{"default":[],"description":"Additional handles that resolve to this shortcut in the same namespace as the canonical slug.","examples":[["urlaub","ferien"]],"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$","uniqueKey":"aliases.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"aliases","typeLabel":"string[]"},"externalId":{"oneOf":[{"type":"string","description":"The shortcut ID in your system. If set, it can identify the shortcut in future API requests. The `ext_` prefix is recommended on query parameters for visual disambiguation, but the server accepts prefixed and bare values. This key is unique across your workspace.","isRequired":true,"uniqueKey":"externalId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The shortcut ID in your system. If set, it can identify the shortcut in future API requests. The `ext_` prefix is recommended on query parameters for visual disambiguation, but the server accepts prefixed and bare values. This key is unique across your workspace.","isRequired":true,"uniqueKey":"externalId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"externalId","typeLabel":"string | null"},"tenantId":{"oneOf":[{"type":"string","description":"The ID of the tenant that created the shortcut in your system. If set, it can be used to fetch all shortcuts for a tenant.","isRequired":true,"uniqueKey":"tenantId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The ID of the tenant that created the shortcut in your system. If set, it can be used to fetch all shortcuts for a tenant.","isRequired":true,"uniqueKey":"tenantId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"tenantId","typeLabel":"string | null"},"comments":{"oneOf":[{"type":"string","description":"Comments about the shortcut.","isRequired":true,"uniqueKey":"comments.oneOf.0","typeLabel":"string"},{"type":"null","description":"Comments about the shortcut.","isRequired":true,"uniqueKey":"comments.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"comments","typeLabel":"string | null"},"workspaceId":{"type":"string","description":"ID of the workspace the shortcut belongs to.","isRequired":true,"uniqueKey":"workspaceId","typeLabel":"string"},"userId":{"type":"string","description":"ID of the user who created the shortcut.","isRequired":true,"uniqueKey":"userId","typeLabel":"string"},"createdAt":{"type":"string","description":"ISO 8601 creation timestamp.","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string"},"updatedAt":{"type":"string","description":"ISO 8601 timestamp of the last update.","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string"},"metadataSync":{"type":"object","properties":{"description":{"type":"string","enum":["auto","manual"],"isRequired":true,"uniqueKey":"metadataSync.description","typeLabel":"enum\u003cstring>"},"title":{"type":"string","enum":["auto","manual"],"isRequired":true,"uniqueKey":"metadataSync.title","typeLabel":"enum\u003cstring>"}},"required":["description","title"],"additionalProperties":false,"description":"Whether `title` and `description` are still kept in sync with the destination automatically, or have been overridden by hand. The screenshot's own sync state is `previewSettings.source`.","isRequired":true,"uniqueKey":"metadataSync","typeLabel":"object"},"previewUrl":{"oneOf":[{"description":"Resolved URL of the light preview image, or `null` when there is none. Usually the image described by `previewSettings`. It can also be set while `previewSettings` is `null`: a destination on a service Lora has brand art for falls back to a brand card, which is what a destination behind a login wall gets instead of a screenshot. Gate rendering on this field, not on `previewSettings.assetId`.","type":"string","isRequired":true,"uniqueKey":"previewUrl.oneOf.0","typeLabel":"string"},{"description":"Resolved URL of the light preview image, or `null` when there is none. Usually the image described by `previewSettings`. It can also be set while `previewSettings` is `null`: a destination on a service Lora has brand art for falls back to a brand card, which is what a destination behind a login wall gets instead of a screenshot. Gate rendering on this field, not on `previewSettings.assetId`.","type":"null","isRequired":true,"uniqueKey":"previewUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewUrl","typeLabel":"string | null"},"previewDarkUrl":{"oneOf":[{"description":"Resolved URL of the dark preview image, or `null` when the preview has no dark variant. Always `null` when `previewUrl` is a brand card.","type":"string","isRequired":true,"uniqueKey":"previewDarkUrl.oneOf.0","typeLabel":"string"},{"description":"Resolved URL of the dark preview image, or `null` when the preview has no dark variant. Always `null` when `previewUrl` is a brand card.","type":"null","isRequired":true,"uniqueKey":"previewDarkUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewDarkUrl","typeLabel":"string | null"},"additionalFolderIds":{"default":[],"description":"Short IDs of ADDITIONAL folders this shortcut appears in, excluding its primary folder (`folderId`). Empty array when it only lives in its primary folder. Settable at create; curate afterwards via the folder items endpoints. Folders you cannot see are omitted.","examples":[["a1b2c3d4"]],"type":"array","items":{"type":"string","pattern":"^[0-9abcdefghjkmnpqrstvwxyz]{8}$","uniqueKey":"additionalFolderIds.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"additionalFolderIds","typeLabel":"string[]"},"iconSettings":{"oneOf":[{"description":"Structured icon recipe (glyph + background). `null` when the default monogram-on-neutral design is used.","type":"object","properties":{"background":{"type":"object","properties":{"color":{"oneOf":[{"type":"string","pattern":"^#[0-9A-F]{6}$","isRequired":true,"uniqueKey":"iconSettings.oneOf.0.background.color.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^#[0-9A-F]{6}$","isRequired":true,"uniqueKey":"iconSettings.oneOf.0.background.color.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.background.color","typeLabel":"string | null"},"type":{"type":"string","enum":["color","neutral"],"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.background.type","typeLabel":"enum\u003cstring>"}},"required":["color","type"],"additionalProperties":false,"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.background","typeLabel":"object"},"glyph":{"type":"object","properties":{"ref":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"iconSettings.oneOf.0.glyph.ref.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"iconSettings.oneOf.0.glyph.ref.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.glyph.ref","typeLabel":"string | null"},"source":{"type":"string","enum":["favicon","monogram","upload"],"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.glyph.source","typeLabel":"enum\u003cstring>"},"variant":{"type":"string","enum":["color","mono"],"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.glyph.variant","typeLabel":"enum\u003cstring>"}},"required":["ref","source","variant"],"additionalProperties":false,"isRequired":true,"uniqueKey":"iconSettings.oneOf.0.glyph","typeLabel":"object"}},"required":["background","glyph"],"additionalProperties":false,"uniqueKey":"iconSettings.oneOf.0","typeLabel":"object"},{"description":"Structured icon recipe (glyph + background). `null` when the default monogram-on-neutral design is used.","type":"null","properties":{"background":{"type":"object","properties":{"color":{"oneOf":[{"type":"string","pattern":"^#[0-9A-F]{6}$"},{"type":"null","pattern":"^#[0-9A-F]{6}$"}]},"type":{"type":"string","enum":["color","neutral"]}},"required":["color","type"],"additionalProperties":false},"glyph":{"type":"object","properties":{"ref":{"oneOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string","enum":["favicon","monogram","upload"]},"variant":{"type":"string","enum":["color","mono"]}},"required":["ref","source","variant"],"additionalProperties":false}},"required":["background","glyph"],"additionalProperties":false,"uniqueKey":"iconSettings.oneOf.1","typeLabel":"null"}],"uniqueKey":"iconSettings","typeLabel":"object | null"},"previewSettings":{"oneOf":[{"description":"Stored destination screenshot for the hover preview. `null` when none has been resolved yet; `source: \"none\"` when the owner declined one. Use the resolved `previewUrl` / `previewDarkUrl` to render it — `assetId`, `blobHost` and `format` describe where and how the file is stored. `format` is `jpeg` for every preview stored today, and `webp` or `png` for older ones; `blobHost` is not accepted on a write.","type":"object","properties":{"assetId":{"oneOf":[{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.assetId.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.assetId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.assetId","typeLabel":"string | null"},"blobHost":{"oneOf":[{"type":"string","maxLength":253,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?::\\d{1,5})?$","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.blobHost.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":253,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?::\\d{1,5})?$","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.blobHost.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.blobHost","typeLabel":"string | null"},"capturedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.capturedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.capturedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.capturedAt","typeLabel":"string\u003cdate-time> | null"},"capturedFor":{"oneOf":[{"type":"string","maxLength":32000,"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.capturedFor.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":32000,"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.capturedFor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.capturedFor","typeLabel":"string | null"},"format":{"oneOf":[{"type":"string","enum":["jpeg","webp","png",null],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["jpeg","webp","png",null],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.format.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.format","typeLabel":"enum\u003cstring> | null"},"hasDark":{"type":"boolean","isRequired":true,"uniqueKey":"previewSettings.oneOf.0.hasDark","typeLabel":"boolean"},"height":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560,"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.height.oneOf.0","typeLabel":"integer"},{"type":"null","exclusiveMinimum":0,"maximum":2560,"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.height.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.height","typeLabel":"integer | null"},"source":{"type":"string","enum":["screenshot","opengraph","upload","none"],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.source","typeLabel":"enum\u003cstring>"},"width":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560,"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.width.oneOf.0","typeLabel":"integer"},{"type":"null","exclusiveMinimum":0,"maximum":2560,"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.width.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"previewSettings.oneOf.0.width","typeLabel":"integer | null"}},"required":["assetId","blobHost","capturedAt","capturedFor","format","hasDark","height","source","width"],"additionalProperties":false,"uniqueKey":"previewSettings.oneOf.0","typeLabel":"object"},{"description":"Stored destination screenshot for the hover preview. `null` when none has been resolved yet; `source: \"none\"` when the owner declined one. Use the resolved `previewUrl` / `previewDarkUrl` to render it — `assetId`, `blobHost` and `format` describe where and how the file is stored. `format` is `jpeg` for every preview stored today, and `webp` or `png` for older ones; `blobHost` is not accepted on a write.","type":"null","properties":{"assetId":{"oneOf":[{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},{"type":"null","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}]},"blobHost":{"oneOf":[{"type":"string","maxLength":253,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?::\\d{1,5})?$"},{"type":"null","maxLength":253,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?::\\d{1,5})?$"}]},"capturedAt":{"oneOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}]},"capturedFor":{"oneOf":[{"type":"string","maxLength":32000},{"type":"null","maxLength":32000}]},"format":{"oneOf":[{"type":"string","enum":["jpeg","webp","png",null]},{"type":"null","enum":["jpeg","webp","png",null]}]},"hasDark":{"type":"boolean"},"height":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560},{"type":"null","exclusiveMinimum":0,"maximum":2560}]},"source":{"type":"string","enum":["screenshot","opengraph","upload","none"]},"width":{"oneOf":[{"type":"integer","exclusiveMinimum":0,"maximum":2560},{"type":"null","exclusiveMinimum":0,"maximum":2560}]}},"required":["assetId","blobHost","capturedAt","capturedFor","format","hasDark","height","source","width"],"additionalProperties":false,"uniqueKey":"previewSettings.oneOf.1","typeLabel":"null"}],"uniqueKey":"previewSettings","typeLabel":"object | null"},"qrSettings":{"oneOf":[{"description":"Saved QR code design for this shortcut. `null` when the default design is used. Customization requires a paid plan.","type":"object","properties":{"dotColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","uniqueKey":"qrSettings.oneOf.0.dotColor","typeLabel":"string"},"dotStyle":{"type":"string","enum":["square","dots","rounded"],"uniqueKey":"qrSettings.oneOf.0.dotStyle","typeLabel":"enum\u003cstring>"},"frame":{"type":"string","enum":["none","solid-logo","solid-scan","solid-slug","window-logo","window-scan","window-slug","card-logo","card-scan","card-slug"],"uniqueKey":"qrSettings.oneOf.0.frame","typeLabel":"enum\u003cstring>"},"hideLogo":{"type":"boolean","uniqueKey":"qrSettings.oneOf.0.hideLogo","typeLabel":"boolean"},"markerBorder":{"type":"string","enum":["square","rounded","circle"],"uniqueKey":"qrSettings.oneOf.0.markerBorder","typeLabel":"enum\u003cstring>"},"markerCenter":{"type":"string","enum":["square","dot"],"uniqueKey":"qrSettings.oneOf.0.markerCenter","typeLabel":"enum\u003cstring>"},"markerColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","uniqueKey":"qrSettings.oneOf.0.markerColor","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"qrSettings.oneOf.0","typeLabel":"object"},{"description":"Saved QR code design for this shortcut. `null` when the default design is used. Customization requires a paid plan.","type":"null","properties":{"dotColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"dotStyle":{"type":"string","enum":["square","dots","rounded"]},"frame":{"type":"string","enum":["none","solid-logo","solid-scan","solid-slug","window-logo","window-scan","window-slug","card-logo","card-scan","card-slug"]},"hideLogo":{"type":"boolean"},"markerBorder":{"type":"string","enum":["square","rounded","circle"]},"markerCenter":{"type":"string","enum":["square","dot"]},"markerColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"additionalProperties":false,"uniqueKey":"qrSettings.oneOf.1","typeLabel":"null"}],"uniqueKey":"qrSettings","typeLabel":"object | null"}},"required":["archived","comments","createdAt","description","destination","dynamicRouting","expiresAt","externalId","folderId","icon","id","image","masked","metadataSync","slug","tenantId","title","updatedAt","userId","video","visibility","workspaceId","passwordProtected","previewUrl","previewDarkUrl","url","placeholders","tagIds","additionalFolderIds","aliases"],"additionalProperties":false,"title":"Shortcut","description":"A shortcut.","uniqueKey":"","typeLabel":"Shortcut · object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","slug":"\u003cstring>","url":"https://app.uselora.com/acme/short/handbook","destination":"\u003cstring>","title":"\u003cstring>","description":"\u003cstring>","icon":"\u003cstring>","image":"\u003cstring>","video":"\u003cstring>","visibility":"PRIVATE","archived":true,"masked":true,"passwordProtected":true,"expiresAt":"\u003cstring>","dynamicRouting":[{"conditions":[{"attribute":"country","operator":"is","values":["DE","AT","CH"]}],"destination":"https://apps.apple.com/de/app/id123456789"}],"placeholders":[{"name":"\u003cstring>","default":"\u003cstring>"}],"folderId":"a1b2c3d4","tagIds":["a1b2c3d4"],"aliases":["urlaub","ferien"],"externalId":"\u003cstring>","tenantId":"\u003cstring>","comments":"\u003cstring>","workspaceId":"\u003cstring>","userId":"\u003cstring>","createdAt":"\u003cstring>","updatedAt":"\u003cstring>","metadataSync":{"description":"auto","title":"auto"},"previewUrl":"\u003cstring>","previewDarkUrl":"\u003cstring>","additionalFolderIds":["a1b2c3d4"],"iconSettings":{"background":{"color":"\u003cstring>","type":"color"},"glyph":{"ref":"\u003cstring>","source":"favicon","variant":"color"}},"previewSettings":{"assetId":"\u003cstring>","blobHost":"\u003cstring>","capturedAt":"2023-11-07T05:31:56Z","capturedFor":"\u003cstring>","format":"jpeg","hasDark":true,"height":123,"source":"screenshot","width":123},"qrSettings":{"dotColor":"\u003cstring>","dotStyle":"square","frame":"none","hideLogo":true,"markerBorder":"square","markerCenter":"square","markerColor":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"d1fa6260-a05c-4c65-aae9-cf5795d183e2":{"description":"The request body failed validation, or the new slug is reserved (`reserved_slug`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"fieldErrors":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"fieldErrors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"fieldErrors.additionalProperties","typeLabel":"string[]"},"uniqueKey":"fieldErrors","typeLabel":"object"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","requestId":"\u003cstring>","code":"\u003cstring>","fieldErrors":{},"traceId":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"exampleType":"generated"},"2c47089d-4db5-481f-a8fe-2341e5944e40":{"description":"Missing, malformed, unknown, or workspace-unscoped Bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","requestId":"\u003cstring>","code":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"exampleType":"generated"},"d37a6ff7-16d2-4c04-a217-fbe3b14790c0":{"description":"The workspace plan does not include API access, the requested capability, or enough resource capacity. The body uses `plan_requires_upgrade` or `quota_exceeded`. Upgrade the workspace or change the request; retrying the same request will not succeed.","headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["plan_requires_upgrade","quota_exceeded"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"},"current_plan":{"description":"The workspace plan when the response includes it.","type":"string","uniqueKey":"current_plan","typeLabel":"string"},"required_capability":{"description":"The required plan capability when the response includes it.","type":"string","uniqueKey":"required_capability","typeLabel":"string"}},"required":["error","code","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"plan_requires_upgrade","requestId":"\u003cstring>","traceId":"\u003cstring>","current_plan":"\u003cstring>","required_capability":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"6363b424-bb7e-480c-b967-8fac9b5fffe4":{"description":"The caller is authenticated but not allowed to perform this action. Common codes: `insufficient_scope` (the key lacks the required scope; body sets `required_scope`) and `no_permission` (the caller is no longer a workspace member).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"},"required_scope":{"description":"Set when `code` is `insufficient_scope`. The exact scope name the route required, e.g. `shortcuts.write`.","type":"string","uniqueKey":"required_scope","typeLabel":"string"}},"required":["error","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","requestId":"\u003cstring>","code":"\u003cstring>","traceId":"\u003cstring>","required_scope":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"exampleType":"generated"},"780e0c66-8e60-4d98-9743-6e7c7d8cd60d":{"description":"The shortcut wasn't found in this workspace (`not_found`), or the target `folderId` doesn't exist (`folder_not_found`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","requestId":"\u003cstring>","code":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"exampleType":"generated"},"2b667e1a-3468-4956-8ca5-c47477c929a7":{"description":"Another shortcut in the workspace already uses this slug (`slug_conflict`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","requestId":"\u003cstring>","code":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"exampleType":"generated"},"ed30dec5-8277-4ca8-b9ef-610a01184953":{"description":"The request body exceeded the size limit. The body is rejected before being parsed, so no partial write occurred; retrying with a smaller payload will succeed.","headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","const":"payload_too_large","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","code","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"payload_too_large","requestId":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"088a988b-e1a5-4334-8a92-993bc2d5d099":{"description":"Rate limit exceeded. Wait `Retry-After` seconds before retrying.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until the rate-limit window resets."},"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","requestId":"\u003cstring>","code":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"cdb1e67b-cc2a-48eb-90f4-da565315e965":{"description":"An unexpected failure on the server. The body is `{ error: \u003cmessage>, code: \"internal_error\", requestId: \u003cid> }`, plus `traceId` when available. Retry idempotent operations with exponential backoff. A write may already have applied; reconcile its state before retrying.","headers":{"X-Lora-Request-Id":{"description":"Request correlation identifier. Matches the `requestId` field in the JSON error body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","const":"internal_error","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Correlation identifier for support/debugging. Equals the `X-Lora-Request-Id` response header.","isRequired":true,"uniqueKey":"requestId","typeLabel":"string"},"traceId":{"description":"Trace identifier when available for this request. 32-character lowercase hex string.","type":"string","pattern":"^[0-9a-f]{32}$","uniqueKey":"traceId","typeLabel":"string"}},"required":["error","code","requestId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"internal_error","requestId":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"0341c905-aa64-4083-9761-00f277c9929e":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Workspace API key (`lora_sk_…`) sent as `Authorization: Bearer \u003capi_key>`. Each scoped operation names the scope it requires in its `security` requirement, for example `shortcuts.write`; a key without it receives `403` with `code: insufficient_scope`. `GET /v1/qr` also accepts anonymous requests and requires no scope.","scopes":["shortcuts.write"],"schemeName":"bearerAuth"}}},"servers":{"e04fe8d2-b9b4-4716-96fe-7218328cbf2a":{"url":"https://api.uselora.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Workspace API key (`lora_sk_…`) sent as `Authorization: Bearer \u003capi_key>`. Each scoped operation names the scope it requires in its `security` requirement, for example `shortcuts.write`; a key without it receives `403` with `code: insufficient_scope`. `GET /v1/qr` also accepts anonymous requests and requires no scope.","scopes":["shortcuts.write"],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Workspace API key (`lora_sk_…`) sent as `Authorization: Bearer \u003capi_key>`. Each scoped operation names the scope it requires in its `security` requirement, for example `shortcuts.write`; a key without it receives `403` with `code: insufficient_scope`. `GET /v1/qr` also accepts anonymous requests and requires no scope.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"lora-5b5199e2","siteName":"Lora Developers","title":"Update shortcut - Lora Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T21:37:13.127Z","originalFileLocation":"api-reference/shortcuts/update-shortcut.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=\"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Lora Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_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/lora-5b5199e2/t921vPvkjwOzqOqG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update shortcut - Lora Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Lora Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://uselora.dev/api-reference/shortcuts/update-shortcut\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lora-5b5199e2.mintlify.app/_mintlify/api/og/v2?division=Shortcuts\u0026amp;title=Update+shortcut\u0026amp;description=All+fields+are+optional.+Omitted+fields+stay+as-is.+Renaming+the+slug+runs+the+same+reserved-word+and+uniqueness+checks+as+create.+%60archived%60+is+not+editable+he\u0026amp;theme=8d92c626e8db39f43037bfd2\u0026amp;signature=b73297a533aa68b1e15052d0518264d23453ff05b6b02d1084ec938e15be71e5\">\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=\"Update shortcut - Lora Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lora-5b5199e2.mintlify.app/_mintlify/api/og/v2?division=Shortcuts\u0026amp;title=Update+shortcut\u0026amp;description=All+fields+are+optional.+Omitted+fields+stay+as-is.+Renaming+the+slug+runs+the+same+reserved-word+and+uniqueness+checks+as+create.+%60archived%60+is+not+editable+he\u0026amp;theme=8d92c626e8db39f43037bfd2\u0026amp;signature=b73297a533aa68b1e15052d0518264d23453ff05b6b02d1084ec938e15be71e5\">\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/lora-5b5199e2/t921vPvkjwOzqOqG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Lora Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://uselora.dev/api-reference/shortcuts/update-shortcut\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/shortcuts/update-shortcut.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://uselora.dev/#organization\",\"name\":\"Lora Developers\",\"url\":\"https://uselora.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lora-5b5199e2/ryYQakwxVJhAxQjJ/logo/logo_light.svg?fit=max\u0026auto=format\u0026n=ryYQakwxVJhAxQjJ\u0026q=85\u0026s=a15e432f45994371977fd6392f2d6c77\"}},{\"@type\":\"WebSite\",\"@id\":\"https://uselora.dev#website\",\"name\":\"Lora Developers\",\"url\":\"https://uselora.dev\",\"publisher\":{\"@id\":\"https://uselora.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut#webpage\",\"url\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut\",\"name\":\"Update shortcut\",\"description\":\"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.\",\"dateModified\":\"2026-10-14T21:37:13.127Z\",\"isPartOf\":{\"@id\":\"https://uselora.dev#website\"},\"breadcrumb\":{\"@id\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Shortcuts\",\"item\":\"https://uselora.dev/api-reference/shortcuts/list-shortcuts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update shortcut\",\"item\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut#apireference\",\"headline\":\"Update shortcut\",\"name\":\"Update shortcut\",\"description\":\"All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.\",\"url\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut\",\"mainEntityOfPage\":{\"@id\":\"https://uselora.dev/api-reference/shortcuts/update-shortcut#webpage\"},\"dateModified\":\"2026-10-14T21:37:13.127Z\",\"publisher\":{\"@id\":\"https://uselora.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://uselora.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Lora Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Lora Developers","nav":{"global":null,"tabs":[{"tab":"API Reference","groups":[{"group":"Lora API","pages":[{"title":"Lora API — Getting started","sidebarTitle":"Getting started","href":"/essentials/getting-started"},{"title":"Lora API — Versioning \u0026 deprecation","sidebarTitle":"Versioning \u0026 deprecation","href":"/essentials/versioning"},{"title":"Lora API — Rate limits","sidebarTitle":"Rate limits","href":"/essentials/rate-limits"}]},{"group":"Shortcuts","pages":[{"title":"List shortcuts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/shortcuts","href":"/api-reference/shortcuts/list-shortcuts"},{"title":"Create shortcut","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/shortcuts","href":"/api-reference/shortcuts/create-shortcut"},{"title":"Retrieve shortcut","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/shortcuts/{handle}","href":"/api-reference/shortcuts/retrieve-shortcut"},{"title":"Upsert shortcut","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/shortcuts/{handle}","href":"/api-reference/shortcuts/upsert-shortcut"},{"title":"Delete shortcut","description":"Deletes a shortcut by handle. The handle is either the shortcut's `slug` or its `id` (UUID). The slug becomes immediately reusable for a new shortcut. Idempotent — re-deleting an already-deleted shortcut returns `not_found`.","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/shortcuts/{handle}","href":"/api-reference/shortcuts/delete-shortcut"},{"title":"Update shortcut","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/shortcuts/{handle}","href":"/api-reference/shortcuts/update-shortcut"}]},{"group":"Tags","pages":[{"title":"List tags","description":"Returns tags in the workspace, ordered newest-first, paginated by an opaque cursor. Deleted tags are excluded.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tags","href":"/api-reference/tags/list-tags"},{"title":"Create tag","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tags","href":"/api-reference/tags/create-tag"},{"title":"Retrieve tag","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tags/{id}","href":"/api-reference/tags/retrieve-tag"},{"title":"Delete tag","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/tags/{id}","href":"/api-reference/tags/delete-tag"},{"title":"Update tag","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/tags/{id}","href":"/api-reference/tags/update-tag"}]},{"group":"Folders","pages":[{"title":"List folders","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/folders","href":"/api-reference/folders/list-folders"},{"title":"Create folder","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/folders","href":"/api-reference/folders/create-folder"},{"title":"Retrieve folder","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/folders/{id}","href":"/api-reference/folders/retrieve-folder"},{"title":"Delete folder","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/folders/{id}","href":"/api-reference/folders/delete-folder"},{"title":"Update folder","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/folders/{id}","href":"/api-reference/folders/update-folder"},{"title":"Add an item to a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/folders/{id}/items","href":"/api-reference/folders/add-an-item-to-a-folder"},{"title":"Remove an item from a folder","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/folders/{id}/items/{itemType}/{itemId}","href":"/api-reference/folders/remove-an-item-from-a-folder"}]},{"group":"QR Codes","pages":[{"title":"Retrieve QR code","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/qr","href":"/api-reference/qr-codes/retrieve-qr-code"}]}]}]},"title":"Update shortcut - Lora Developers","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-BRm_l__d.js","utils-f1l1Oc-G.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BlhqDhJO.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DHCB7rsC.js","snippetPresets-CYXLx6Hv.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-B78P2dEq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C4YLPVAh.js","shallow-vlLnTDkQ.js","getApiPlaygroundDisplay-D_98hhvf.js","CodeSnippet-DtnZHGqq.js","CodeSnippets-CLFb8KJt.js","Page-kQh739Uz.js","getPastedJson-Cq-zlbnU.js","icon-sN3t983t.js","MethodPill-P_YQ2s09.js","DuplicateIcon-BVzyNsGJ.js","createIcon-B3jqgqC6.js","DynamicMarkdown-Crwq6WG_.js","SectionHeading-C7pGS2Bb.js","axios-vUo_bRtp.js","Markdown-BuPH8yuW.js","clsx-CCOYKgaU.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BnkC_6oA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BM4S31-f.js"]}