{ "error": "URL belongs to a different organization"}
This endpoint converts a legacy storage.googleapis.com attachment URL to the new Periskope media URL format (https://api.periskope.app/app/media/...).You can also pass an existing Periskope media URL to refresh its access token — useful when a private link has expired and you need a fresh one.
The media file must belong to the organization of the API key used. URLs from other organizations or non-Periskope buckets will return an error.
Validity of the returned link in seconds. Only valid for private links — returns an error if passed for a public link. Clamped between 60 (1 minute) and 604800 (7 days). Defaults to your organization’s configured link expiry (24 hours unless changed).
{ "error": "URL belongs to a different organization"}
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Periskope Docs","colors":{"primary":"#15803D","light":"#15803D"},"logo":{"light":"https://mintcdn.com/bharatkumarramesh/Sq5VlnE2OgDOCH8s/logo/periskope-logo-full.svg?fit=max\u0026auto=format\u0026n=Sq5VlnE2OgDOCH8s\u0026q=85\u0026s=cace2e822ea7c0cd2a98b9d946baa593","dark":"https://mintcdn.com/bharatkumarramesh/Sq5VlnE2OgDOCH8s/logo/periskope-logo-full.svg?fit=max\u0026auto=format\u0026n=Sq5VlnE2OgDOCH8s\u0026q=85\u0026s=cace2e822ea7c0cd2a98b9d946baa593"},"favicon":"https://mintcdn.com/bharatkumarramesh/4Au0rGi6EzWXLRIt/logo/periskope-logo.svg?fit=max\u0026auto=format\u0026n=4Au0rGi6EzWXLRIt\u0026q=85\u0026s=275c52e578008a630d9a4c6e150100a0","api":{"playground":{"display":"none"}},"appearance":{"strict":true},"navbar":{"links":[{"href":"https://www.postman.com/periskope/workspace/periskope-platform-api","label":"Postman API collection"},{"href":"https://what.sapp.link/periskope","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://console.periskope.app"}},"footer":{"socials":{"twitter":"https://twitter.com/periskope_app","linkedin":"https://www.linkedin.com/company/periskope-app","youtube":"https://www.youtube.com/@PeriskopeApp"}},"integrations":{"gtm":{"tagId":"GTM-N9SPZLGR"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bharatkumarramesh","hasAudioNarration":false,"actualSubdomain":"bharatkumarramesh","customDomains":["docs.periskope.app"],"gitSource":{"type":"github","owner":"periskope-org","repo":"docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ace2b08a71bd07e07006d57","collectionId":"48f31024-df92-485a-8d57-54cf320a1a90","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ace2b08a71bd07e07006d57"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ace2b08a71bd07e07006d57","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"APIs \u0026 Webhooks","count":133},{"language":"default","tag":"Documentation","count":68},{"language":"default","tag":"Webhooks","count":21},{"language":"default","tag":"Message APIs","count":14},{"language":"default","tag":"API","count":13},{"language":"default","tag":"Chat APIs","count":13},{"language":"default","tag":"AI Agent","count":11},{"language":"default","tag":"Manage WhatsApp Groups, 1:1 Chats \u0026 Communities","count":11},{"language":"default","tag":"Group Settings APIs","count":9},{"language":"default","tag":"Objects","count":9}]},"assistantConfig":{},"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":[{"filePath":"style.css","content":".image-container{max-width:50%;margin:0 auto}"}],"page":{"pagePath":"api-reference/media/migrate-url","slug":"/api-reference/media/migrate-url","pageMetadata":{"title":"Migrate Media URL","api":"POST https://api.periskope.app/v1/media/migrate-url","description":"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format","href":"/api-reference/media/migrate-url"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,ParamField,ResponseField}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This endpoint converts a legacy `,_jsx(_components.code,{children:`storage.googleapis.com`}),` attachment URL to the new Periskope media URL format (`,_jsx(_components.code,{children:`https://api.periskope.app/app/media/...`}),`).`]}),`\n`,_jsx(_components.p,{children:`You can also pass an existing Periskope media URL to refresh its access token — useful when a private link has expired and you need a fresh one.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`The media file must belong to the organization of the API key used. URLs from other organizations or non-Periskope buckets will return an error.`})}),`\n`,_jsx(Heading,{level:`3`,id:`headers`,children:`Headers`}),`\n`,_jsx(ParamField,{header:`Authorization`,type:`string`,required:true,id:`param-authorization`,children:_jsxs(_components.p,{children:[`Bearer token with your API key e.g. `,_jsx(_components.code,{children:`Bearer \u003capi_key>`})]})}),`\n`,_jsx(Heading,{level:`3`,id:`body`,children:`Body`}),`\n`,_jsx(ParamField,{body:`url`,type:`string`,required:true,id:`param-url`,children:_jsxs(_components.p,{children:[`The media URL to migrate. Either a legacy `,_jsx(_components.code,{children:`storage.googleapis.com`}),` attachment URL or an existing Periskope media URL.`]})}),`\n`,_jsxs(ParamField,{body:`access`,type:`string`,id:`param-access`,children:[_jsxs(_components.p,{children:[`Access mode for the returned URL. One of `,_jsx(_components.code,{children:`private`}),` or `,_jsx(_components.code,{children:`public`}),`.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`private`}),` — returns a tokenized link that expires`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`public`}),` — returns a bare link without a token`]}),`\n`]}),_jsxs(_components.p,{children:[`If omitted, follows your organization’s `,_jsx(_components.a,{href:`/features/media-privacy`,children:`Media Privacy`}),` setting.`]})]}),`\n`,_jsx(ParamField,{body:`expires_in_seconds`,type:`number`,id:`param-expires-in-seconds`,children:_jsxs(_components.p,{children:[`Validity of the returned link in seconds. Only valid for private links — returns an error if passed for a public link. Clamped between `,_jsx(_components.code,{children:`60`}),` (1 minute) and `,_jsx(_components.code,{children:`604800`}),` (7 days). Defaults to your organization’s configured link expiry (24 hours unless changed).`]})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`url`,type:`string`,id:`param-url-1`,children:_jsxs(_components.p,{children:[`The migrated Periskope media URL. Includes an access token (`,_jsx(_components.code,{children:`?jwt=...`}),`) when access is private.`]})}),`\n`,_jsx(ResponseField,{name:`access`,type:`string`,id:`param-access-1`,children:_jsxs(_components.p,{children:[`The access mode applied to the returned URL — `,_jsx(_components.code,{children:`private`}),` or `,_jsx(_components.code,{children:`public`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`expires_in_seconds`,type:`number`,id:`param-expires-in-seconds-1`,children:_jsx(_components.p,{children:`Validity of the returned link in seconds. Only present for private links.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Migrate Media URL","api":"POST https://api.periskope.app/v1/media/migrate-url","description":"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format","href":"/api-reference/media/migrate-url"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,ParamField,RequestExample,ResponseExample,ResponseField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This endpoint converts a legacy `,_jsx(_components.code,{children:`storage.googleapis.com`}),` attachment URL to the new Periskope media URL format (`,_jsx(_components.code,{children:`https://api.periskope.app/app/media/...`}),`).`]}),`\n`,_jsx(_components.p,{children:`You can also pass an existing Periskope media URL to refresh its access token — useful when a private link has expired and you need a fresh one.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`The media file must belong to the organization of the API key used. URLs from other organizations or non-Periskope buckets will return an error.`})}),`\n`,_jsx(Heading,{level:`3`,id:`headers`,children:`Headers`}),`\n`,_jsx(ParamField,{header:`Authorization`,type:`string`,required:true,id:`param-authorization`,children:_jsxs(_components.p,{children:[`Bearer token with your API key e.g. `,_jsx(_components.code,{children:`Bearer \u003capi_key>`})]})}),`\n`,_jsx(Heading,{level:`3`,id:`body`,children:`Body`}),`\n`,_jsx(ParamField,{body:`url`,type:`string`,required:true,id:`param-url`,children:_jsxs(_components.p,{children:[`The media URL to migrate. Either a legacy `,_jsx(_components.code,{children:`storage.googleapis.com`}),` attachment URL or an existing Periskope media URL.`]})}),`\n`,_jsxs(ParamField,{body:`access`,type:`string`,id:`param-access`,children:[_jsxs(_components.p,{children:[`Access mode for the returned URL. One of `,_jsx(_components.code,{children:`private`}),` or `,_jsx(_components.code,{children:`public`}),`.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`private`}),` — returns a tokenized link that expires`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`public`}),` — returns a bare link without a token`]}),`\n`]}),_jsxs(_components.p,{children:[`If omitted, follows your organization’s `,_jsx(_components.a,{href:`/features/media-privacy`,children:`Media Privacy`}),` setting.`]})]}),`\n`,_jsx(ParamField,{body:`expires_in_seconds`,type:`number`,id:`param-expires-in-seconds`,children:_jsxs(_components.p,{children:[`Validity of the returned link in seconds. Only valid for private links — returns an error if passed for a public link. Clamped between `,_jsx(_components.code,{children:`60`}),` (1 minute) and `,_jsx(_components.code,{children:`604800`}),` (7 days). Defaults to your organization’s configured link expiry (24 hours unless changed).`]})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`url`,type:`string`,id:`param-url-1`,children:_jsxs(_components.p,{children:[`The migrated Periskope media URL. Includes an access token (`,_jsx(_components.code,{children:`?jwt=...`}),`) when access is private.`]})}),`\n`,_jsx(ResponseField,{name:`access`,type:`string`,id:`param-access-1`,children:_jsxs(_components.p,{children:[`The access mode applied to the returned URL — `,_jsx(_components.code,{children:`private`}),` or `,_jsx(_components.code,{children:`public`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`expires_in_seconds`,type:`number`,id:`param-expires-in-seconds-1`,children:_jsx(_components.p,{children:`Validity of the returned link in seconds. Only present for private links.`})}),`\n`,_jsx(RequestExample,{children:_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.periskope.app/v1/media/migrate-url`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Authorization: Bearer \u003capi_key>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"url\": \"https://storage.googleapis.com/periskope-attachments/2997dd64-89bf-48d3-9a22-b314fca017e5/919876543210/msg_ABCDEF123/file.jpg\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"access\": \"private\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"expires_in_seconds\": 86400`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})}),`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`200 OK`,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.periskope.app/app/media/periskope-attachments/2997dd64-89bf-48d3-9a22-b314fca017e5%2F919876543210%2Fmsg_ABCDEF123%2Ffile.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"access\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"private\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expires_in_seconds\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`86400`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`400 Error`,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"URL belongs to a different organization\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Migrate Media URL","api":"POST https://api.periskope.app/v1/media/migrate-url","description":"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format","href":"/api-reference/media/migrate-url"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Headers","slug":"headers","depth":3,"children":[]},{"title":"Body","slug":"body","depth":3,"children":[]},{"title":"Response","slug":"response","depth":3,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"9\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --request\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> POST\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --url\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.periskope.app/v1/media/migrate-url\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --header\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'Authorization: Bearer \u0026#x3C;api_key>'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --header\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'Content-Type: application/json'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"url\": \"https://storage.googleapis.com/periskope-attachments/2997dd64-89bf-48d3-9a22-b314fca017e5/919876543210/msg_ABCDEF123/file.jpg\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"access\": \"private\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"expires_in_seconds\": 86400\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> }'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"200 OK","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"5\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://api.periskope.app/app/media/periskope-attachments/2997dd64-89bf-48d3-9a22-b314fca017e5%2F919876543210%2Fmsg_ABCDEF123%2Ffile.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"access\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"private\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"expires_in_seconds\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">86400\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"400 Error","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"3\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"URL belongs to a different organization\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Migrate Media URL","path":"/v1/media/migrate-url","servers":[{"url":"https://api.periskope.app"}],"method":"post","request":{"security":[],"parameters":{"query":{},"header":{"Authorization":{"schema":[{"type":"string","description":"Bearer token with your API key e.g. `Bearer \u003capi_key>`","required":true}]}},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"url":[{"type":"string","description":"The media URL to migrate. Either a legacy `storage.googleapis.com` attachment URL or an existing Periskope media URL.","required":true}],"access":[{"type":"string","description":"Access mode for the returned URL. One of `private` or `public` . `private` — returns a tokenized link that expires `public` — returns a bare link without a token If omitted, follows your organization’s Media Privacy setting."}],"expires_in_seconds":[{"type":"number","description":"Validity of the returned link in seconds. Only valid for private links — returns an error if passed for a public link. Clamped between `60` (1 minute) and `604800` (7 days). Defaults to your organization’s configured link expiry (24 hours unless changed)."}]}}],"examples":{"example":{"value":{"url":"\u003cstring>","access":"\u003cstring>","expires_in_seconds":123}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"url":[{"type":"string","description":"The migrated Periskope media URL. Includes an access token ( `?jwt=...` ) when access is private."}],"access":[{"type":"string","description":"The access mode applied to the returned URL — `private` or `public` ."}],"expires_in_seconds":[{"type":"number","description":"Validity of the returned link in seconds. Only present for private links."}]}}],"examples":{"example":{"value":{"url":"\u003cstring>","access":"\u003cstring>","expires_in_seconds":123}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"bharatkumarramesh","siteName":"Periskope Docs","title":"Migrate Media URL - Periskope Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-04T15:45:22.897Z","originalFileLocation":"api-reference/media/migrate-url.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=\"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format\">\u003cmeta data-mint-head name=\"application-name\" content=\"Periskope Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_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/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Migrate Media URL - Periskope Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Periskope Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.periskope.app/api-reference/media/migrate-url\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bharatkumarramesh.mintlify.app/_mintlify/api/og/v2?division=Media+APIs\u0026amp;title=Migrate+Media+URL\u0026amp;description=Convert+a+legacy+Google+Cloud+Storage+media+URL+to+the+new+Periskope+media+URL+format\u0026amp;theme=42ac27e6aa5a1e2c22bc4538\u0026amp;signature=2e1197adb6be30e3ca4a7034496ec647ad62b66d169a34dda71ba4ad77269172\">\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=\"Migrate Media URL - Periskope Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bharatkumarramesh.mintlify.app/_mintlify/api/og/v2?division=Media+APIs\u0026amp;title=Migrate+Media+URL\u0026amp;description=Convert+a+legacy+Google+Cloud+Storage+media+URL+to+the+new+Periskope+media+URL+format\u0026amp;theme=42ac27e6aa5a1e2c22bc4538\u0026amp;signature=2e1197adb6be30e3ca4a7034496ec647ad62b66d169a34dda71ba4ad77269172\">\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/bharatkumarramesh/xEFzGZM_csru_Nms/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Periskope Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#15803D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.periskope.app/api-reference/media/migrate-url\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/media/migrate-url.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.periskope.app/#organization\",\"name\":\"Periskope Docs\",\"url\":\"https://docs.periskope.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bharatkumarramesh/Sq5VlnE2OgDOCH8s/logo/periskope-logo-full.svg?fit=max\u0026auto=format\u0026n=Sq5VlnE2OgDOCH8s\u0026q=85\u0026s=cace2e822ea7c0cd2a98b9d946baa593\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.periskope.app#website\",\"name\":\"Periskope Docs\",\"url\":\"https://docs.periskope.app\",\"publisher\":{\"@id\":\"https://docs.periskope.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.periskope.app/api-reference/media/migrate-url#webpage\",\"url\":\"https://docs.periskope.app/api-reference/media/migrate-url\",\"name\":\"Migrate Media URL\",\"description\":\"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format\",\"dateModified\":\"2026-08-04T15:45:22.897Z\",\"isPartOf\":{\"@id\":\"https://docs.periskope.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.periskope.app/api-reference/media/migrate-url#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.periskope.app/api-reference/media/migrate-url#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Periskope Docs\",\"item\":\"https://docs.periskope.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrate Media URL\",\"item\":\"https://docs.periskope.app/api-reference/media/migrate-url\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.periskope.app/api-reference/media/migrate-url#apireference\",\"headline\":\"Migrate Media URL\",\"name\":\"Migrate Media URL\",\"description\":\"Convert a legacy Google Cloud Storage media URL to the new Periskope media URL format\",\"url\":\"https://docs.periskope.app/api-reference/media/migrate-url\",\"mainEntityOfPage\":{\"@id\":\"https://docs.periskope.app/api-reference/media/migrate-url#webpage\"},\"dateModified\":\"2026-08-04T15:45:22.897Z\",\"publisher\":{\"@id\":\"https://docs.periskope.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.periskope.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Periskope Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Periskope Docs","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/get-started/introduction"}]},{"anchor":"APIs \u0026 Webhooks","icon":"webhook","groups":[{"group":"API","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authorization","href":"/api-reference/authorization"},{"title":"SDK","href":"/api-reference/sdk"},{"group":"Objects","pages":[{"title":"The Chat Object","href":"/api-reference/objects/the-chat-object"},{"title":"The Chat Notification Object","href":"/api-reference/objects/the-chat-notification-object"},{"title":"The Reaction Object","href":"/api-reference/objects/the-reaction-object"},{"title":"The Message Object","href":"/api-reference/objects/the-message-object"},{"title":"The Contact Object","href":"/api-reference/objects/the-contact-object"},{"title":"The Ticket Info Object","href":"/api-reference/objects/the-ticket-info-object"},{"title":"The Task Object","href":"/api-reference/objects/the-task-object"},{"title":"The Phone Object","href":"/api-reference/objects/the-phone-object"},{"title":"The Note Object","href":"/api-reference/objects/the-note-object"}]},{"title":"WhatsApp Message Ack Status","href":"/api-reference/delivery-status"}]},{"group":"Chat APIs","icon":"comments","pages":[{"title":"Get Chat By ID","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}","href":"/api-reference/chat/get-chat-by-id"},{"title":"Get Messages in a Chat","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/messages","href":"/api-reference/chat/get-messages-in-chat"},{"title":"Get Private Notes in a Chat","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/notes","href":"/api-reference/chat/get-private-notes-in-chat"},{"title":"Get Notifications in a Chat","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/notifications","href":"/api-reference/chat/get-notifications-in-chat"},{"title":"List All Chats","openapi":"api-reference/openapi-generated.json GET /v1/chats","href":"/api-reference/chat/list-all-chats"},{"title":"List All Messages","openapi":"api-reference/openapi-generated.json GET /v1/chats/messages","href":"/api-reference/chat/list-all-messages"},{"title":"List All Notifications","openapi":"api-reference/openapi-generated.json GET /v1/chats/notifications","href":"/api-reference/chat/list-all-notifications"},{"title":"Update Chat Labels","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/labels","href":"/api-reference/chat/update-chat-labels"},{"title":"Update Chat","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/{chat_id}","href":"/api-reference/chat/update-chat"},{"title":"Mark chat as read","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/read","href":"/api-reference/chat/mark-read"},{"title":"Update Chat Access","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/access","href":"/api-reference/chat/override-chat-access"},{"title":"Get Chat Audit Logs","openapi":"api-reference/openapi-generated.json GET /v1/chats/{chat_id}/audit-logs","href":"/api-reference/chat/get-chat-audit-logs"},{"title":"Update Chat AI Settings","openapi":"api-reference/openapi-generated.json PATCH /v1/chats/{chat_id}/ai","href":"/api-reference/chat/update-chat-ai-settings"}]},{"group":"Group Settings APIs","pages":[{"title":"Create Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/create","href":"/api-reference/chat/create-group"},{"title":"Generate a new invite link for a chat","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/invite","href":"/api-reference/chat/refresh-invite"},{"title":"Add Participant to Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/add","href":"/api-reference/chat/add-participant"},{"title":"Remove Participant from Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/remove","href":"/api-reference/chat/remove-participant"},{"title":"Promote Participant to Admin","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/promote","href":"/api-reference/chat/promote-participant-to-admin"},{"title":"Demote Participant to Member","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/demote","href":"/api-reference/chat/demote-participant-to-member"},{"title":"Update Group Settings","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/settings","href":"/api-reference/chat/update-group-settings"},{"title":"Accept Group Invite","openapi":"api-reference/openapi-generated.json POST /v1/chats/accept-invite","href":"/api-reference/chat/accept-group-invite"},{"title":"Leave Group","openapi":"api-reference/openapi-generated.json POST /v1/chats/{chat_id}/leave","href":"/api-reference/chat/leave-group"}]},{"group":"Message APIs","icon":"comment","pages":[{"title":"Send Message","openapi":"api-reference/openapi-generated.json POST /v1/message/send","href":"/api-reference/message/send-message"},{"title":"Send Sync Message","openapi":"api-reference/openapi-generated.json POST /v1/message/send-sync","href":"/api-reference/message/send-message-sync"},{"title":"Broadcast Message","openapi":"api-reference/openapi-generated.json POST /v1/message/broadcast","href":"/api-reference/message/broadcast-message"},{"title":"Delete a Broadcast","openapi":"api-reference/openapi-generated.json DELETE /v1/message/broadcast/{broadcast_id}","href":"/api-reference/message/delete-broadcast"},{"title":"Delete Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/delete","href":"/api-reference/message/delete-message"},{"title":"Edit Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/edit","href":"/api-reference/message/edit-message"},{"title":"Forward Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/forward","href":"/api-reference/message/forward-message"},{"title":"Get Message","openapi":"api-reference/openapi-generated.json GET /v1/message/{message_id}","href":"/api-reference/message/get-message"},{"title":"React to Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/react","href":"/api-reference/message/react-to-message"},{"title":"Pin Message","openapi":"api-reference/openapi-generated.json POST /v1/message/{message_id}/pin","href":"/api-reference/message/pin-message"},{"title":"Get Message Status","openapi":"api-reference/openapi-generated.json GET /v1/message/{unique_id}/status","href":"/api-reference/message/message-status"},{"title":"List All Message Queues","openapi":"api-reference/openapi-generated.json POST /v1/message/queues","href":"/api-reference/message/list-queue-jobs"},{"title":"Get Status of Message Queues","openapi":"api-reference/openapi-generated.json GET /v1/message/queues/health","href":"/api-reference/message/queue-health"},{"title":"Purge Message Queues","openapi":"api-reference/openapi-generated.json POST /v1/message/queues/purge","href":"/api-reference/message/purge-queue-jobs"}]},{"group":"Scheduled Message APIs","pages":[{"title":"List Scheduled Messages","openapi":"api-reference/openapi-generated.json GET /v1/message/scheduled","href":"/api-reference/scheduled-messages/list-scheduled-messages"},{"title":"Schedule a Message","openapi":"api-reference/openapi-generated.json POST /v1/message/scheduled","href":"/api-reference/scheduled-messages/schedule-message"},{"title":"Get Scheduled Message","openapi":"api-reference/openapi-generated.json GET /v1/message/scheduled/{scheduled_id}","href":"/api-reference/scheduled-messages/get-scheduled-message"},{"title":"Update Scheduled Message","openapi":"api-reference/openapi-generated.json PATCH /v1/message/scheduled/{scheduled_id}","href":"/api-reference/scheduled-messages/update-scheduled-message"},{"title":"Delete Scheduled Message","openapi":"api-reference/openapi-generated.json DELETE /v1/message/scheduled/{scheduled_id}","href":"/api-reference/scheduled-messages/delete-scheduled-message"},{"title":"List Scheduled Message Runs","openapi":"api-reference/openapi-generated.json GET /v1/message/scheduled/{scheduled_id}/occurrences","description":"Returns the run history of a scheduled message, newest first — each run records whether it sent, failed or was skipped, and the resulting message id.","href":"/api-reference/scheduled-messages/list-scheduled-message-occurrences"}]},{"group":"Media APIs","icon":"photo-film","pages":[{"title":"Migrate Media URL","api":"POST https://api.periskope.app/v1/media/migrate-url","href":"/api-reference/media/migrate-url"},{"title":"Migrate Media URLs (Batch)","api":"POST https://api.periskope.app/v1/media/migrate-url/batch","description":"Convert up to 1000 legacy Google Cloud Storage media URLs to the new Periskope media URL format in a single request","href":"/api-reference/media/migrate-url-batch"}]},{"group":"Contact APIs","icon":"phone","pages":[{"title":"Get Contact By ID","openapi":"api-reference/openapi-generated.json GET /v1/contacts/{contact_id}","href":"/api-reference/contacts/get-contact-by-id"},{"title":"Get Contacts","openapi":"api-reference/openapi-generated.json GET /v1/contacts","href":"/api-reference/contacts/get-contacts"},{"title":"Update Contact Labels","openapi":"api-reference/openapi-generated.json PATCH /v1/contacts/labels","href":"/api-reference/contacts/update-contact-labels"},{"title":"Update Contact","openapi":"api-reference/openapi-generated.json PATCH /v1/contacts/{contact_id}","href":"/api-reference/contacts/update-contact"},{"title":"Create Contact","openapi":"api-reference/openapi-generated.json POST /v1/contacts/create","href":"/api-reference/contacts/create-contact"},{"title":"Check Contact Exists","openapi":"api-reference/openapi-generated.json POST /v1/contacts/check","href":"/api-reference/contacts/check-contact"}]},{"group":"Ticket APIs","icon":"ticket","pages":[{"title":"Get Ticket By ID","openapi":"api-reference/openapi-generated.json GET /v1/tickets/{ticket_id}","href":"/api-reference/tickets/get-ticket-by-id"},{"title":"Get Tickets","openapi":"api-reference/openapi-generated.json GET /v1/tickets","href":"/api-reference/tickets/get-tickets"},{"title":"Update Ticket","openapi":"api-reference/openapi-generated.json PATCH /v1/tickets/{ticket_id}","href":"/api-reference/tickets/update-ticket"},{"title":"Create Ticket","openapi":"api-reference/openapi-generated.json POST /v1/tickets/create","href":"/api-reference/tickets/create-ticket"},{"title":"Get Ticket Audit Logs","openapi":"api-reference/openapi-generated.json GET /v1/tickets/{ticket_id}/audit-logs","href":"/api-reference/tickets/get-ticket-audit-logs"}]},{"group":"Custom Property APIs","icon":"list-dropdown","pages":[{"title":"Get All Custom Properties","openapi":"api-reference/openapi-generated.json GET /v1/properties","href":"/api-reference/properties/get-all-custom-properties"},{"title":"Get Custom Property","openapi":"api-reference/openapi-generated.json GET /v1/properties/{property_id}","href":"/api-reference/properties/get-custom-property"},{"title":"Create Custom Property","openapi":"api-reference/openapi-generated.json POST /v1/properties/create","href":"/api-reference/properties/create-custom-property"},{"title":"Update Custom Property","openapi":"api-reference/openapi-generated.json POST /v1/properties/{property_id}","href":"/api-reference/properties/update-custom-property"},{"title":"Update Property Options","openapi":"api-reference/openapi-generated.json POST /v1/properties/{property_id}/options","href":"/api-reference/properties/update-property-options"},{"title":"Delete Custom Properties","openapi":"api-reference/openapi-generated.json DELETE /v1/properties","href":"/api-reference/properties/delete-custom-property"}]},{"group":"Task APIs","icon":"list-check","pages":[{"title":"Get Task By ID","openapi":"api-reference/openapi-generated.json GET /v1/tasks/{task_id}","href":"/api-reference/tasks/get-task-by-id"},{"title":"Get All Tasks","openapi":"api-reference/openapi-generated.json GET /v1/tasks","href":"/api-reference/tasks/get-tasks"},{"title":"Create Task","openapi":"api-reference/openapi-generated.json POST /v1/tasks/create","href":"/api-reference/tasks/create-task"},{"title":"Update Task","openapi":"api-reference/openapi-generated.json PATCH /v1/tasks/{task_id}","href":"/api-reference/tasks/update-task"}]},{"group":"Queue APIs","icon":"list","pages":[{"title":"Fetch Queue Jobs","openapi":"api-reference/openapi-generated.json GET /v1/queue/jobs","href":"/api-reference/queues/fetch-queue-jobs"},{"title":"Get Broadcast Status","openapi":"api-reference/openapi-generated.json GET /v1/queue/broadcast","href":"/api-reference/queues/get-broadcast-status"},{"title":"Get Queue Status","openapi":"api-reference/openapi-generated.json GET /v1/queue","href":"/api-reference/queues/get-queue-status"},{"title":"Purge Queue","openapi":"api-reference/openapi-generated.json DELETE /v1/queue/purge","href":"/api-reference/queues/purge-queue"}]},{"group":"Phone APIs","icon":"phone","pages":[{"title":"Get phone","openapi":"api-reference/openapi-generated.json GET /v1/phones","href":"/api-reference/phones/get-phone"},{"title":"Get All Phones","openapi":"api-reference/openapi-generated.json GET /v1/phones/all","href":"/api-reference/phones/get-all-phones"},{"title":"Get QR","openapi":"api-reference/openapi-generated.json GET /v1/phones/qr","href":"/api-reference/phones/get-qr"},{"title":"Reset Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/reset","href":"/api-reference/phones/reset-phone"},{"title":"Restart Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/restart","href":"/api-reference/phones/restart-phone"},{"title":"Resync Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/resync","href":"/api-reference/phones/resync-phone"},{"title":"Update phone","openapi":"api-reference/openapi-generated.json PATCH /v1/phones/update","href":"/api-reference/phones/update-phone"},{"title":"Create Phone","openapi":"api-reference/openapi-generated.json POST /v1/phones/create","href":"/api-reference/phones/create-phone"},{"title":"Delete Phone","openapi":"api-reference/openapi-generated.json DELETE /v1/phones/delete","href":"/api-reference/phones/delete-phone"}]},{"group":"Notes APIs","icon":"comment","pages":[{"title":"Send Private Notes","openapi":"api-reference/openapi-generated.json POST /v1/notes/create","href":"/api-reference/notes/create-private-notes"},{"title":"Get Private Note","openapi":"api-reference/openapi-generated.json GET /v1/notes/{note_id}","href":"/api-reference/notes/get-private-note"},{"title":"List All Private Notes","openapi":"api-reference/openapi-generated.json GET /v1/notes","href":"/api-reference/notes/list-all-private-notes"}]},{"group":"Reaction APIs","icon":"comment","pages":[{"title":"Get Reactions","openapi":"api-reference/openapi-generated.json GET /v1/reactions","href":"/api-reference/reactions/get-reactions"}]},{"group":"Knowledge Base APIs","icon":"brain","pages":[{"title":"Get All Knowledge Base Items","openapi":"api-reference/openapi-generated.json GET /v1/knowledge-base","href":"/api-reference/knowledge-base/get-all-knowledge-base"},{"title":"Get FAQ by ID","openapi":"api-reference/openapi-generated.json GET /v1/knowledge-base/faq/{context_id}","href":"/api-reference/knowledge-base/get-faq-by-id"},{"title":"Create FAQ","openapi":"api-reference/openapi-generated.json POST /v1/knowledge-base/faq/create","href":"/api-reference/knowledge-base/create-faq"},{"title":"Update FAQ","openapi":"api-reference/openapi-generated.json PATCH /v1/knowledge-base/faq/{context_id}","href":"/api-reference/knowledge-base/update-faq"},{"title":"Delete FAQ","openapi":"api-reference/openapi-generated.json DELETE /v1/knowledge-base/faq/{context_id}","href":"/api-reference/knowledge-base/delete-faq"},{"title":"Get Document by ID","openapi":"api-reference/openapi-generated.json GET /v1/knowledge-base/document/{document_id}","href":"/api-reference/knowledge-base/get-document-by-id"},{"title":"Create Document","openapi":"api-reference/openapi-generated.json POST /v1/knowledge-base/document/create","href":"/api-reference/knowledge-base/create-document"},{"title":"Delete Document","openapi":"api-reference/openapi-generated.json DELETE /v1/knowledge-base/document/{document_id}","href":"/api-reference/knowledge-base/delete-document"}]},{"group":"Member APIs","icon":"user-group","pages":[{"title":"Invite Members","openapi":"api-reference/openapi-generated.json POST /v1/members/invite","href":"/api-reference/members/invite-members"},{"title":"Update Member Access","openapi":"api-reference/openapi-generated.json PATCH /v1/members/access","href":"/api-reference/members/update-member-access"},{"title":"Delete Member","openapi":"api-reference/openapi-generated.json DELETE /v1/members/{email_id}","href":"/api-reference/members/delete-member"}]},{"group":"AI APIs","icon":"robot","pages":[{"title":"Trigger AI Reply","openapi":"api-reference/openapi-generated.json POST /v1/ai/reply","href":"/api-reference/ai/trigger-ai-reply"}]},{"group":"Webhook APIs","icon":"webhook","pages":[{"title":"List Webhooks","openapi":"api-reference/openapi-generated.json GET /v1/webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Create Webhook","openapi":"api-reference/openapi-generated.json POST /v1/webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"Get Webhook by ID","openapi":"api-reference/openapi-generated.json GET /v1/webhooks/{id}","href":"/api-reference/webhooks/get-webhook-by-id"},{"title":"Update Webhook","openapi":"api-reference/openapi-generated.json PATCH /v1/webhooks/{id}","href":"/api-reference/webhooks/update-webhook"},{"title":"Delete Webhook","openapi":"api-reference/openapi-generated.json DELETE /v1/webhooks/{id}","href":"/api-reference/webhooks/delete-webhook"}]},{"group":"Webhooks","pages":[{"title":"Introduction","href":"/api-reference/webhooks/introduction"},{"title":"chat.created","icon":"comments","href":"/api-reference/webhooks/chat.created"},{"title":"chat.notification.created","icon":"comments","href":"/api-reference/webhooks/chat.notification.created"},{"title":"chat.custom-properties.updated","icon":"comments","href":"/api-reference/webhooks/chat.custom-properties.updated"},{"title":"message.created","icon":"comment","href":"/api-reference/webhooks/message.created"},{"title":"message.updated","icon":"comment","href":"/api-reference/webhooks/message.updated"},{"title":"message.deleted","icon":"comment","href":"/api-reference/webhooks/message.deleted"},{"title":"message.ack.updated","icon":"comment","href":"/api-reference/webhooks/message.ack.updated"},{"title":"message.ticket.attached","icon":"comment","href":"/api-reference/webhooks/message.ticket.attached"},{"title":"message.flagged","icon":"comment","href":"/api-reference/webhooks/message.flagged"},{"title":"message.unflagged","icon":"comment","href":"/api-reference/webhooks/message.unflagged"},{"title":"note.created","icon":"comment","href":"/api-reference/webhooks/note.created"},{"title":"reaction.created","icon":"face-smile","href":"/api-reference/webhooks/reaction.created"},{"title":"reaction.updated","icon":"face-smile","href":"/api-reference/webhooks/reaction.updated"},{"title":"ticket.created","icon":"tag","href":"/api-reference/webhooks/ticket.created"},{"title":"ticket.updated","icon":"tag","href":"/api-reference/webhooks/ticket.updated"},{"title":"ticket.deleted","icon":"tag","href":"/api-reference/webhooks/ticket.deleted"},{"title":"org.phone.updated","icon":"phone","href":"/api-reference/webhooks/org.phone.updated"},{"title":"org.phone.connected","icon":"phone","href":"/api-reference/webhooks/org.phone.connected"},{"title":"org.phone.disconnected","icon":"phone","href":"/api-reference/webhooks/org.phone.disconnected"},{"title":"org.phone.qr","icon":"phone","href":"/api-reference/webhooks/org.phone.qr"}]}]},{"anchor":"Free Tools","icon":"toolbox","href":"https://tools.periskope.app"}]},"title":"Migrate Media URL - Periskope Docs","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"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"]}