Os primeiros 8 caracteres do segredo (após vpk_<env>_) ficam visíveis no dashboard
para identificação — ex: vpk_live_a1b2c3d4. O restante nunca é exibido novamente
após a criação.
Cada chave declara um conjunto de escopos no momento da criação. Sem o escopo certo,
a request é rejeitada com 403 Forbidden.
Escopo
Permite
catalog:read
Listar e buscar items, ler webhooks
catalog:write
Upsert e delete de items
stock:write
Ajustes de estoque (Phase futura)
webhook:manage
Criar, pausar, deletar webhooks
bulk_import:manage
Iniciar e gerenciar bulk imports
Princípio do menor privilégio: crie chaves separadas para cada workload. Por
exemplo, uma chave catalog:write para o sync diário e outra catalog:read para
health checks ou dashboards de BI.
Trate API keys como senhas. Nunca commite em código-fonte. Use variáveis de
ambiente ou um secret manager (HashiCorp Vault, AWS Secrets Manager, GCP Secret
Manager, etc.).
A chave é armazenada no banco como SHA-256 hash — mesmo um vazamento do banco
não revela o segredo cleartext. Mas se o segredo vazou em outro lugar (logs, repo
público), revogue imediatamente.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Voop API","colors":{"primary":"#4F46E5","light":"#818CF8","dark":"#3730A3"},"logo":{"light":"https://mintcdn.com/neovinci-voop/MsK8ItGcEUQpZZ3U/logo/light.svg?fit=max\u0026auto=format\u0026n=MsK8ItGcEUQpZZ3U\u0026q=85\u0026s=52d59e389e0e122041243771880370db","dark":"https://mintcdn.com/neovinci-voop/MsK8ItGcEUQpZZ3U/logo/dark.svg?fit=max\u0026auto=format\u0026n=MsK8ItGcEUQpZZ3U\u0026q=85\u0026s=eb7fbea722b773845eac39396e00058a"},"favicon":"https://mintlify.s3.us-west-1.amazonaws.com/neovinci-voop/favicon.ico","styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Receitas","icon":"book","href":"/recipes/initial-load-100k"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"neovinci-voop","hasAudioNarration":false,"actualSubdomain":"neovinci-voop","customDomains":["docs.voop.work"],"gitSource":{"type":"github","owner":"voopcard","repo":"voop-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a20d97e20d2facfe300284e","collectionId":"1899e3cb-17ca-426d-9962-c08e46f44c36","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a20d97e20d2facfe300284e:success","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Guias","count":13},{"language":"default","tag":"Começando","count":5},{"language":"default","tag":"Conceitos","count":4},{"language":"default","tag":"Receitas","count":4},{"language":"default","tag":"API Reference","count":1},{"language":"default","tag":"Visão geral","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"authentication","slug":"/authentication","pageMetadata":{"title":"Autenticação","description":"API keys, escopos e ambientes (live / test)","href":"/authentication"},"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: \"API keys, escopos e ambientes (live / test)\"\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={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A Voop Catalog API usa `,_jsx(_components.strong,{children:`API keys de longa duração`}),` com escopos explícitos por chave.`]}),`\n`,_jsx(Heading,{level:`2`,id:`formato`,children:`Formato`}),`\n`,_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`vpk_live_a1b2c3d4e5f67890a1b2c3d4e5f67890`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ │ │`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ │ └─ 32 hex chars (128 bits de entropia)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ └──────────────── ambiente (live | test)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` └──────────────────── prefixo Voop (\"voop public key\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Os primeiros 8 caracteres do segredo (após `,_jsx(_components.code,{children:`vpk_\u003cenv>_`}),`) ficam visíveis no dashboard\npara identificação — ex: `,_jsx(_components.code,{children:`vpk_live_a1b2c3d4`}),`. O restante nunca é exibido novamente\napós a criação.`]}),`\n`,_jsx(Heading,{level:`2`,id:`como-usar`,children:`Como usar`}),`\n`,_jsxs(_components.p,{children:[`Envie a chave no header `,_jsx(_components.code,{children:`Authorization`}),` em `,_jsx(_components.strong,{children:`toda`}),` requisição:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,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:`4`,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:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.voop.work/api/v1/catalog/items/upsert`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer vpk_live_a1b2c3d4e5f67890a1b2c3d4e5f67890\"`}),_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:` -H`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"externalSystem\": \"shopify\", \"externalId\": \"PROD-1\", \"sku\": \"ABC\", \"name\": \"X\", \"price\": 99.9 }'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Para retro-compatibilidade, o header `,_jsx(_components.code,{children:`X-API-Key`}),` também é aceito — mas `,_jsx(_components.code,{children:`Authorization: Bearer`}),`\né o padrão recomendado.`]}),`\n`,_jsx(Heading,{level:`2`,id:`escopos`,children:`Escopos`}),`\n`,_jsxs(_components.p,{children:[`Cada chave declara um conjunto de `,_jsx(_components.strong,{children:`escopos`}),` no momento da criação. Sem o escopo certo,\na request é rejeitada com `,_jsx(_components.code,{children:`403 Forbidden`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Escopo`}),_jsx(_components.th,{children:`Permite`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`catalog:read`})}),_jsx(_components.td,{children:`Listar e buscar items, ler webhooks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`catalog:write`})}),_jsx(_components.td,{children:`Upsert e delete de items`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`stock:write`})}),_jsx(_components.td,{children:`Ajustes de estoque (Phase futura)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`webhook:manage`})}),_jsx(_components.td,{children:`Criar, pausar, deletar webhooks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bulk_import:manage`})}),_jsx(_components.td,{children:`Iniciar e gerenciar bulk imports`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Princípio do `,_jsx(_components.strong,{children:`menor privilégio`}),`: crie chaves separadas para cada workload. Por\nexemplo, uma chave `,_jsx(_components.code,{children:`catalog:write`}),` para o sync diário e outra `,_jsx(_components.code,{children:`catalog:read`}),` para\nhealth checks ou dashboards de BI.`]})}),`\n`,_jsxs(Heading,{level:`2`,id:`ambientes-live-vs-test`,children:[`Ambientes: `,_jsx(_components.code,{children:`live`}),` vs `,_jsx(_components.code,{children:`test`})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`vpk_live_*`}),` — produção. Mudanças refletem no catálogo real.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`vpk_test_*`}),` — sandbox. Útil para CI e desenvolvimento. Reservado; ativação por solicitação.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`rotação-de-chaves`,children:`Rotação de chaves`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Crie uma nova chave no Developer Portal`}),`\n`,_jsx(_components.li,{children:`Atualize o sistema cliente para usar a nova chave`}),`\n`,_jsx(_components.li,{children:`Confirme que tudo continua funcionando`}),`\n`,_jsxs(_components.li,{children:[`Revogue a chave antiga (botão `,_jsx(_components.strong,{children:`Revoke`}),` no portal)`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Após `,_jsx(_components.code,{children:`revoke`}),`, a chave deixa de autenticar imediatamente (cache Redis tem TTL máximo de 120s).`]}),`\n`,_jsx(Heading,{level:`2`,id:`segurança`,children:`Segurança`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Trate API keys como `,_jsx(_components.strong,{children:`senhas`}),`. Nunca commite em código-fonte. Use variáveis de\nambiente ou um secret manager (HashiCorp Vault, AWS Secrets Manager, GCP Secret\nManager, etc.).`]})}),`\n`,_jsxs(_components.p,{children:[`A chave é armazenada no banco como `,_jsx(_components.strong,{children:`SHA-256 hash`}),` — mesmo um vazamento do banco\nnão revela o segredo cleartext. Mas se o segredo vazou em outro lugar (logs, repo\npúblico), revogue `,_jsx(_components.strong,{children:`imediatamente`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`códigos-de-erro-de-auth`,children:`Códigos de erro de auth`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Código`}),_jsx(_components.th,{children:`Causa`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unauthorized`})}),_jsx(_components.td,{children:`Header ausente, chave inválida, chave revogada`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`forbidden`})}),_jsx(_components.td,{children:`Chave válida mas sem o scope necessário`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`429`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`too_many_requests`})}),_jsx(_components.td,{children:`Rate limit do tier excedido`})]})]})]})]})}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":"Autenticação","description":"API keys, escopos e ambientes (live / test)","href":"/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Formato","slug":"formato","depth":2,"children":[]},{"title":"Como usar","slug":"como-usar","depth":2,"children":[]},{"title":"Escopos","slug":"escopos","depth":2,"children":[]},{"title":"Ambientes: live vs test","slug":"ambientes-live-vs-test","depth":2,"children":[]},{"title":"Rotação de chaves","slug":"rotação-de-chaves","depth":2,"children":[]},{"title":"Segurança","slug":"segurança","depth":2,"children":[]},{"title":"Códigos de erro de auth","slug":"códigos-de-erro-de-auth","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"neovinci-voop","siteName":"Voop API","title":"Autenticação - Voop API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-25T19:08:45.000Z","originalFileLocation":"authentication.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=\"API keys, escopos e ambientes (live / test)\">\u003cmeta data-mint-head name=\"application-name\" content=\"Voop API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/x-icon\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/neovinci-voop/favicon.ico\">\u003clink data-mint-head rel=\"icon\" type=\"image/x-icon\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/neovinci-voop/favicon.ico\">\u003clink data-mint-head rel=\"icon\" type=\"image/x-icon\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/neovinci-voop/favicon.ico\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/neovinci-voop/favicon.ico\">\u003cmeta data-mint-head property=\"og:title\" content=\"Autenticação - Voop API\">\u003cmeta data-mint-head property=\"og:description\" content=\"API keys, escopos e ambientes (live / test)\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Voop API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.voop.work/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://neovinci-voop.mintlify.app/_mintlify/api/og/v2?division=Come%C3%A7ando\u0026amp;title=Autentica%C3%A7%C3%A3o\u0026amp;description=API+keys%2C+escopos+e+ambientes+%28live+%2F+test%29\u0026amp;theme=a58839796d05da403f355e67\u0026amp;signature=208e077f9afd23479863b733e95fe2e1ffbc7af9219eacdbcd13a15eecd9561a\">\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=\"Autenticação - Voop API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"API keys, escopos e ambientes (live / test)\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://neovinci-voop.mintlify.app/_mintlify/api/og/v2?division=Come%C3%A7ando\u0026amp;title=Autentica%C3%A7%C3%A3o\u0026amp;description=API+keys%2C+escopos+e+ambientes+%28live+%2F+test%29\u0026amp;theme=a58839796d05da403f355e67\u0026amp;signature=208e077f9afd23479863b733e95fe2e1ffbc7af9219eacdbcd13a15eecd9561a\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/neovinci-voop/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Voop API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4F46E5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.voop.work/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.voop.work/#organization\",\"name\":\"Voop API\",\"url\":\"https://docs.voop.work\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/neovinci-voop/MsK8ItGcEUQpZZ3U/logo/light.svg?fit=max\u0026auto=format\u0026n=MsK8ItGcEUQpZZ3U\u0026q=85\u0026s=52d59e389e0e122041243771880370db\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.voop.work#website\",\"name\":\"Voop API\",\"url\":\"https://docs.voop.work\",\"publisher\":{\"@id\":\"https://docs.voop.work/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.voop.work/authentication#webpage\",\"url\":\"https://docs.voop.work/authentication\",\"name\":\"Autenticação\",\"description\":\"API keys, escopos e ambientes (live / test)\",\"dateModified\":\"2026-04-25T19:08:45.000Z\",\"isPartOf\":{\"@id\":\"https://docs.voop.work#website\"},\"breadcrumb\":{\"@id\":\"https://docs.voop.work/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.voop.work/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Começando\",\"item\":\"https://docs.voop.work/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Autenticação\",\"item\":\"https://docs.voop.work/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.voop.work/authentication#article\",\"headline\":\"Autenticação\",\"name\":\"Autenticação\",\"description\":\"API keys, escopos e ambientes (live / test)\",\"url\":\"https://docs.voop.work/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.voop.work/authentication#webpage\"},\"dateModified\":\"2026-04-25T19:08:45.000Z\",\"publisher\":{\"@id\":\"https://docs.voop.work/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.voop.work#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Voop API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Voop API","nav":{"global":{"anchors":[{"anchor":"Receitas","icon":"book","href":"/recipes/initial-load-100k"}]},"tabs":[{"tab":"Guias","groups":[{"group":"Começando","pages":[{"title":"Introdução","description":"Voop Catalog API — sincronize seu catálogo de produtos via REST","href":"/introduction"},{"title":"Autenticação","href":"/authentication"},{"title":"Rate Limits","description":"Tiers, headers de resposta e estratégia de retry","href":"/rate-limits"},{"title":"Erros","href":"/errors"},{"title":"Idempotência","href":"/idempotency"}]},{"group":"Conceitos","pages":[{"title":"Items","href":"/concepts/items"},{"title":"Mídia","href":"/concepts/media"},{"title":"Webhooks","href":"/concepts/webhooks"},{"title":"Bulk Import","href":"/concepts/bulk-import"}]},{"group":"Receitas","pages":[{"title":"Carga inicial de 100k produtos","href":"/recipes/initial-load-100k"},{"title":"Sync incremental contínuo","href":"/recipes/incremental-sync"},{"title":"Receber webhooks com segurança","href":"/recipes/handle-webhooks"},{"title":"Integração com ERP genérico","href":"/recipes/erp-integration"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"Autenticação - Voop API","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":[],"chunks":[]}