Turn a guest order into an account. The guest sets a password on the order confirmation page and
receives a signed-in session for a new account that owns that order and saves its shipping address.
The credential is the claim_token returned once by POST /v1/orders when the order was created.
The account is bound to the order’s email address; no other address can be claimed. A token works once
and expires (7 days by default; the store can change this or turn the feature off).
The token proves possession of the order confirmation, not of the mailbox, so the account starts with
email_verified: false. It becomes verified when the shopper signs in with an emailed code or resets
their password; at that moment every session issued before is revoked and, unless the password was just
replaced, a new password is required at the next password sign-in.
Refusals. A token that is wrong, spent, expired, for another store or environment, or for an
unknown order answers 404 not_found, identically. Once the token is valid:
409 account_exists when the address already has an account at this store (nothing is linked; the
shopper signs in), and 409 claim_unavailable when the address already has other orders with this
store (the shopper registers with an emailed code, which proves the mailbox and brings the orders
together). A weak password is 400 weak_password, checked first, as on registration.
Only the order for this token is claimed. Other guest orders for the same address are not linked.
Secret key required. This endpoint requires a secret key (tybrite_sk_*), called from the
storefront’s server. Publishable keys answer 403 forbidden.
Attempt limits: 10 attempts per order per hour and 600 per store per hour; past either, the call
answers 429 rate_limited with a Retry-After header. After 10 wrong tokens an order’s token is
locked.
{
"error": {
"code": "account_exists",
"message": "An account already exists for this email address. Sign in to see this order."
}
}
{
"error": {
"code": "rate_limited",
"message": "Too many requests for this API key. Please slow down and try again shortly.",
"remaining": 0,
"reset": 1706198400
}
}
{
"error": {
"code": "account_exists",
"message": "An account already exists for this email address. Sign in to see this order."
}
}
{
"error": {
"code": "rate_limited",
"message": "Too many requests for this API key. Please slow down and try again shortly.",
"remaining": 0,
"reset": 1706198400
}
}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Galactic Core API Documentation","colors":{"primary":"#3b82f6","light":"#60a5fa","dark":"#3b82f6"},"logo":{"light":"https://mintcdn.com/tybritelabs/9cNSmgnBxs-QU_UC/branding/gc-long-blue.png?fit=max\u0026auto=format\u0026n=9cNSmgnBxs-QU_UC\u0026q=85\u0026s=88d64ea989973d874ed73437459487f7","dark":"https://mintcdn.com/tybritelabs/9cNSmgnBxs-QU_UC/branding/gc-long-white.png?fit=max\u0026auto=format\u0026n=9cNSmgnBxs-QU_UC\u0026q=85\u0026s=051cafe35073e2d41a7bfb963b3ad22b"},"favicon":"https://mintcdn.com/tybritelabs/9cNSmgnBxs-QU_UC/favicon.svg?fit=max\u0026auto=format\u0026n=9cNSmgnBxs-QU_UC\u0026q=85\u0026s=83f32264cd55e429e1a14f9d0ee78689","navbar":{"links":[{"href":"https://gc.tybritelabs.com/dashboard","label":"Dashboard"}],"primary":{"type":"button","label":"Get Started","href":"/quickstart"}},"footer":{"socials":{"github":"https://github.com/tybrite","twitter":"https://twitter.com/tybrite","linkedin":"https://linkedin.com/company/tybrite"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"gauge","href":"https://gc.tybritelabs.com/dashboard"},{"anchor":"GitHub","icon":"github","href":"https://github.com/tybrite"},{"anchor":"Support","icon":"envelope","href":"mailto:support@tybrite.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tybritelabs","hasAudioNarration":false,"actualSubdomain":"tybritelabs","customDomains":["docs.tybritelabs.com"],"gitSource":{"type":"github","owner":"tybrite","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae29374ccd05bb29c32195f","collectionId":"4098f26a-cfe4-4b4a-9faa-6739b8243d6f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae29374ccd05bb29c32195f"},"entitlements":{},"buildId":"6ae294a0e37b7de26e467673","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":234},{"language":"default","tag":"Getting Started","count":37},{"language":"default","tag":"TypeScript SDK","count":36},{"language":"default","tag":"Agent","count":36},{"language":"default","tag":"Customers","count":20},{"language":"default","tag":"Authentication","count":13},{"language":"default","tag":"Cart \u0026 Wishlist","count":13},{"language":"default","tag":"Sandbox","count":13},{"language":"default","tag":"Marketplace","count":12},{"language":"default","tag":"B2B","count":12}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/authentication/create-an-account-from-a-guest-order","slug":"/api-reference/authentication/create-an-account-from-a-guest-order","pageMetadata":{"title":"Create an account from a guest order","description":"Turn a guest order into an account. The guest sets a password on the order confirmation page and\nreceives a signed-in session for a new account that owns that order and saves its shipping address.\n\nThe credential is the `claim_token` returned once by `POST /v1/orders` when the order was created.\nThe account is bound to the order's email address; no other address can be claimed. A token works once\nand expires (7 days by default; the store can change this or turn the feature off).\n\nThe token proves possession of the order confirmation, not of the mailbox, so the account starts with\n`email_verified: false`. It becomes verified when the shopper signs in with an emailed code or resets\ntheir password; at that moment every session issued before is revoked and, unless the password was just\nreplaced, a new password is required at the next password sign-in.\n\n**Refusals.** A token that is wrong, spent, expired, for another store or environment, or for an\nunknown order answers `404 not_found`, identically. Once the token is valid:\n`409 account_exists` when the address already has an account at this store (nothing is linked; the\nshopper signs in), and `409 claim_unavailable` when the address already has other orders with this\nstore (the shopper registers with an emailed code, which proves the mailbox and brings the orders\ntogether). A weak password is `400 weak_password`, checked first, as on registration.\n\nOnly the order for this token is claimed. Other guest orders for the same address are not linked.\n\n**Secret key required.** This endpoint requires a secret key (`tybrite_sk_*`), called from the\nstorefront's server. Publishable keys answer `403 forbidden`.\n\n**Attempt limits:** 10 attempts per order per hour and 600 per store per hour; past either, the call\nanswers `429 rate_limited` with a `Retry-After` header. After 10 wrong tokens an order's token is\nlocked.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/claim-account","href":"/api-reference/authentication/create-an-account-from-a-guest-order","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Turn a guest order into an account. The guest sets a password on the order confirmation page and\\nreceives a signed-in session for a new account that owns that order and saves its shipping address.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The credential is the \", _jsx(_components.code, {\n children: \"claim_token\"\n }), \" returned once by \", _jsx(_components.code, {\n children: \"POST /v1/orders\"\n }), \" when the order was created.\\nThe account is bound to the order’s email address; no other address can be claimed. A token works once\\nand expires (7 days by default; the store can change this or turn the feature off).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The token proves possession of the order confirmation, not of the mailbox, so the account starts with\\n\", _jsx(_components.code, {\n children: \"email_verified: false\"\n }), \". It becomes verified when the shopper signs in with an emailed code or resets\\ntheir password; at that moment every session issued before is revoked and, unless the password was just\\nreplaced, a new password is required at the next password sign-in.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Refusals.\"\n }), \" A token that is wrong, spent, expired, for another store or environment, or for an\\nunknown order answers \", _jsx(_components.code, {\n children: \"404 not_found\"\n }), \", identically. Once the token is valid:\\n\", _jsx(_components.code, {\n children: \"409 account_exists\"\n }), \" when the address already has an account at this store (nothing is linked; the\\nshopper signs in), and \", _jsx(_components.code, {\n children: \"409 claim_unavailable\"\n }), \" when the address already has other orders with this\\nstore (the shopper registers with an emailed code, which proves the mailbox and brings the orders\\ntogether). A weak password is \", _jsx(_components.code, {\n children: \"400 weak_password\"\n }), \", checked first, as on registration.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Only the order for this token is claimed. Other guest orders for the same address are not linked.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Secret key required.\"\n }), \" This endpoint requires a secret key (\", _jsx(_components.code, {\n children: \"tybrite_sk_*\"\n }), \"), called from the\\nstorefront’s server. Publishable keys answer \", _jsx(_components.code, {\n children: \"403 forbidden\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Attempt limits:\"\n }), \" 10 attempts per order per hour and 600 per store per hour; past either, the call\\nanswers \", _jsx(_components.code, {\n children: \"429 rate_limited\"\n }), \" with a \", _jsx(_components.code, {\n children: \"Retry-After\"\n }), \" header. After 10 wrong tokens an order’s token is\\nlocked.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\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":"Create an account from a guest order","description":"Turn a guest order into an account. The guest sets a password on the order confirmation page and\nreceives a signed-in session for a new account that owns that order and saves its shipping address.\n\nThe credential is the `claim_token` returned once by `POST /v1/orders` when the order was created.\nThe account is bound to the order's email address; no other address can be claimed. A token works once\nand expires (7 days by default; the store can change this or turn the feature off).\n\nThe token proves possession of the order confirmation, not of the mailbox, so the account starts with\n`email_verified: false`. It becomes verified when the shopper signs in with an emailed code or resets\ntheir password; at that moment every session issued before is revoked and, unless the password was just\nreplaced, a new password is required at the next password sign-in.\n\n**Refusals.** A token that is wrong, spent, expired, for another store or environment, or for an\nunknown order answers `404 not_found`, identically. Once the token is valid:\n`409 account_exists` when the address already has an account at this store (nothing is linked; the\nshopper signs in), and `409 claim_unavailable` when the address already has other orders with this\nstore (the shopper registers with an emailed code, which proves the mailbox and brings the orders\ntogether). A weak password is `400 weak_password`, checked first, as on registration.\n\nOnly the order for this token is claimed. Other guest orders for the same address are not linked.\n\n**Secret key required.** This endpoint requires a secret key (`tybrite_sk_*`), called from the\nstorefront's server. Publishable keys answer `403 forbidden`.\n\n**Attempt limits:** 10 attempts per order per hour and 600 per store per hour; past either, the call\nanswers `429 rate_limited` with a `Retry-After` header. After 10 wrong tokens an order's token is\nlocked.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/claim-account","href":"/api-reference/authentication/create-an-account-from-a-guest-order","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/tybritelabs/af1ac4e439492905/sync.js"],"openApiReferenceData":{"operation":{"operationId":"claimAccountFromOrder","tags":["Authentication"],"summary":"Create an account from a guest order","description":"Turn a guest order into an account. The guest sets a password on the order confirmation page and\nreceives a signed-in session for a new account that owns that order and saves its shipping address.\n\nThe credential is the `claim_token` returned once by `POST /v1/orders` when the order was created.\nThe account is bound to the order's email address; no other address can be claimed. A token works once\nand expires (7 days by default; the store can change this or turn the feature off).\n\nThe token proves possession of the order confirmation, not of the mailbox, so the account starts with\n`email_verified: false`. It becomes verified when the shopper signs in with an emailed code or resets\ntheir password; at that moment every session issued before is revoked and, unless the password was just\nreplaced, a new password is required at the next password sign-in.\n\n**Refusals.** A token that is wrong, spent, expired, for another store or environment, or for an\nunknown order answers `404 not_found`, identically. Once the token is valid:\n`409 account_exists` when the address already has an account at this store (nothing is linked; the\nshopper signs in), and `409 claim_unavailable` when the address already has other orders with this\nstore (the shopper registers with an emailed code, which proves the mailbox and brings the orders\ntogether). A weak password is `400 weak_password`, checked first, as on registration.\n\nOnly the order for this token is claimed. Other guest orders for the same address are not linked.\n\n**Secret key required.** This endpoint requires a secret key (`tybrite_sk_*`), called from the\nstorefront's server. Publishable keys answer `403 forbidden`.\n\n**Attempt limits:** 10 attempts per order per hour and 600 per store per hour; past either, the call\nanswers `429 rate_limited` with a `Retry-After` header. After 10 wrong tokens an order's token is\nlocked.\n","security":["fa1011ed-8659-467a-a56a-f4deb8865cad"],"requestBody":"9e390bca-440e-4119-8073-0c9926bf99cf","responses":{"201":"9a8e0f53-b52a-4e77-b5a4-7b325d880bc3","400":"78f66074-e73e-4956-866a-7604d1765c12","403":"796ebd06-fde6-4cfc-a82c-c26fcd40ab09","404":"cc7b3990-397f-4c76-9f1e-67d614333815","409":"d491a8d6-4aa4-493f-ab2a-1dfafca18a8e","429":"4db78827-2eb4-4325-9d11-df50a96a6da8","500":"50ed7f17-24e5-4f0d-9ba3-1801357fe461"},"method":"post","type":"path","servers":["3fc3189e-b8c3-4e23-a374-4038943c6525"],"path":"/v1/auth/claim-account","baseUrlOptions":["https://api.tybritelabs.com"],"title":"Create an account from a guest order","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["order_id","claim_token","password"],"properties":{"order_id":{"type":"string","format":"uuid","description":"The order the token was issued for.","isRequired":true,"uniqueKey":"order_id","typeLabel":"string\u003cuuid>"},"claim_token":{"type":"string","description":"The `claim_token` from the order's create response.","isRequired":true,"uniqueKey":"claim_token","typeLabel":"string"},"password":{"type":"string","minLength":8,"maxLength":72,"description":"The new account's password. Same rule as registration.","isRequired":true,"uniqueKey":"password","typeLabel":"string"},"name":{"type":"string","description":"The shopper's name. Defaults to the name on the order.","uniqueKey":"name","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"order_id":"7c1f3b0a-9d2e-4a5b-8c6d-0e1f2a3b4c5d","claim_token":"gcclaim_Zm9vYmFyYmF6cXV4MTIzNDU2Nzg5MGFiY2RlZmdoaWo","password":"SecurePassword123!"},"examples":{"Example":{"title":"Example","value":{"order_id":"7c1f3b0a-9d2e-4a5b-8c6d-0e1f2a3b4c5d","claim_token":"gcclaim_Zm9vYmFyYmF6cXV4MTIzNDU2Nzg5MGFiY2RlZmdoaWo","password":"SecurePassword123!"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"9a8e0f53-b52a-4e77-b5a4-7b325d880bc3":{"description":"Account created and signed in.","headers":{"Tybrite-Environment":{"description":"Confirms which environment your API key resolved to. Use this to verify that test keys\nare hitting sandbox data and live keys are hitting production data.\n\n- `production` — requests are scoped to live data; real orders, customers, and payments\n- `sandbox` — requests are scoped to isolated test data; no real money is moved\n\nPresent on every authenticated response, including error responses.\n","schema":{"type":"string","enum":["production","sandbox"]},"example":"sandbox"}},"content":{"application/json":{"schema":{"type":"object","description":"A successful sign-in, sign-up verification or password reset.","required":["message","user","customer","session"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"user":{"type":"object","description":"The shopper's sign-in identity.","properties":{"id":{"type":"string","format":"uuid","description":"The shopper identity. It is the `sub` of the store's sign-in token.","isRequired":true,"uniqueKey":"user.id","typeLabel":"string\u003cuuid>"},"email":{"type":"string","format":"email","isRequired":true,"uniqueKey":"user.email","typeLabel":"string\u003cemail>"},"email_confirmed":{"type":"boolean","description":"Whether the shopper has proven control of the address with a one-time code or link.","isRequired":true,"uniqueKey":"user.email_confirmed","typeLabel":"boolean"},"email_verified":{"type":"boolean","description":"Same value as `email_confirmed`. A marketplace links purchases made as a guest with this address to the account only when this is true.","isRequired":true,"uniqueKey":"user.email_verified","typeLabel":"boolean"},"has_password":{"type":"boolean","description":"Whether the account has a password. An account created without one signs in by emailed code and can set a password with `POST /v1/auth/password/change`.","isRequired":true,"uniqueKey":"user.has_password","typeLabel":"boolean"}},"required":["id","email","email_confirmed","email_verified","has_password"],"isRequired":true,"uniqueKey":"user","typeLabel":"object"},"customer":{"oneOf":[{"type":"object","description":"The shopper's customer record at this store. `null` when the key belongs to a marketplace, where a shopper holds an account without a per-store record.","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"customer.oneOf.0.id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"customer.oneOf.0.name","typeLabel":"string"},"email":{"type":"string","format":"email","uniqueKey":"customer.oneOf.0.email","typeLabel":"string\u003cemail>"},"phone":{"type":"string","uniqueKey":"customer.oneOf.0.phone","typeLabel":"string"},"address":{"oneOf":[{"type":"string","description":"The customer's address, or null if not on file.","uniqueKey":"customer.oneOf.0.address.oneOf.0","typeLabel":"string"},{"type":"null","description":"The customer's address, or null if not on file.","uniqueKey":"customer.oneOf.0.address.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.address","typeLabel":"string | null"},"status":{"type":"string","enum":["active","inactive"],"uniqueKey":"customer.oneOf.0.status","typeLabel":"enum\u003cstring>"},"custom_fields":{"type":"array","description":"The merchant's own fields on this record, with their values. Only fields the merchant published\nappear here. The merchant controls the names and how many exist, so render the array rather than\nreading fixed keys.\n","items":{"type":"object","description":"One merchant-defined field and its value on a record. Definitions are authored by the merchant (or by\ntheir platform operator), so the set varies per store and per entity.\n","properties":{"field_name":{"type":"string","description":"The machine name. Stable across edits to the label, so this is the one to key off in code.","example":"buyer_po","uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].field_name","typeLabel":"string"},"field_label":{"type":"string","description":"What the merchant calls this field. The string to display.","example":"Buyer PO number","uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].field_label","typeLabel":"string"},"field_type":{"type":"string","enum":["text","textarea","number","boolean","select","multiselect","date","json","dimensions","weight"],"description":"The shape of `value`: `multiselect` is an array of strings; `json`, `dimensions` and `weight` are\nobjects; the rest are scalars, and a `number` arrives as a number rather than as text.\n","example":"text","uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].field_type","typeLabel":"enum\u003cstring>"},"unit_type":{"oneOf":[{"type":"string","description":"The unit a numeric or measurement field is expressed in, when the merchant set one.","example":null,"uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].unit_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"The unit a numeric or measurement field is expressed in, when the merchant set one.","example":null,"uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].unit_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].unit_type","typeLabel":"string | null"},"value":{"description":"The stored value, in the shape implied by `field_type`. Null when the field is defined but has no\nvalue on this record — which is distinct from the field not existing.\n","example":"PO-2026-0819","uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX].value","typeLabel":"any"}},"uniqueKey":"customer.oneOf.0.custom_fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"customer.oneOf.0.custom_fields","typeLabel":"object[]"},"tier":{"type":"string","description":"The customer's loyalty/spend tier, derived from their purchase history. New\ncustomers start at `bronze`.\n","enum":["bronze","silver","gold","platinum"],"example":"bronze","uniqueKey":"customer.oneOf.0.tier","typeLabel":"enum\u003cstring>"},"join_date":{"type":"string","format":"date","uniqueKey":"customer.oneOf.0.join_date","typeLabel":"string\u003cdate>"},"external_id":{"oneOf":[{"type":"string","description":"Optional identifier from an external identity provider (Auth0, Clerk, Cognito,\nFirebase, NextAuth, etc). Unique per store + environment. Set this when you\nmanage authentication outside Galactic Core and need a stable handle to map\nyour upstream user back to the Galactic Core customer record.\n","example":"auth0|66a3f8c2b1d9c204a1f7e3d1","uniqueKey":"customer.oneOf.0.external_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional identifier from an external identity provider (Auth0, Clerk, Cognito,\nFirebase, NextAuth, etc). Unique per store + environment. Set this when you\nmanage authentication outside Galactic Core and need a stable handle to map\nyour upstream user back to the Galactic Core customer record.\n","example":"auth0|66a3f8c2b1d9c204a1f7e3d1","uniqueKey":"customer.oneOf.0.external_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.external_id","typeLabel":"string | null"},"marketing_consent":{"type":"boolean","description":"Whether the customer has opted in to marketing email. Defaults to false (opt-in).\nSet this from your storefront's email opt-in checkbox at sign-up, checkout, or in\nthe customer's account preferences. When true, the customer is eligible to be\nsubscribed to email in the store's connected marketing tools. It does not cover\nSMS; see `sms_consent`.\n","default":false,"example":true,"uniqueKey":"customer.oneOf.0.marketing_consent","typeLabel":"boolean"},"sms_consent":{"type":"boolean","description":"Whether the customer has opted in to marketing text messages. A separate opt-in\nfrom `marketing_consent`, and only settable for a customer with a phone number.\nDefaults to false.\n","default":false,"example":false,"uniqueKey":"customer.oneOf.0.sms_consent","typeLabel":"boolean"},"total_purchases":{"type":"integer","uniqueKey":"customer.oneOf.0.total_purchases","typeLabel":"integer"},"last_purchase":{"oneOf":[{"type":"string","format":"date-time","description":"Timestamp of the customer's most recent purchase, or null if they have not purchased yet.","uniqueKey":"customer.oneOf.0.last_purchase.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Timestamp of the customer's most recent purchase, or null if they have not purchased yet.","uniqueKey":"customer.oneOf.0.last_purchase.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.last_purchase","typeLabel":"string\u003cdate-time> | null"},"store_credit_balance":{"type":"number","description":"The customer's total redeemable store-credit balance. Store credit is\nissued when a customer accepts a store-credit offer on a return, and can\nbe applied at checkout (see `apply_store_credit` on `POST /v1/orders`).\n","example":25,"uniqueKey":"customer.oneOf.0.store_credit_balance","typeLabel":"number"},"created_at":{"type":"string","format":"date-time","uniqueKey":"customer.oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"customer.oneOf.0.updated_at","typeLabel":"string\u003cdate-time>"},"store_metrics":{"oneOf":[{"type":"object","description":"Aggregated purchase metrics for the customer, or null until they have purchase history.","properties":{"total_purchases":{"type":"integer","uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0.total_purchases","typeLabel":"integer"},"total_spent":{"type":"number","uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0.total_spent","typeLabel":"number"},"first_purchase_date":{"type":"string","uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0.first_purchase_date","typeLabel":"string"},"last_purchase_date":{"type":"string","uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0.last_purchase_date","typeLabel":"string"},"status":{"type":"string","uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0.status","typeLabel":"string"},"preferred_store":{"type":"string","uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0.preferred_store","typeLabel":"string"}},"uniqueKey":"customer.oneOf.0.store_metrics.oneOf.0","typeLabel":"object"},{"type":"null","description":"Aggregated purchase metrics for the customer, or null until they have purchase history.","properties":{"total_purchases":{"type":"integer"},"total_spent":{"type":"number"},"first_purchase_date":{"type":"string"},"last_purchase_date":{"type":"string"},"status":{"type":"string"},"preferred_store":{"type":"string"}},"uniqueKey":"customer.oneOf.0.store_metrics.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.store_metrics","typeLabel":"object | null"},"environment":{"type":"string","enum":["production","sandbox"],"description":"Whether this customer record belongs to the live or test environment.","example":"production","uniqueKey":"customer.oneOf.0.environment","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"customer.oneOf.0","typeLabel":"object"},{"type":"null","description":"The shopper's customer record at this store. `null` when the key belongs to a marketplace, where a shopper holds an account without a per-store record.","isRequired":true,"uniqueKey":"customer.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"customer","typeLabel":"object | null"},"session":{"type":"object","description":"A shopper's session with the store: a short-lived sign-in token and a refresh token. Store both values and replace them on every refresh.","required":["access_token","refresh_token","expires_in","expires_at","token_type"],"properties":{"access_token":{"type":"string","description":"The store's sign-in token. Sent as the `x-auth-token` header on customer-self endpoints. It is accepted only by the store (and environment) that issued it.","isRequired":true,"uniqueKey":"session.access_token","typeLabel":"string"},"refresh_token":{"type":"string","description":"Opaque token that begins with `gcsr_`. It is valid for 30 days from its last use and for one use: `POST /v1/auth/refresh` returns a replacement, and presenting an earlier one again ends the whole session.","isRequired":true,"uniqueKey":"session.refresh_token","typeLabel":"string"},"expires_in":{"type":"integer","description":"Lifetime of `access_token` in seconds (900).","example":900,"isRequired":true,"uniqueKey":"session.expires_in","typeLabel":"integer"},"expires_at":{"type":"integer","description":"Unix time at which `access_token` stops being accepted.","isRequired":true,"uniqueKey":"session.expires_at","typeLabel":"integer"},"token_type":{"type":"string","enum":["shopper"],"description":"Always `shopper`.","isRequired":true,"uniqueKey":"session.token_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"session","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","user":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","email":"jsmith@example.com","email_confirmed":true,"email_verified":true,"has_password":true},"customer":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","email":"jsmith@example.com","phone":"\u003cstring>","address":"\u003cstring>","status":"active","custom_fields":[{"field_name":"buyer_po","field_label":"Buyer PO number","field_type":"text","unit_type":null,"value":"PO-2026-0819"}],"tier":"bronze","join_date":"2023-12-25","external_id":"auth0|66a3f8c2b1d9c204a1f7e3d1","marketing_consent":true,"sms_consent":false,"total_purchases":123,"last_purchase":"2023-11-07T05:31:56Z","store_credit_balance":25,"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","store_metrics":{"total_purchases":123,"total_spent":123,"first_purchase_date":"\u003cstring>","last_purchase_date":"\u003cstring>","status":"\u003cstring>","preferred_store":"\u003cstring>"},"environment":"production"},"session":{"access_token":"\u003cstring>","refresh_token":"\u003cstring>","expires_in":900,"expires_at":123,"token_type":"shopper"}}}},"exampleType":"generated"}},"exampleType":"generated"},"78f66074-e73e-4956-866a-7604d1765c12":{"description":"`invalid_request` for a missing field; `weak_password` when the password breaks the rule.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Missing required field","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","uniqueKey":"error.details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","additionalProperties":true,"uniqueKey":"error.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"error.details","typeLabel":"string | object"},"hint":{"type":"string","description":"Additional guidance on how to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"},"available_stock":{"type":"integer","description":"Current stock level (present on insufficient_stock errors).","uniqueKey":"error.available_stock","typeLabel":"integer"},"current_cart_quantity":{"type":"integer","description":"Quantity already in cart (present on insufficient_stock errors).","uniqueKey":"error.current_cart_quantity","typeLabel":"integer"},"limit":{"type":"integer","description":"Rate limit ceiling (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests remaining in the current window (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.remaining","typeLabel":"integer"},"reset":{"type":"integer","description":"Unix timestamp when the rate limit / quota window resets (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.reset","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"Missing required field","details":"The 'email' field is required","hint":"\u003cstring>","available_stock":123,"current_cart_quantity":123,"limit":123,"remaining":123,"reset":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"796ebd06-fde6-4cfc-a82c-c26fcd40ab09":{"description":"Insufficient permissions - operation requires secret key","headers":{"Tybrite-Environment":{"description":"Confirms which environment your API key resolved to. Use this to verify that test keys\nare hitting sandbox data and live keys are hitting production data.\n\n- `production` — requests are scoped to live data; real orders, customers, and payments\n- `sandbox` — requests are scoped to isolated test data; no real money is moved\n\nPresent on every authenticated response, including error responses.\n","schema":{"type":"string","enum":["production","sandbox"]},"example":"sandbox"}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Missing required field","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","uniqueKey":"error.details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","additionalProperties":true,"uniqueKey":"error.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"error.details","typeLabel":"string | object"},"hint":{"type":"string","description":"Additional guidance on how to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"},"available_stock":{"type":"integer","description":"Current stock level (present on insufficient_stock errors).","uniqueKey":"error.available_stock","typeLabel":"integer"},"current_cart_quantity":{"type":"integer","description":"Quantity already in cart (present on insufficient_stock errors).","uniqueKey":"error.current_cart_quantity","typeLabel":"integer"},"limit":{"type":"integer","description":"Rate limit ceiling (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests remaining in the current window (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.remaining","typeLabel":"integer"},"reset":{"type":"integer","description":"Unix timestamp when the rate limit / quota window resets (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.reset","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"forbidden","message":"This operation requires a secret key. Publishable keys cover catalogue reads and the actions a shopper takes for themselves."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"forbidden","message":"This operation requires a secret key. Publishable keys cover catalogue reads and the actions a shopper takes for themselves."}}}},"exampleType":"examples"}},"exampleType":"examples"},"cc7b3990-397f-4c76-9f1e-67d614333815":{"description":"Resource not found","headers":{"Tybrite-Environment":{"description":"Confirms which environment your API key resolved to. Use this to verify that test keys\nare hitting sandbox data and live keys are hitting production data.\n\n- `production` — requests are scoped to live data; real orders, customers, and payments\n- `sandbox` — requests are scoped to isolated test data; no real money is moved\n\nPresent on every authenticated response, including error responses.\n","schema":{"type":"string","enum":["production","sandbox"]},"example":"sandbox"}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Missing required field","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","uniqueKey":"error.details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","additionalProperties":true,"uniqueKey":"error.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"error.details","typeLabel":"string | object"},"hint":{"type":"string","description":"Additional guidance on how to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"},"available_stock":{"type":"integer","description":"Current stock level (present on insufficient_stock errors).","uniqueKey":"error.available_stock","typeLabel":"integer"},"current_cart_quantity":{"type":"integer","description":"Quantity already in cart (present on insufficient_stock errors).","uniqueKey":"error.current_cart_quantity","typeLabel":"integer"},"limit":{"type":"integer","description":"Rate limit ceiling (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests remaining in the current window (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.remaining","typeLabel":"integer"},"reset":{"type":"integer","description":"Unix timestamp when the rate limit / quota window resets (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.reset","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"not_found","message":"Resource not found"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"not_found","message":"Resource not found"}}}},"exampleType":"examples"}},"exampleType":"examples"},"d491a8d6-4aa4-493f-ab2a-1dfafca18a8e":{"description":"`account_exists` (the address already has an account here) or `claim_unavailable` (the address already has other orders here).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Missing required field","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","uniqueKey":"error.details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","additionalProperties":true,"uniqueKey":"error.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"error.details","typeLabel":"string | object"},"hint":{"type":"string","description":"Additional guidance on how to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"},"available_stock":{"type":"integer","description":"Current stock level (present on insufficient_stock errors).","uniqueKey":"error.available_stock","typeLabel":"integer"},"current_cart_quantity":{"type":"integer","description":"Quantity already in cart (present on insufficient_stock errors).","uniqueKey":"error.current_cart_quantity","typeLabel":"integer"},"limit":{"type":"integer","description":"Rate limit ceiling (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests remaining in the current window (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.remaining","typeLabel":"integer"},"reset":{"type":"integer","description":"Unix timestamp when the rate limit / quota window resets (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.reset","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"account_exists":{"title":"account_exists","value":{"error":{"code":"account_exists","message":"An account already exists for this email address. Sign in to see this order."}}}},"exampleType":"examples"}},"exampleType":"examples"},"4db78827-2eb4-4325-9d11-df50a96a6da8":{"description":"Too many requests. Two distinct `429` codes: `rate_limited` (an abuse throttle — too many requests too fast; carries an `X-RateLimit-Scope: abuse` header and is NOT counted against your monthly quota) and `quota_exceeded` (your plan's monthly request allowance is reached).","headers":{"Tybrite-Environment":{"description":"Confirms which environment your API key resolved to. Use this to verify that test keys\nare hitting sandbox data and live keys are hitting production data.\n\n- `production` — requests are scoped to live data; real orders, customers, and payments\n- `sandbox` — requests are scoped to isolated test data; no real money is moved\n\nPresent on every authenticated response, including error responses.\n","schema":{"type":"string","enum":["production","sandbox"]},"example":"sandbox"},"Retry-After":{"description":"Seconds until the limit that refused the request resets. Sent with `rate_limited`.","schema":{"type":"integer"},"example":540}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Missing required field","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","uniqueKey":"error.details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","additionalProperties":true,"uniqueKey":"error.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"error.details","typeLabel":"string | object"},"hint":{"type":"string","description":"Additional guidance on how to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"},"available_stock":{"type":"integer","description":"Current stock level (present on insufficient_stock errors).","uniqueKey":"error.available_stock","typeLabel":"integer"},"current_cart_quantity":{"type":"integer","description":"Quantity already in cart (present on insufficient_stock errors).","uniqueKey":"error.current_cart_quantity","typeLabel":"integer"},"limit":{"type":"integer","description":"Rate limit ceiling (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests remaining in the current window (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.remaining","typeLabel":"integer"},"reset":{"type":"integer","description":"Unix timestamp when the rate limit / quota window resets (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.reset","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Too many requests for this API key. Please slow down and try again shortly.","remaining":0,"reset":1706198400}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Too many requests for this API key. Please slow down and try again shortly.","remaining":0,"reset":1706198400}}}},"exampleType":"examples"}},"exampleType":"examples"},"50ed7f17-24e5-4f0d-9ba3-1801357fe461":{"description":"Internal server error","headers":{"Tybrite-Environment":{"description":"Confirms which environment your API key resolved to. Use this to verify that test keys\nare hitting sandbox data and live keys are hitting production data.\n\n- `production` — requests are scoped to live data; real orders, customers, and payments\n- `sandbox` — requests are scoped to isolated test data; no real money is moved\n\nPresent on every authenticated response, including error responses.\n","schema":{"type":"string","enum":["production","sandbox"]},"example":"sandbox"}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Missing required field","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","uniqueKey":"error.details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Further detail about the error: a sentence, or for some errors an object (for example the `missing` list of `billing_location_required` or the `item_index` and `field_name` of `line_field_required`).","example":"The 'email' field is required","additionalProperties":true,"uniqueKey":"error.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"error.details","typeLabel":"string | object"},"hint":{"type":"string","description":"Additional guidance on how to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"},"available_stock":{"type":"integer","description":"Current stock level (present on insufficient_stock errors).","uniqueKey":"error.available_stock","typeLabel":"integer"},"current_cart_quantity":{"type":"integer","description":"Quantity already in cart (present on insufficient_stock errors).","uniqueKey":"error.current_cart_quantity","typeLabel":"integer"},"limit":{"type":"integer","description":"Rate limit ceiling (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests remaining in the current window (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.remaining","typeLabel":"integer"},"reset":{"type":"integer","description":"Unix timestamp when the rate limit / quota window resets (present on rate_limited / quota_exceeded errors).","uniqueKey":"error.reset","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"server_error","message":"An unexpected error occurred"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"server_error","message":"An unexpected error occurred"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"fa1011ed-8659-467a-a56a-f4deb8865cad":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"**API Key Authentication**\n \nUse your API key in the Authorization header:\n```\nAuthorization: Bearer tybrite_sk_live_YOUR_KEY\n```\n \n**Key Types:**\n \n**Secret Keys (Server-Side Only):**\n- Format: `tybrite_sk_live_*` (production) or `tybrite_sk_test_*` (sandbox)\n- Full read/write access to all endpoints\n- ⚠️ NEVER expose in client-side code or public repositories\n- Required for: every write a shopper does not make for themselves, authentication, payment verification, AI recommendations\n \n**Publishable Keys (Client-Safe):**\n- Format: `tybrite_pk_live_*` (production) or `tybrite_pk_test_*` (sandbox)\n- Catalogue reads, plus the actions a shopper takes for themselves\n- ✅ Safe for client-side JavaScript, mobile apps, and public code\n- Allowed for: browsing products, search, CMS content, pricing queries, cart and wishlist,\n reviews, storefront events, and the Agent API's quotes, cart drafts and checkout intents\n \n**Endpoint-Specific Requirements:**\n- **Authentication endpoints** (`/v1/auth/*`): Secret key required\n- **Payment verification** (`POST /v1/payments/verify`): Secret key required\n- **AI Recommendations** (`POST /v1/recommendations`): Secret key required\n- **Semantic Search** (`POST /v1/search`): Both key types allowed (read-only operation)\n- **Shopper actions** (cart, wishlist, reviews, storefront events, Agent API quotes, cart drafts and checkout intents): Both key types allowed\n- **All other write operations**: Secret key required\n- **All read operations**: Both key types allowed\n \nUsing a publishable key for restricted operations returns 403 Forbidden.\n","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"3fc3189e-b8c3-4e23-a374-4038943c6525":{"url":"https://api.tybritelabs.com","description":"Production API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"**API Key Authentication**\n \nUse your API key in the Authorization header:\n```\nAuthorization: Bearer tybrite_sk_live_YOUR_KEY\n```\n \n**Key Types:**\n \n**Secret Keys (Server-Side Only):**\n- Format: `tybrite_sk_live_*` (production) or `tybrite_sk_test_*` (sandbox)\n- Full read/write access to all endpoints\n- ⚠️ NEVER expose in client-side code or public repositories\n- Required for: every write a shopper does not make for themselves, authentication, payment verification, AI recommendations\n \n**Publishable Keys (Client-Safe):**\n- Format: `tybrite_pk_live_*` (production) or `tybrite_pk_test_*` (sandbox)\n- Catalogue reads, plus the actions a shopper takes for themselves\n- ✅ Safe for client-side JavaScript, mobile apps, and public code\n- Allowed for: browsing products, search, CMS content, pricing queries, cart and wishlist,\n reviews, storefront events, and the Agent API's quotes, cart drafts and checkout intents\n \n**Endpoint-Specific Requirements:**\n- **Authentication endpoints** (`/v1/auth/*`): Secret key required\n- **Payment verification** (`POST /v1/payments/verify`): Secret key required\n- **AI Recommendations** (`POST /v1/recommendations`): Secret key required\n- **Semantic Search** (`POST /v1/search`): Both key types allowed (read-only operation)\n- **Shopper actions** (cart, wishlist, reviews, storefront events, Agent API quotes, cart drafts and checkout intents): Both key types allowed\n- **All other write operations**: Secret key required\n- **All read operations**: Both key types allowed\n \nUsing a publishable key for restricted operations returns 403 Forbidden.\n","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"**API Key Authentication**\n \nUse your API key in the Authorization header:\n```\nAuthorization: Bearer tybrite_sk_live_YOUR_KEY\n```\n \n**Key Types:**\n \n**Secret Keys (Server-Side Only):**\n- Format: `tybrite_sk_live_*` (production) or `tybrite_sk_test_*` (sandbox)\n- Full read/write access to all endpoints\n- ⚠️ NEVER expose in client-side code or public repositories\n- Required for: every write a shopper does not make for themselves, authentication, payment verification, AI recommendations\n \n**Publishable Keys (Client-Safe):**\n- Format: `tybrite_pk_live_*` (production) or `tybrite_pk_test_*` (sandbox)\n- Catalogue reads, plus the actions a shopper takes for themselves\n- ✅ Safe for client-side JavaScript, mobile apps, and public code\n- Allowed for: browsing products, search, CMS content, pricing queries, cart and wishlist,\n reviews, storefront events, and the Agent API's quotes, cart drafts and checkout intents\n \n**Endpoint-Specific Requirements:**\n- **Authentication endpoints** (`/v1/auth/*`): Secret key required\n- **Payment verification** (`POST /v1/payments/verify`): Secret key required\n- **AI Recommendations** (`POST /v1/recommendations`): Secret key required\n- **Semantic Search** (`POST /v1/search`): Both key types allowed (read-only operation)\n- **Shopper actions** (cart, wishlist, reviews, storefront events, Agent API quotes, cart drafts and checkout intents): Both key types allowed\n- **All other write operations**: Secret key required\n- **All read operations**: Both key types allowed\n \nUsing a publishable key for restricted operations returns 403 Forbidden.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"tybritelabs","siteName":"Galactic Core API Documentation","title":"Create an account from a guest order - Galactic Core API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T00:30:05.678Z","originalFileLocation":"api-reference/authentication/create-an-account-from-a-guest-order.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=\"Turn a guest order into an account. The guest sets a password on the order confirmation page and receives a signed-in session for a new account that owns that order and saves its shipping address. The credential is the claim_token returned once by POST /v1/orders when the order was created. The account is bound to the order\u0026#x27;s email address; no other address can be claimed. A token works once and expires (7 days by default; the store can change this or turn the feature off). The token proves possession of the order confirmation, not of the mailbox, so the account starts with email_verified: false. It becomes verified when the shopper signs in with an emailed code or resets their password; at that moment every session issued before is revoked and, unless the password was just replaced, a new password is required at the next password sign-in. Refusals. A token that is wrong, spent, expired, for another store or environment, or for an unknown order answers 404 not_found, identically. Once the token is valid: 409 account_exists when the address already has an account at this store (nothing is linked; the shopper signs in), and 409 claim_unavailable when the address already has other orders with this store (the shopper registers with an emailed code, which proves the mailbox and brings the orders together). A weak password is 400 weak_password, checked first, as on registration. Only the order for this token is claimed. Other guest orders for the same address are not linked. Secret key required. This endpoint requires a secret key (tybrite_sk_*), called from the storefront\u0026#x27;s server. Publishable keys answer 403 forbidden. Attempt limits: 10 attempts per order per hour and 600 per store per hour; past either, the call answers 429 rate_limited with a Retry-After header. After 10 wrong tokens an order\u0026#x27;s token is locked.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Galactic Core API Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_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/tybritelabs/d0xYWWdjx3Q9ZfW_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create an account from a guest order - Galactic Core API Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Turn a guest order into an account. The guest sets a password on the order confirmation page and receives a signed-in session for a new account that owns that order and saves its shipping address. The credential is the claim_token returned once by POST /v1/orders when the order was created. The account is bound to the order\u0026#x27;s email address; no other address can be claimed. A token works once and expires (7 days by default; the store can change this or turn the feature off). The token proves possession of the order confirmation, not of the mailbox, so the account starts with email_verified: false. It becomes verified when the shopper signs in with an emailed code or resets their password; at that moment every session issued before is revoked and, unless the password was just replaced, a new password is required at the next password sign-in. Refusals. A token that is wrong, spent, expired, for another store or environment, or for an unknown order answers 404 not_found, identically. Once the token is valid: 409 account_exists when the address already has an account at this store (nothing is linked; the shopper signs in), and 409 claim_unavailable when the address already has other orders with this store (the shopper registers with an emailed code, which proves the mailbox and brings the orders together). A weak password is 400 weak_password, checked first, as on registration. Only the order for this token is claimed. Other guest orders for the same address are not linked. Secret key required. This endpoint requires a secret key (tybrite_sk_*), called from the storefront\u0026#x27;s server. Publishable keys answer 403 forbidden. Attempt limits: 10 attempts per order per hour and 600 per store per hour; past either, the call answers 429 rate_limited with a Retry-After header. After 10 wrong tokens an order\u0026#x27;s token is locked.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Galactic Core API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tybritelabs.mintlify.app/_mintlify/api/og/v2?division=Authentication\u0026amp;title=Create+an+account+from+a+guest+order\u0026amp;description=Turn+a+guest+order+into+an+account.+The+guest+sets+a+password+on+the+order+confirmation+page+and%0Areceives+a+signed-in+session+for+a+new+account+that+owns+that+o\u0026amp;theme=b0c5a7325a83e0755b69afc3\u0026amp;signature=9ed155c446d29bb557fa0be50af18920bf2764b40854ca1b861d7eee46c8962f\">\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=\"Create an account from a guest order - Galactic Core API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Turn a guest order into an account. The guest sets a password on the order confirmation page and receives a signed-in session for a new account that owns that order and saves its shipping address. The credential is the claim_token returned once by POST /v1/orders when the order was created. The account is bound to the order\u0026#x27;s email address; no other address can be claimed. A token works once and expires (7 days by default; the store can change this or turn the feature off). The token proves possession of the order confirmation, not of the mailbox, so the account starts with email_verified: false. It becomes verified when the shopper signs in with an emailed code or resets their password; at that moment every session issued before is revoked and, unless the password was just replaced, a new password is required at the next password sign-in. Refusals. A token that is wrong, spent, expired, for another store or environment, or for an unknown order answers 404 not_found, identically. Once the token is valid: 409 account_exists when the address already has an account at this store (nothing is linked; the shopper signs in), and 409 claim_unavailable when the address already has other orders with this store (the shopper registers with an emailed code, which proves the mailbox and brings the orders together). A weak password is 400 weak_password, checked first, as on registration. Only the order for this token is claimed. Other guest orders for the same address are not linked. Secret key required. This endpoint requires a secret key (tybrite_sk_*), called from the storefront\u0026#x27;s server. Publishable keys answer 403 forbidden. Attempt limits: 10 attempts per order per hour and 600 per store per hour; past either, the call answers 429 rate_limited with a Retry-After header. After 10 wrong tokens an order\u0026#x27;s token is locked.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tybritelabs.mintlify.app/_mintlify/api/og/v2?division=Authentication\u0026amp;title=Create+an+account+from+a+guest+order\u0026amp;description=Turn+a+guest+order+into+an+account.+The+guest+sets+a+password+on+the+order+confirmation+page+and%0Areceives+a+signed-in+session+for+a+new+account+that+owns+that+o\u0026amp;theme=b0c5a7325a83e0755b69afc3\u0026amp;signature=9ed155c446d29bb557fa0be50af18920bf2764b40854ca1b861d7eee46c8962f\">\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/tybritelabs/d0xYWWdjx3Q9ZfW_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Galactic Core API Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3b82f6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/authentication/create-an-account-from-a-guest-order.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tybritelabs.com/#organization\",\"name\":\"Galactic Core API Documentation\",\"url\":\"https://docs.tybritelabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tybritelabs/9cNSmgnBxs-QU_UC/branding/gc-long-blue.png?fit=max\u0026auto=format\u0026n=9cNSmgnBxs-QU_UC\u0026q=85\u0026s=88d64ea989973d874ed73437459487f7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tybritelabs.com#website\",\"name\":\"Galactic Core API Documentation\",\"url\":\"https://docs.tybritelabs.com\",\"publisher\":{\"@id\":\"https://docs.tybritelabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order#webpage\",\"url\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order\",\"name\":\"Create an account from a guest order\",\"description\":\"Turn a guest order into an account. The guest sets a password on the order confirmation page and receives a signed-in session for a new account that owns that order and saves its shipping address. The credential is the claim_token returned once by POST /v1/orders when the order was created. The account is bound to the order's email address; no other address can be claimed. A token works once and expires (7 days by default; the store can change this or turn the feature off). The token proves possession of the order confirmation, not of the mailbox, so the account starts with email_verified: false. It becomes verified when the shopper signs in with an emailed code or resets their password; at that moment every session issued before is revoked and, unless the password was just replaced, a new password is required at the next password sign-in. Refusals. A token that is wrong, spent, expired, for another store or environment, or for an unknown order answers 404 not_found, identically. Once the token is valid: 409 account_exists when the address already has an account at this store (nothing is linked; the shopper signs in), and 409 claim_unavailable when the address already has other orders with this store (the shopper registers with an emailed code, which proves the mailbox and brings the orders together). A weak password is 400 weak_password, checked first, as on registration. Only the order for this token is claimed. Other guest orders for the same address are not linked. Secret key required. This endpoint requires a secret key (tybrite_sk_*), called from the storefront's server. Publishable keys answer 403 forbidden. Attempt limits: 10 attempts per order per hour and 600 per store per hour; past either, the call answers 429 rate_limited with a Retry-After header. After 10 wrong tokens an order's token is locked.\",\"dateModified\":\"2026-10-29T00:30:05.678Z\",\"isPartOf\":{\"@id\":\"https://docs.tybritelabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Authentication\",\"item\":\"https://docs.tybritelabs.com/api-reference/authentication/register-customer-account\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create an account from a guest order\",\"item\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order#apireference\",\"headline\":\"Create an account from a guest order\",\"name\":\"Create an account from a guest order\",\"description\":\"Turn a guest order into an account. The guest sets a password on the order confirmation page and receives a signed-in session for a new account that owns that order and saves its shipping address. The credential is the claim_token returned once by POST /v1/orders when the order was created. The account is bound to the order's email address; no other address can be claimed. A token works once and expires (7 days by default; the store can change this or turn the feature off). The token proves possession of the order confirmation, not of the mailbox, so the account starts with email_verified: false. It becomes verified when the shopper signs in with an emailed code or resets their password; at that moment every session issued before is revoked and, unless the password was just replaced, a new password is required at the next password sign-in. Refusals. A token that is wrong, spent, expired, for another store or environment, or for an unknown order answers 404 not_found, identically. Once the token is valid: 409 account_exists when the address already has an account at this store (nothing is linked; the shopper signs in), and 409 claim_unavailable when the address already has other orders with this store (the shopper registers with an emailed code, which proves the mailbox and brings the orders together). A weak password is 400 weak_password, checked first, as on registration. Only the order for this token is claimed. Other guest orders for the same address are not linked. Secret key required. This endpoint requires a secret key (tybrite_sk_*), called from the storefront's server. Publishable keys answer 403 forbidden. Attempt limits: 10 attempts per order per hour and 600 per store per hour; past either, the call answers 429 rate_limited with a Retry-After header. After 10 wrong tokens an order's token is locked.\",\"url\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tybritelabs.com/api-reference/authentication/create-an-account-from-a-guest-order#webpage\"},\"dateModified\":\"2026-10-29T00:30:05.678Z\",\"publisher\":{\"@id\":\"https://docs.tybritelabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tybritelabs.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Galactic Core API Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Galactic Core API Documentation","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"gauge","href":"https://gc.tybritelabs.com/dashboard"},{"anchor":"GitHub","icon":"github","href":"https://github.com/tybrite"},{"anchor":"Support","icon":"envelope","href":"mailto:support@tybrite.com"}]},"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":""}]},{"tab":"API Reference","groups":[{"group":"Reference","pages":[{"title":"Introduction","href":"/api-reference/introduction"}]},{"group":"System","pages":[{"title":"API information","deprecated":null,"version":null,"openapi":"/openapi.yaml get /","href":"/api-reference/system/api-information"},{"title":"Health check","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/health","href":"/api-reference/system/health-check"},{"title":"Get comprehensive store information","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/store/info","href":"/api-reference/system/get-comprehensive-store-information"}]},{"group":"Store","pages":[{"title":"Get the store profile","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/store/profile","href":"/api-reference/store/get-the-store-profile"},{"title":"List published policies","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/store/policies","href":"/api-reference/store/list-published-policies"},{"title":"Get a published policy","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/store/policies/{slug}","href":"/api-reference/store/get-a-published-policy"}]},{"group":"Products","pages":[{"title":"List products with filtering and pagination","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/products","href":"/api-reference/products/list-products-with-filtering-and-pagination"},{"title":"List brands","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/brands","href":"/api-reference/products/list-brands"},{"title":"List the values a product list can be filtered by","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/products/facets","href":"/api-reference/products/list-the-values-a-product-list-can-be-filtered-by"},{"title":"Get product by ID or variant ID","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/products/{id}","href":"/api-reference/products/get-product-by-id-or-variant-id"},{"title":"Get product by SEO-friendly slug","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/products/by-slug/{slug}","href":"/api-reference/products/get-product-by-seo-friendly-slug"},{"title":"Get a variant's specifications","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/products/{id}/specifications","href":"/api-reference/products/get-a-variants-specifications"},{"title":"Get a product's custom fields","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/products/{id}/custom-fields","href":"/api-reference/products/get-a-products-custom-fields"},{"title":"List product specifications","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/product-specifications","href":"/api-reference/products/list-product-specifications"},{"title":"List product collections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/product-collections","href":"/api-reference/products/list-product-collections"},{"title":"Get product collection by ID","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/product-collections/{id}","href":"/api-reference/products/get-product-collection-by-id"},{"title":"Get items in a product collection","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/product-collections/{id}/items","href":"/api-reference/products/get-items-in-a-product-collection"}]},{"group":"Taxonomy","pages":[{"title":"List categories","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/categories","href":"/api-reference/taxonomy/list-categories"},{"title":"Get category","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/categories/{id}","href":"/api-reference/taxonomy/get-category"},{"title":"List subcategories","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/subcategories","href":"/api-reference/taxonomy/list-subcategories"},{"title":"Get subcategory by ID","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/subcategories/{id}","href":"/api-reference/taxonomy/get-subcategory-by-id"}]},{"group":"Orders","pages":[{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/orders","href":"/api-reference/orders/list-orders"},{"title":"Create order","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/orders","href":"/api-reference/orders/create-order"},{"title":"Get order details","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/orders/{id}","href":"/api-reference/orders/get-order-details"},{"title":"Update order","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/orders/{id}","href":"/api-reference/orders/update-order"},{"title":"Reserve stock for checkout","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/checkout/reserve","href":"/api-reference/orders/reserve-stock-for-checkout"}]},{"group":"Payments","pages":[{"title":"Get available payment methods","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/payments/methods","href":"/api-reference/payments/get-available-payment-methods"},{"title":"Initialize payment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/payments/initialize","href":"/api-reference/payments/initialize-payment"},{"title":"Verify payment status","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/payments/verify","href":"/api-reference/payments/verify-payment-status"}]},{"group":"Cart \u0026 Wishlist","pages":[{"title":"Get cart","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/cart","href":"/api-reference/cart-\u0026-wishlist/get-cart"},{"title":"Clear cart","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/cart","href":"/api-reference/cart-\u0026-wishlist/clear-cart"},{"title":"Add to cart","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/cart/items","href":"/api-reference/cart-\u0026-wishlist/add-to-cart"},{"title":"Remove cart item","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/cart/items/{id}","href":"/api-reference/cart-\u0026-wishlist/remove-cart-item"},{"title":"Update cart item","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/cart/items/{id}","href":"/api-reference/cart-\u0026-wishlist/update-cart-item"},{"title":"Merge carts","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/cart/merge","href":"/api-reference/cart-\u0026-wishlist/merge-carts"},{"title":"Get wishlist","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/wishlist","href":"/api-reference/cart-\u0026-wishlist/get-wishlist"},{"title":"Add to wishlist","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/wishlist","href":"/api-reference/cart-\u0026-wishlist/add-to-wishlist"},{"title":"Remove from wishlist","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/wishlist/{id}","href":"/api-reference/cart-\u0026-wishlist/remove-from-wishlist"},{"title":"Move wishlist item to cart","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/wishlist/move-to-cart","href":"/api-reference/cart-\u0026-wishlist/move-wishlist-item-to-cart"},{"title":"Ask to be told when a variant is back in stock","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/variants/{id}/notify-when-available","href":"/api-reference/cart-\u0026-wishlist/ask-to-be-told-when-a-variant-is-back-in-stock"},{"title":"Record a guest's contact details at checkout","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/cart/checkout-contact","href":"/api-reference/cart-\u0026-wishlist/record-a-guests-contact-details-at-checkout"},{"title":"Restore the cart behind a recovery link","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/cart/checkout-recover","href":"/api-reference/cart-\u0026-wishlist/restore-the-cart-behind-a-recovery-link"}]},{"group":"Marketplace","pages":[{"title":"Check out a multi-merchant cart","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/cart/checkout","href":"/api-reference/marketplace/check-out-a-multi-merchant-cart"},{"title":"Quote a multi-merchant checkout","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/cart/checkout/quote","href":"/api-reference/marketplace/quote-a-multi-merchant-checkout"},{"title":"Get the signed-in shopper's unified marketplace profile","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/me","href":"/api-reference/marketplace/get-the-signed-in-shoppers-unified-marketplace-profile"},{"title":"Get the signed-in shopper's marketplace wallet","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/me/wallet","href":"/api-reference/marketplace/get-the-signed-in-shoppers-marketplace-wallet"},{"title":"Get marketplace information","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/marketplace/info","href":"/api-reference/marketplace/get-marketplace-information"},{"title":"Get placements for a slot","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/marketplace/ad-slots/{slot_key}","href":"/api-reference/marketplace/get-placements-for-a-slot"},{"title":"Log an ad impression or click","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/marketplace/ad-events","href":"/api-reference/marketplace/log-an-ad-impression-or-click"},{"title":"List operator-curated merchandising sections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/marketplace/collections","href":"/api-reference/marketplace/list-operator-curated-merchandising-sections"},{"title":"Get one curated section with its members","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/marketplace/collections/{slug}","href":"/api-reference/marketplace/get-one-curated-section-with-its-members"}]},{"group":"Recommendations","pages":[{"title":"Get product recommendations","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/recommendations","href":"/api-reference/recommendations/get-product-recommendations"}]},{"group":"Discovery","pages":[{"title":"Most-viewed products (windowed)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/discovery/most-viewed","href":"/api-reference/discovery/most-viewed-products-windowed"},{"title":"Most-added-to-cart products (windowed)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/discovery/most-added-to-cart","href":"/api-reference/discovery/most-added-to-cart-products-windowed"},{"title":"Best-converting products (windowed)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/discovery/best-converting","href":"/api-reference/discovery/best-converting-products-windowed"}]},{"group":"Events","pages":[{"title":"Record a storefront product event","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/events","href":"/api-reference/events/record-a-storefront-product-event"}]},{"group":"Tax","pages":[{"title":"Preview tax for a cart before checkout","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/tax/preview","href":"/api-reference/tax/preview-tax-for-a-cart-before-checkout"}]},{"group":"Analytics","pages":[{"title":"Record a storefront analytics event","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/analytics/collect","href":"/api-reference/analytics/record-a-storefront-analytics-event"}]},{"group":"Agent","pages":[{"title":"List the agent tools","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/capabilities","href":"/api-reference/agent/list-the-agent-tools"},{"title":"Search by constraints","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/search","href":"/api-reference/agent/search-by-constraints"},{"title":"Turn a request into search constraints","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/interpret","href":"/api-reference/agent/turn-a-request-into-search-constraints"},{"title":"Get a product dossier","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/products/{id}/context","href":"/api-reference/agent/get-a-product-dossier"},{"title":"Compare products","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/compare","href":"/api-reference/agent/compare-products"},{"title":"Check a product against constraints","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/fit","href":"/api-reference/agent/check-a-product-against-constraints"},{"title":"Find alternatives to a product","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/alternatives","href":"/api-reference/agent/find-alternatives-to-a-product"},{"title":"Price a basket","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/quote","href":"/api-reference/agent/price-a-basket"},{"title":"Create a cart draft","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/cart-drafts","href":"/api-reference/agent/create-a-cart-draft"},{"title":"Draft a cart from an intent","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/cart-drafts/from-intent","href":"/api-reference/agent/draft-a-cart-from-an-intent"},{"title":"Get a cart draft","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/cart-drafts/{id}","href":"/api-reference/agent/get-a-cart-draft"},{"title":"Add a draft to the shopper's cart","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/cart-drafts/{id}/apply","href":"/api-reference/agent/add-a-draft-to-the-shoppers-cart"},{"title":"Get insights on a cart","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/cart-insights","href":"/api-reference/agent/get-insights-on-a-cart"},{"title":"Get the shopper's personalisation consent","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/me/consent","href":"/api-reference/agent/get-the-shoppers-personalisation-consent"},{"title":"Grant or revoke personalisation consent","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/consent","href":"/api-reference/agent/grant-or-revoke-personalisation-consent"},{"title":"Get the shopper's own context","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/me/context","href":"/api-reference/agent/get-the-shoppers-own-context"},{"title":"Get wishlist insights","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/me/wishlist-insights","href":"/api-reference/agent/get-wishlist-insights"},{"title":"Get reorder suggestions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/me/reorder-suggestions","href":"/api-reference/agent/get-reorder-suggestions"},{"title":"Get an order's status","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/orders/{id}/status","href":"/api-reference/agent/get-an-orders-status"},{"title":"Request a return for an order","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/orders/{id}/returns","href":"/api-reference/agent/request-a-return-for-an-order"},{"title":"List the shopper's standing instructions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/me/mandates","href":"/api-reference/agent/list-the-shoppers-standing-instructions"},{"title":"Create a standing instruction","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/mandates","href":"/api-reference/agent/create-a-standing-instruction"},{"title":"Cancel a standing instruction","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/mandates/{id}/cancel","href":"/api-reference/agent/cancel-a-standing-instruction"},{"title":"Subscribe \u0026 Save offers on a product","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/products/{id}/subscribe-save","href":"/api-reference/agent/subscribe-\u0026-save-offers-on-a-product"},{"title":"List the shopper's Subscribe \u0026 Save subscriptions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/me/shopper-subscriptions","href":"/api-reference/agent/list-the-shoppers-subscribe-\u0026-save-subscriptions"},{"title":"Start a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/shopper-subscriptions","href":"/api-reference/agent/start-a-subscribe-\u0026-save-subscription"},{"title":"Pause a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/shopper-subscriptions/{id}/pause","href":"/api-reference/agent/pause-a-subscribe-\u0026-save-subscription"},{"title":"Skip the next Subscribe \u0026 Save delivery","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/shopper-subscriptions/{id}/skip","href":"/api-reference/agent/skip-the-next-subscribe-\u0026-save-delivery"},{"title":"Cancel a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/shopper-subscriptions/{id}/cancel","href":"/api-reference/agent/cancel-a-subscribe-\u0026-save-subscription"},{"title":"Change a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/me/shopper-subscriptions/{id}/update","href":"/api-reference/agent/change-a-subscribe-\u0026-save-subscription"},{"title":"Create a checkout intent","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/checkout-intents","href":"/api-reference/agent/create-a-checkout-intent"},{"title":"Get a checkout intent","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/checkout-intents/{id}","href":"/api-reference/agent/get-a-checkout-intent"},{"title":"Confirm a checkout intent","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/checkout-intents/{id}/confirm","href":"/api-reference/agent/confirm-a-checkout-intent"},{"title":"Cancel a checkout intent","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/agent/checkout-intents/{id}/cancel","href":"/api-reference/agent/cancel-a-checkout-intent"},{"title":"Get the store's policies","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/store-policies","href":"/api-reference/agent/get-the-stores-policies"},{"title":"Get AI credit usage","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/agent/usage","href":"/api-reference/agent/get-ai-credit-usage"}]},{"group":"Search","pages":[{"title":"Simple text search","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/search","href":"/api-reference/search/simple-text-search"},{"title":"Semantic search","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/search","href":"/api-reference/search/semantic-search"},{"title":"Type-ahead suggestions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/search/autocomplete","href":"/api-reference/search/type-ahead-suggestions"}]},{"group":"Authentication","pages":[{"title":"Register customer account","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/register","href":"/api-reference/authentication/register-customer-account"},{"title":"Confirm a new account","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/register/verify","href":"/api-reference/authentication/confirm-a-new-account"},{"title":"Resend the confirmation email","description":"Send a new confirmation code and link for an address that has registered and not yet confirmed.\nThe earlier code stops working. The call answers `202` with the same body for every address, and\nsends one email: a fresh confirmation for a pending registration, or the notice that an account\nexists when the address already has one.\n\nAt most one email per address is sent every 60 seconds and five an hour; a call past that is\nanswered `202` and sends nothing.\n\n**Secret key required.** This endpoint requires a secret key (`tybrite_sk_*`). Publishable keys\nanswer `403 forbidden`. Account calls are made from a server, which then holds the shopper's session.\n\n**Attempt limits:** with a secret key, past 5 attempts for one email address from one store in\n15 minutes, the call is slowed to one attempt every 60 seconds; other calls for that address\nanswer `429 rate_limited` with a `Retry-After` header giving the seconds until the next attempt is\naccepted. With a publishable key, attempts are limited per calling address: 20 per address and email,\nand 60 per address, in 15 minutes. Across every store and address, past 10 attempts for one\nemail the call is slowed to one every 60 seconds. Every attempt counts, successful or not,\nand an address with no account is treated identically.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/register/resend","href":"/api-reference/authentication/resend-the-confirmation-email"},{"title":"Create an account from a guest order","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/claim-account","href":"/api-reference/authentication/create-an-account-from-a-guest-order"},{"title":"Login with email and password","description":"Authenticate with an email address and password. Returns the shopper, the customer record and a\nsession.\n\nEvery refusal that depends on the account answers `401 invalid_credentials` with the same body: an\naddress with no account, a wrong password, an account that has not been confirmed, a disabled\naccount, and an account that has no password (one created for sign-in by emailed code). The\nresponse never tells which. `401 password_reset_required` is returned only after the correct\npassword, for an account that must set a new password with `POST /v1/auth/password/forgot` and\n`POST /v1/auth/password/reset`.\n\nRepeated wrong passwords on one account lock it for a short period, during which every call for that\naccount answers `429 rate_limited` with a `Retry-After` header.\n\n**Secret key required.** This endpoint requires a secret key (`tybrite_sk_*`). Publishable keys\nanswer `403 forbidden`. Account calls are made from a server, which then holds the shopper's session.\n\n**Attempt limits:** with a secret key, past 10 attempts for one email address from one store in\n15 minutes, the call is slowed to one attempt every 15 seconds; other calls for that address\nanswer `429 rate_limited` with a `Retry-After` header giving the seconds until the next attempt is\naccepted. With a publishable key, attempts are limited per calling address: 20 per address and email,\nand 60 per address, in 15 minutes. Across every store and address, past 50 attempts for one\nemail the call is slowed to one every 10 seconds. Every attempt counts, successful or not,\nand an address with no account is treated identically.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/login","href":"/api-reference/authentication/login-with-email-and-password"},{"title":"Logout current session","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/logout","href":"/api-reference/authentication/logout-current-session"},{"title":"Send a sign-in code","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/magic-link","href":"/api-reference/authentication/send-a-sign-in-code"},{"title":"Verify a sign-in code","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/verify-otp","href":"/api-reference/authentication/verify-a-sign-in-code"},{"title":"Request a password reset","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/password/forgot","href":"/api-reference/authentication/request-a-password-reset"},{"title":"Reset a password","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/password/reset","href":"/api-reference/authentication/reset-a-password"},{"title":"Change or set a password","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/password/change","href":"/api-reference/authentication/change-or-set-a-password"},{"title":"Refresh access token","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/auth/refresh","href":"/api-reference/authentication/refresh-access-token"},{"title":"Get current user","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/auth/me","href":"/api-reference/authentication/get-current-user"}]},{"group":"Customers","pages":[{"title":"Create customer","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers","href":"/api-reference/customers/create-customer"},{"title":"Get customer details","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/{id}","href":"/api-reference/customers/get-customer-details"},{"title":"Update customer","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/customers/{id}","href":"/api-reference/customers/update-customer"},{"title":"List a shopper's saved addresses","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/{id}/addresses","href":"/api-reference/customers/list-a-shoppers-saved-addresses"},{"title":"Save a new address","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/addresses","href":"/api-reference/customers/save-a-new-address"},{"title":"Delete a saved address","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/customers/{id}/addresses/{addressId}","href":"/api-reference/customers/delete-a-saved-address"},{"title":"Update a saved address","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/customers/{id}/addresses/{addressId}","href":"/api-reference/customers/update-a-saved-address"},{"title":"List a shopper's Subscribe \u0026 Save subscriptions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/{id}/shopper-subscriptions","href":"/api-reference/customers/list-a-shoppers-subscribe-\u0026-save-subscriptions"},{"title":"Get a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/{id}/shopper-subscriptions/{subscriptionId}","href":"/api-reference/customers/get-a-subscribe-\u0026-save-subscription"},{"title":"Change a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/customers/{id}/shopper-subscriptions/{subscriptionId}","href":"/api-reference/customers/change-a-subscribe-\u0026-save-subscription"},{"title":"Pause a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/shopper-subscriptions/{subscriptionId}/pause","href":"/api-reference/customers/pause-a-subscribe-\u0026-save-subscription"},{"title":"Resume a paused Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/shopper-subscriptions/{subscriptionId}/resume","href":"/api-reference/customers/resume-a-paused-subscribe-\u0026-save-subscription"},{"title":"Skip the next Subscribe \u0026 Save delivery","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/shopper-subscriptions/{subscriptionId}/skip-next","href":"/api-reference/customers/skip-the-next-subscribe-\u0026-save-delivery"},{"title":"Cancel a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/shopper-subscriptions/{subscriptionId}/cancel","href":"/api-reference/customers/cancel-a-subscribe-\u0026-save-subscription"},{"title":"Add a card to a Subscribe \u0026 Save subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/shopper-subscriptions/{subscriptionId}/payment-method","href":"/api-reference/customers/add-a-card-to-a-subscribe-\u0026-save-subscription"},{"title":"List a shopper's saved cards","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/{id}/payment-methods","href":"/api-reference/customers/list-a-shoppers-saved-cards"},{"title":"Remove a saved card","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/customers/{id}/payment-methods/{paymentMethodId}","href":"/api-reference/customers/remove-a-saved-card"},{"title":"List a shopper's delivered items","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/customers/{id}/fulfilments","href":"/api-reference/customers/list-a-shoppers-delivered-items"},{"title":"Reveal the codes of a delivered item","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/customers/{id}/fulfilments/{fulfilment_id}/reveal","href":"/api-reference/customers/reveal-the-codes-of-a-delivered-item"},{"title":"Download a file the shopper bought","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/fulfilment/downloads/{fulfilment_id}/{asset_id}","href":"/api-reference/customers/download-a-file-the-shopper-bought"}]},{"group":"Gift Cards","pages":[{"title":"List gift cards","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/gift-cards","href":"/api-reference/gift-cards/list-gift-cards"},{"title":"Check gift card balance","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/gift-cards/check","href":"/api-reference/gift-cards/check-gift-card-balance"}]},{"group":"Promotions","pages":[{"title":"List promotions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/promotions","href":"/api-reference/promotions/list-promotions"},{"title":"Get promotion details","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/promotions/{id}","href":"/api-reference/promotions/get-promotion-details"},{"title":"Calculate a promotion's discount for a cart","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/promotions/{id}/calculate","href":"/api-reference/promotions/calculate-a-promotions-discount-for-a-cart"},{"title":"Find the best promotion for a cart","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/promotions/calculate-best","href":"/api-reference/promotions/find-the-best-promotion-for-a-cart"},{"title":"List the Subscribe \u0026 Save offers for a product","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/subscribe-save/offers","href":"/api-reference/promotions/list-the-subscribe-\u0026-save-offers-for-a-product"},{"title":"Quote the price of a Subscribe \u0026 Save offer","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/subscribe-save/quote","href":"/api-reference/promotions/quote-the-price-of-a-subscribe-\u0026-save-offer"}]},{"group":"Campaigns","pages":[{"title":"List running campaigns","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/campaigns","href":"/api-reference/campaigns/list-running-campaigns"},{"title":"Get a running campaign","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/campaigns/{id}","href":"/api-reference/campaigns/get-a-running-campaign"}]},{"group":"CMS","pages":[{"title":"List blog posts","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/posts","href":"/api-reference/cms/list-blog-posts"},{"title":"Get blog post by slug","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/posts/{slug}","href":"/api-reference/cms/get-blog-post-by-slug"},{"title":"Most-read blog posts","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/posts/trending","href":"/api-reference/cms/most-read-blog-posts"},{"title":"Posts related to this one","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/posts/{slug}/related","href":"/api-reference/cms/posts-related-to-this-one"},{"title":"List lookbooks","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/lookbooks","href":"/api-reference/cms/list-lookbooks"},{"title":"Get lookbook details by slug","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/lookbooks/{slug}","href":"/api-reference/cms/get-lookbook-details-by-slug"},{"title":"Subscribe an email to the store's newsletter","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/newsletter/subscribe","href":"/api-reference/cms/subscribe-an-email-to-the-stores-newsletter"},{"title":"Get a lead form","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/lead-forms/{slug}","href":"/api-reference/cms/get-a-lead-form"},{"title":"Get a lead form token","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/lead-forms/{slug}/token","href":"/api-reference/cms/get-a-lead-form-token"},{"title":"Submit a lead form","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/lead-forms/{slug}/submit","href":"/api-reference/cms/submit-a-lead-form"}]},{"group":"Pricing","pages":[{"title":"Get prices for multiple products with dynamic pricing and multi-currency support","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/prices/products","href":"/api-reference/pricing/get-prices-for-multiple-products-with-dynamic-pricing-and-multi-currency-support"},{"title":"Get single product pricing with dynamic pricing and multi-currency support","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/prices/products/{id}","href":"/api-reference/pricing/get-single-product-pricing-with-dynamic-pricing-and-multi-currency-support"},{"title":"Get product pricing by SEO-friendly slug with dynamic pricing and multi-currency support","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/prices/products/by-slug/{slug}","href":"/api-reference/pricing/get-product-pricing-by-seo-friendly-slug-with-dynamic-pricing-and-multi-currency-support"}]},{"group":"Messaging","pages":[{"title":"List message threads","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/messaging/threads","href":"/api-reference/messaging/list-message-threads"},{"title":"Get thread details","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/messaging/threads/{id}","href":"/api-reference/messaging/get-thread-details"},{"title":"Update thread","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/messaging/threads/{id}","href":"/api-reference/messaging/update-thread"},{"title":"Get messages in a thread","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/messaging/threads/{id}/messages","href":"/api-reference/messaging/get-messages-in-a-thread"},{"title":"Send a message to a thread","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/messaging/threads/{id}/messages","href":"/api-reference/messaging/send-a-message-to-a-thread"},{"title":"Start a new conversation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/messaging/conversations","href":"/api-reference/messaging/start-a-new-conversation"},{"title":"Mark thread as read","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/messaging/threads/{id}/read","href":"/api-reference/messaging/mark-thread-as-read"},{"title":"Delete message","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/messaging/messages/{id}","href":"/api-reference/messaging/delete-message"},{"title":"Edit message","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/messaging/messages/{id}","href":"/api-reference/messaging/edit-message"},{"title":"Subscribe to a thread's new messages in realtime (WebSocket)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/messaging/threads/{id}/subscribe","href":"/api-reference/messaging/subscribe-to-a-threads-new-messages-in-realtime-websocket"}]},{"group":"Shipping","pages":[{"title":"Get shipping zones and pricing tiers","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/shipping/zones","href":"/api-reference/shipping/get-shipping-zones-and-pricing-tiers"},{"title":"Calculate shipping fee","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/shipping/calculate","href":"/api-reference/shipping/calculate-shipping-fee"},{"title":"Track a shipment","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/shipping/tracking/{carrier}/{number}","href":"/api-reference/shipping/track-a-shipment"}]},{"group":"GC Connect","pages":[{"title":"Validate an authorization request","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/connect/authorize","href":"/api-reference/gc-connect/validate-an-authorization-request"},{"title":"Approve the authorization (merchant consent)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/connect/authorize","href":"/api-reference/gc-connect/approve-the-authorization-merchant-consent"},{"title":"Exchange authorization code for API keys","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/connect/token","href":"/api-reference/gc-connect/exchange-authorization-code-for-api-keys"},{"title":"Revoke a store connection","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/connect/revoke","href":"/api-reference/gc-connect/revoke-a-store-connection"},{"title":"List active store connections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/connect/sessions","href":"/api-reference/gc-connect/list-active-store-connections"},{"title":"List the linked store's team","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/connect/team","href":"/api-reference/gc-connect/list-the-linked-stores-team"}]},{"group":"Reviews","pages":[{"title":"List reviews for a product","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/reviews","href":"/api-reference/reviews/list-reviews-for-a-product"},{"title":"Submit a product review","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/reviews","href":"/api-reference/reviews/submit-a-product-review"},{"title":"Get a single review","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/reviews/{id}","href":"/api-reference/reviews/get-a-single-review"},{"title":"Delete your own review","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/reviews/{id}","href":"/api-reference/reviews/delete-your-own-review"},{"title":"Mark a review as helpful","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/reviews/{id}/helpful","href":"/api-reference/reviews/mark-a-review-as-helpful"}]},{"group":"Returns","pages":[{"title":"List return reason codes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/returns/reasons","href":"/api-reference/returns/list-return-reason-codes"},{"title":"Check whether an order can still be returned","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/returns/eligibility","href":"/api-reference/returns/check-whether-an-order-can-still-be-returned"},{"title":"Get the customer's store credit balance","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/returns/store-credit","href":"/api-reference/returns/get-the-customers-store-credit-balance"},{"title":"List the signed-in customer's returns","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/returns","href":"/api-reference/returns/list-the-signed-in-customers-returns"},{"title":"Lodge a return","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/returns","href":"/api-reference/returns/lodge-a-return"},{"title":"Get one of the customer's returns","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/returns/{id}","href":"/api-reference/returns/get-one-of-the-customers-returns"},{"title":"Accept a store credit offer","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/returns/{id}/accept-credit","href":"/api-reference/returns/accept-a-store-credit-offer"},{"title":"Request a refund instead of store credit","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/returns/{id}/request-refund","href":"/api-reference/returns/request-a-refund-instead-of-store-credit"}]},{"group":"Disputes","pages":[{"title":"List dispute reason codes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/disputes/reasons","href":"/api-reference/disputes/list-dispute-reason-codes"},{"title":"List the shopper's disputes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/disputes","href":"/api-reference/disputes/list-the-shoppers-disputes"},{"title":"Open a dispute","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/disputes","href":"/api-reference/disputes/open-a-dispute"},{"title":"Get a dispute","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/disputes/{id}","href":"/api-reference/disputes/get-a-dispute"},{"title":"Cancel a dispute","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/disputes/{id}/cancel","href":"/api-reference/disputes/cancel-a-dispute"},{"title":"Add a message to a dispute","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/disputes/{id}/messages","href":"/api-reference/disputes/add-a-message-to-a-dispute"}]},{"group":"B2B","pages":[{"title":"List your requests for quote","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/rfqs","href":"/api-reference/b2b/list-your-requests-for-quote"},{"title":"Request a quote","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/b2b/rfqs","href":"/api-reference/b2b/request-a-quote"},{"title":"Get one of your RFQs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/rfqs/{id}","href":"/api-reference/b2b/get-one-of-your-rfqs"},{"title":"Get a quote addressed to you","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/quotes/{id}","href":"/api-reference/b2b/get-a-quote-addressed-to-you"},{"title":"Accept a quote","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/b2b/quotes/{id}/accept","href":"/api-reference/b2b/accept-a-quote"},{"title":"Reject a quote","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/b2b/quotes/{id}/reject","href":"/api-reference/b2b/reject-a-quote"},{"title":"List your purchase orders","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/purchase-orders","href":"/api-reference/b2b/list-your-purchase-orders"},{"title":"Get one of your purchase orders","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/purchase-orders/{id}","href":"/api-reference/b2b/get-one-of-your-purchase-orders"},{"title":"List your invoices","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/invoices","href":"/api-reference/b2b/list-your-invoices"},{"title":"Get one of your invoices","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/b2b/invoices/{id}","href":"/api-reference/b2b/get-one-of-your-invoices"},{"title":"Start paying an invoice","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/b2b/invoices/{id}/pay","href":"/api-reference/b2b/start-paying-an-invoice"},{"title":"Place a wholesale order directly (self-serve checkout)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/b2b/orders","href":"/api-reference/b2b/place-a-wholesale-order-directly-self-serve-checkout"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/webhook_endpoints","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/webhook_endpoints","href":"/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/webhook_endpoints/{id}","href":"/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/webhook_endpoints/{id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/webhook_endpoints/{id}","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/webhook_endpoints/{id}/test","href":"/api-reference/webhooks/send-a-test-event"},{"title":"List webhook events","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/webhook_events","href":"/api-reference/webhooks/list-webhook-events"},{"title":"Get a webhook event","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/webhook_events/{id}","href":"/api-reference/webhooks/get-a-webhook-event"},{"title":"Retry a webhook event","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/webhook_events/{id}/retry","href":"/api-reference/webhooks/retry-a-webhook-event"}]},{"group":"Ingestion","pages":[{"title":"Ingest a batch of products","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/ingest/products","href":"/api-reference/ingestion/ingest-a-batch-of-products"},{"title":"Get a sample product feed","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/ingest/sample","href":"/api-reference/ingestion/get-a-sample-product-feed"},{"title":"Validate a product feed (no writes)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/ingest/test","href":"/api-reference/ingestion/validate-a-product-feed-no-writes"}]},{"group":"Feeds","pages":[{"title":"Public catalog feed (JSON)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/feeds/{store}/products.json","href":"/api-reference/feeds/public-catalog-feed-json"},{"title":"Public catalog feed (XML)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/feeds/{store}/products.xml","href":"/api-reference/feeds/public-catalog-feed-xml"},{"title":"Store summary for AI assistants (llms.txt)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/feeds/{store}/llms.txt","href":"/api-reference/feeds/store-summary-for-ai-assistants-llmstxt"},{"title":"Full catalog for AI assistants (llms-full.txt)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/feeds/{store}/llms-full.txt","href":"/api-reference/feeds/full-catalog-for-ai-assistants-llms-fulltxt"},{"title":"How an AI assistant connects to a store (agent.json)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/feeds/{store}/agent.json","href":"/api-reference/feeds/how-an-ai-assistant-connects-to-a-store-agentjson"}]},{"group":"Sandbox","pages":[{"title":"Reset your sandbox data","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/reset","href":"/api-reference/sandbox/reset-your-sandbox-data"},{"title":"Reset your sandbox data (alias)","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/sandbox/data","href":"/api-reference/sandbox/reset-your-sandbox-data-alias"},{"title":"Fast-forward sandbox time","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/time","href":"/api-reference/sandbox/fast-forward-sandbox-time"},{"title":"Replay a sandbox webhook event","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/webhooks/replay","href":"/api-reference/sandbox/replay-a-sandbox-webhook-event"},{"title":"Create a sandbox promotion","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/seed/promotion","href":"/api-reference/sandbox/create-a-sandbox-promotion"},{"title":"Create a sandbox gift card","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/seed/gift-card","href":"/api-reference/sandbox/create-a-sandbox-gift-card"},{"title":"Create a sandbox campaign","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/seed/campaign","href":"/api-reference/sandbox/create-a-sandbox-campaign"},{"title":"Create a sandbox B2B buyer account","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/seed/b2b-buyer-account","href":"/api-reference/sandbox/create-a-sandbox-b2b-buyer-account"},{"title":"Create a sandbox dynamic-pricing rule","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/seed/pricing-rule","href":"/api-reference/sandbox/create-a-sandbox-dynamic-pricing-rule"},{"title":"List sandbox stock levels","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/sandbox/stock","href":"/api-reference/sandbox/list-sandbox-stock-levels"},{"title":"Set sandbox stock levels","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/sandbox/stock","href":"/api-reference/sandbox/set-sandbox-stock-levels"},{"title":"Remove every sandbox stock level","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/sandbox/stock","href":"/api-reference/sandbox/remove-every-sandbox-stock-level"},{"title":"Remove one sandbox stock level","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/sandbox/stock/{variant_id}","href":"/api-reference/sandbox/remove-one-sandbox-stock-level"}]}]},{"tab":"TypeScript SDK","pages":[{"title":"TypeScript SDK","href":"/sdk/introduction"}]},{"tab":"Workflow Examples","pages":[{"title":"Workflow Examples","href":"/workflows/introduction"}]}]},"title":"Create an account from a guest order - Galactic Core API Documentation","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CBCH2P7b.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}