Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package.
The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry Cache-Control: no-store. Confirm fit and specifications against the datasheets before substituting.
{
"error": "credits_exhausted",
"summary": "Your organization's credits for this month are used up, so this request was not run. Upgrade your plan in the PartFinder console at https://console.partfinder.dev/settings/billing, then try again.",
"reason": "This request needs 1 credit and 0 are left.",
"billing_url": "https://console.partfinder.dev/settings/billing"
}
An API key created in the PartFinder console at https://console.partfinder.dev, or a customer key created with POST /v1/keys. Send as Authorization: Bearer <key>. Revocation takes effect within approximately one minute.
Parts that could replace this one, up to five. Never this part itself or the same part in another package or ordering variant. Not ranked: the order carries no meaning, so compare them on match, supply and the datasheets. Empty when none was found.
{
"error": "credits_exhausted",
"summary": "Your organization's credits for this month are used up, so this request was not run. Upgrade your plan in the PartFinder console at https://console.partfinder.dev/settings/billing, then try again.",
"reason": "This request needs 1 credit and 0 are left.",
"billing_url": "https://console.partfinder.dev/settings/billing"
}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"PartFinder API","colors":{"primary":"#1D4ED8","light":"#3B82F6","dark":"#1E3A8A"},"favicon":"https://mintcdn.com/partfinder/hGeRCXFb-rSPxOJq/favicon.svg?fit=max\u0026auto=format\u0026n=hGeRCXFb-rSPxOJq\u0026q=85\u0026s=19d37d9d5ca86111d80fb254ae53e1e9","navbar":{"links":[{"href":"https://docs.partfinder.dev/llms.txt","label":"For AI agents: llms.txt"},{"href":"https://console.partfinder.dev","label":"Console"}],"primary":{"type":"button","label":"Get an API key","href":"https://console.partfinder.dev"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"markdown":{"instructions":["The PartFinder API is served at https://api.partfinder.dev. Authenticate with `Authorization: Bearer $PARTFINDER_API_KEY`; create an account at https://console.partfinder.dev/sign-up and pick pay as you go or a monthly or yearly plan (see https://partfinder.dev/pricing), then create a key. Pay as you go starts with 100 free credits, once per person and per company.","Install the PartFinder agent skill with `npx skills add https://docs.partfinder.dev` (skill file: https://docs.partfinder.dev/skill.md).","The OpenAPI document at https://api.partfinder.dev/v1/openapi.json is the source of truth for request and response schemas.","What each call costs and current plans: https://api.partfinder.dev/llms.txt."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"partfinder","hasAudioNarration":false,"actualSubdomain":"partfinder","customDomains":["docs.partfinder.dev"],"gitSource":{"type":"github","owner":"nimbusopsconsulting","repo":"partfinder-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae714b2bfc5f43dec48d3f4","collectionId":"070dca16-beeb-47de-9652-5b4a8c343a6c","liveDeploymentHistoryId":"6ae714b2bfc5f43dec48d3f4","schemaVersion":"v3"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae714b2bfc5f43dec48d3f4","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":36},{"language":"default","tag":"Endpoints","count":35},{"language":"default","tag":"Documentation","count":24},{"language":"default","tag":"Integrations","count":10},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Webhooks","count":7},{"language":"default","tag":"BOMs","count":5},{"language":"default","tag":"RFQs","count":5},{"language":"default","tag":"Core Concepts","count":4},{"language":"default","tag":"Compare","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"brand-icons.css","content":".dark img[src=\"/images/logos/openai-blossom-black.svg\"]{content:url(/images/logos/openai-blossom-white.svg)}.dark img[src=\"/images/logos/cursor-cube-2d-light.svg\"]{content:url(/images/logos/cursor-cube-2d-dark.svg)}.dark img[src=\"/images/logos/anthropic-symbol-slate.svg\"]{content:url(/images/logos/anthropic-symbol-ivory.svg)}.dark img[src=\"/images/logos/vercel-symbol-black.svg\"]{content:url(/images/logos/vercel-symbol-white.svg)}"}],"page":{"pagePath":"api-reference/parts/find-alternate-parts","slug":"/api-reference/parts/find-alternate-parts","pageMetadata":{"title":"Find alternate parts","description":"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package.\n\nThe list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry `Cache-Control: no-store`. Confirm fit and specifications against the datasheets before substituting.","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/alternates","href":"/api-reference/parts/find-alternate-parts","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 ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry \", _jsx(_components.code, {\n children: \"Cache-Control: no-store\"\n }), \". Confirm fit and specifications against the datasheets before substituting.\"]\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":"Find alternate parts","description":"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package.\n\nThe list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry `Cache-Control: no-store`. Confirm fit and specifications against the datasheets before substituting.","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/alternates","href":"/api-reference/parts/find-alternate-parts","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getAlternates","tags":["Parts"],"summary":"Find alternate parts","description":"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package.\n\nThe list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry `Cache-Control: no-store`. Confirm fit and specifications against the datasheets before substituting.","parameters":["16edadaa-dd68-4be3-b55b-6b897605bfa3","095489af-bf41-4d91-bcc9-3aa160b49989"],"responses":{"200":"04e37330-33fd-438b-9161-dfc7e6d4242f","400":"9d5fbbd5-c746-4ffb-a77e-ed1c474a5d58","401":"ebd0f2a4-d415-47dc-bed1-2278418e2cc3","402":"dcd204a4-b1e9-49ba-8ada-36949254193f","403":"9b2ff018-4bf1-4d85-a9d2-0fc842a0af14","404":"cbefefb7-e8af-4aca-b33a-0e952019d562","422":"88aed88e-72cc-44e6-b2bf-632781dea3a4","429":"9e73d115-424e-4564-b9fe-4dc3029279d9","502":"28b477a1-37e7-4e22-b8cb-c2d7541e1ba5","503":"e7304f55-80ad-4187-b86e-48c5e5681b8f"},"method":"get","type":"path","servers":["0fd180cc-370f-4a5d-b567-97592ff7113e"],"security":["ff9e9b82-f90e-4a4b-b1b1-0a91012e4b98"],"path":"/v1/alternates","baseUrlOptions":["https://api.partfinder.dev"],"title":"Find alternate parts","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"16edadaa-dd68-4be3-b55b-6b897605bfa3":{"name":"mpn","in":"query","required":true,"schema":{"type":"string","isRequired":true,"description":"The manufacturer part number to find alternates for.","uniqueKey":"","typeLabel":"string"},"example":"TPS54331DR","description":"The manufacturer part number to find alternates for."},"095489af-bf41-4d91-bcc9-3aa160b49989":{"name":"manufacturer","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"Only needed for a part number several manufacturers make, such as NE555N. Omit it otherwise.","uniqueKey":"","typeLabel":"string"},"example":"Texas Instruments","description":"Only needed for a part number several manufacturers make, such as NE555N. Omit it otherwise."}},"responses":{"04e37330-33fd-438b-9161-dfc7e6d4242f":{"description":"The alternates. The list can be empty.","content":{"application/json":{"schema":{"type":"object","properties":{"as_of":{"type":"string","format":"date-time","description":"ISO 8601. How current the data in this response is.","isRequired":true,"uniqueKey":"as_of","typeLabel":"string\u003cdate-time>"},"summary":{"type":"string","description":"Plain language an agent can relay without re-deriving it.","isRequired":true,"uniqueKey":"summary","typeLabel":"string"},"notice":{"type":"string","description":"Informational-use notice. Always present.","isRequired":true,"uniqueKey":"notice","typeLabel":"string"},"part":{"type":"object","properties":{"mpn":{"type":"string","description":"The part number you sent.","isRequired":true,"uniqueKey":"part.mpn","typeLabel":"string"},"manufacturer":{"oneOf":[{"type":"string","description":"The `manufacturer` you sent, or null.","isRequired":true,"uniqueKey":"part.manufacturer.oneOf.0","typeLabel":"string"},{"type":"null","description":"The `manufacturer` you sent, or null.","isRequired":true,"uniqueKey":"part.manufacturer.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"part.manufacturer","typeLabel":"string | null"}},"required":["mpn","manufacturer"],"isRequired":true,"uniqueKey":"part","typeLabel":"object"},"alternates":{"type":"array","items":{"type":"object","properties":{"mpn":{"type":"string","description":"The alternate's manufacturer part number.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].mpn","typeLabel":"string"},"manufacturer":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"alternates.items.[INDEX].manufacturer.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"alternates.items.[INDEX].manufacturer.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].manufacturer","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","description":"A one-line description of the part. Null when none is available.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"A one-line description of the part. Null when none is available.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].description","typeLabel":"string | null"},"lifecycle":{"oneOf":[{"type":"string","description":"Where the part is in its life. Null when no source states one.","enum":["Active","Mature","NRND","EOL","Obsolete"],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].lifecycle.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Where the part is in its life. Null when no source states one.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].lifecycle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].lifecycle","typeLabel":"enum\u003cstring> | null"},"match":{"oneOf":[{"type":"string","description":"How a supplier catalogue classifies this part against the one you asked about: `direct`, `parametric_equivalent`, `similar` or `upgrade`. Null when the catalogue gives no classification. Confirm fit and specifications against both datasheets before substituting.","enum":["direct","parametric_equivalent","similar","upgrade"],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].match.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"How a supplier catalogue classifies this part against the one you asked about: `direct`, `parametric_equivalent`, `similar` or `upgrade`. Null when the catalogue gives no classification. Confirm fit and specifications against both datasheets before substituting.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].match.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].match","typeLabel":"enum\u003cstring> | null"},"supply":{"type":"object","properties":{"stock":{"type":"object","properties":{"value":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.stock.value.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.stock.value.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.stock.value","typeLabel":"number | null"},"unit":{"type":"string","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.stock.unit","typeLabel":"string"},"reason":{"description":"Present only when value is null.","type":"string","uniqueKey":"alternates.items.[INDEX].supply.stock.reason","typeLabel":"string"}},"required":["value","unit"],"description":"Units held across the distributors we can see.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.stock","typeLabel":"object"},"distributor_count":{"oneOf":[{"type":"integer","description":"Distributors holding stock. Null when supply could not be read; `stock` says why.","minimum":0,"isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.distributor_count.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Distributors holding stock. Null when supply could not be read; `stock` says why.","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.distributor_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.distributor_count","typeLabel":"integer | null"},"lead_time_median":{"type":"object","properties":{"value":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.lead_time_median.value.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.lead_time_median.value.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.lead_time_median.value","typeLabel":"number | null"},"unit":{"type":"string","isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.lead_time_median.unit","typeLabel":"string"},"reason":{"description":"Present only when value is null.","type":"string","uniqueKey":"alternates.items.[INDEX].supply.lead_time_median.reason","typeLabel":"string"}},"required":["value","unit"],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply.lead_time_median","typeLabel":"object"}},"required":["stock","distributor_count","lead_time_median"],"isRequired":true,"uniqueKey":"alternates.items.[INDEX].supply","typeLabel":"object"}},"required":["mpn","manufacturer","description","lifecycle","match","supply"],"uniqueKey":"alternates.items.[INDEX]","typeLabel":"object"},"description":"Parts that could replace this one, up to five. Never this part itself or the same part in another package or ordering variant. Not ranked: the order carries no meaning, so compare them on `match`, `supply` and the datasheets. Empty when none was found.","isRequired":true,"uniqueKey":"alternates","typeLabel":"object[]"}},"required":["as_of","summary","notice","part","alternates"],"uniqueKey":"","typeLabel":"object"},"example":{"as_of":"2026-09-29T07:28:59.267Z","summary":"3 alternates for TPS54331DR: AP63301WU-7 (Diodes Incorporated), AP63300WU-7 (Diodes Incorporated), AP64351SP-13 (Diodes Incorporated). 3 of them are in stock at a distributor. Confirm fit against the datasheets before substituting.","notice":"Informational only. Risk scores, stock levels, lead times and alternate-part suggestions may be incomplete, delayed or inaccurate. Independently verify before making procurement, engineering, compliance, safety or sourcing decisions.","part":{"mpn":"TPS54331DR","manufacturer":null},"alternates":[{"mpn":"AP63301WU-7","manufacturer":"Diodes Incorporated","description":"Adjustable 3 A step-down regulator, 6-pin package","match":"similar","lifecycle":"Active","supply":{"stock":{"value":81702,"unit":"units"},"distributor_count":3,"lead_time_median":{"value":101,"unit":"days"}}},{"mpn":"AP63300WU-7","manufacturer":"Diodes Incorporated","description":"Adjustable 3 A step-down regulator, 6-pin package","match":"similar","lifecycle":"Active","supply":{"stock":{"value":54602,"unit":"units"},"distributor_count":4,"lead_time_median":{"value":129,"unit":"days"}}},{"mpn":"AP64351SP-13","manufacturer":"Diodes Incorporated","description":"Adjustable 3.5 A step-down regulator, 8-pin package","match":"similar","lifecycle":"Active","supply":{"stock":{"value":78939,"unit":"units"},"distributor_count":6,"lead_time_median":{"value":84,"unit":"days"}}}]},"examples":{"Example":{"title":"Example","value":{"as_of":"2026-09-29T07:28:59.267Z","summary":"3 alternates for TPS54331DR: AP63301WU-7 (Diodes Incorporated), AP63300WU-7 (Diodes Incorporated), AP64351SP-13 (Diodes Incorporated). 3 of them are in stock at a distributor. Confirm fit against the datasheets before substituting.","notice":"Informational only. Risk scores, stock levels, lead times and alternate-part suggestions may be incomplete, delayed or inaccurate. Independently verify before making procurement, engineering, compliance, safety or sourcing decisions.","part":{"mpn":"TPS54331DR","manufacturer":null},"alternates":[{"mpn":"AP63301WU-7","manufacturer":"Diodes Incorporated","description":"Adjustable 3 A step-down regulator, 6-pin package","match":"similar","lifecycle":"Active","supply":{"stock":{"value":81702,"unit":"units"},"distributor_count":3,"lead_time_median":{"value":101,"unit":"days"}}},{"mpn":"AP63300WU-7","manufacturer":"Diodes Incorporated","description":"Adjustable 3 A step-down regulator, 6-pin package","match":"similar","lifecycle":"Active","supply":{"stock":{"value":54602,"unit":"units"},"distributor_count":4,"lead_time_median":{"value":129,"unit":"days"}}},{"mpn":"AP64351SP-13","manufacturer":"Diodes Incorporated","description":"Adjustable 3.5 A step-down regulator, 8-pin package","match":"similar","lifecycle":"Active","supply":{"stock":{"value":78939,"unit":"units"},"distributor_count":6,"lead_time_median":{"value":84,"unit":"days"}}}]}}},"exampleType":"examples"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"examples"},"9d5fbbd5-c746-4ffb-a77e-ed1c474a5d58":{"description":"The `mpn` parameter is missing.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"},"ebd0f2a4-d415-47dc-bed1-2278418e2cc3":{"description":"Missing, unknown, revoked or expired key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"dcd204a4-b1e9-49ba-8ada-36949254193f":{"description":"This request was not run and nothing was charged. The error code names the case. `credits_exhausted`: your plan's credits for this month are used up; upgrade the plan in the PartFinder console. `payment_method_required`: your organization is on pay as you go with no payment method; add one in the console, or choose a plan. `payment_failed`: pay as you go is paused because the last payment failed; update the payment method in the console. `usage_limit_reached`: your organization, on pay as you go, has reached its limit for unpaid usage; calls resume once the current payment goes through. With a key made with `POST /v1/keys`, the `summary` tells your customer to contact your organization, and the answer carries no `billing_url`. The `summary` can be relayed as is; retry once the case is resolved.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":"credits_exhausted","summary":"Your organization's credits for this month are used up, so this request was not run. Upgrade your plan in the PartFinder console at https://console.partfinder.dev/settings/billing, then try again.","reason":"This request needs 1 credit and 0 are left.","billing_url":"https://console.partfinder.dev/settings/billing"},"examples":{"Example":{"title":"Example","value":{"error":"credits_exhausted","summary":"Your organization's credits for this month are used up, so this request was not run. Upgrade your plan in the PartFinder console at https://console.partfinder.dev/settings/billing, then try again.","reason":"This request needs 1 credit and 0 are left.","billing_url":"https://console.partfinder.dev/settings/billing"}}},"exampleType":"examples"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"examples"},"9b2ff018-4bf1-4d85-a9d2-0fc842a0af14":{"description":"The caller signed in through an AI app without the permission this call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the error is `insufficient_scope`. Or the AI app was disconnected in the console; the error is `app_disconnected`.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"},"cbefefb7-e8af-4aca-b33a-0e952019d562":{"description":"No distributor catalogue lists that part number exactly. Usually a typo or a partial part number. When listed part numbers begin with what you sent, `did_you_mean` carries up to five of them.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"},"88aed88e-72cc-44e6-b2bf-632781dea3a4":{"description":"The input does not identify one specific part. When it described a class of parts, `did_you_mean` carries real part numbers to retry with.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"},"9e73d115-424e-4564-b9fe-4dc3029279d9":{"description":"Your organization has used its calls for this minute or this day. Wait the number of seconds in `Retry-After`, then retry.","headers":{"Retry-After":{"description":"Seconds until the limit resets.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"28b477a1-37e7-4e22-b8cb-c2d7541e1ba5":{"description":"The alternates could not be produced right now. Retry shortly.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"},"e7304f55-80ad-4187-b86e-48c5e5681b8f":{"description":"We could not confirm the part number is real right now. No list is produced for a part that cannot be verified. Temporary — retry shortly.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["authentication_required","invalid_key","invalid_request","not_a_specific_part","part_not_found","verification_unavailable","generation_failed","bom_too_large","bom_not_found","bom_columns_not_found","event_not_found","rate_limited","supplier_opted_out","send_failed","rfq_not_found","rfq_bounced","message_refused","key_not_allowed","insufficient_scope","app_disconnected","key_not_found","key_name_taken","webhook_endpoint_not_found","not_a_parts_query","search_not_found","compare_not_found","credits_exhausted","payment_method_required","payment_failed","usage_limit_reached"],"description":"`authentication_required` when no bearer token was sent. `invalid_key` when the key or sign-in is unknown, revoked or expired — deliberately indistinguishable — or the sign-in names no organization you belong to (the `summary` says what to do). `invalid_request` when a required parameter is missing. `not_a_specific_part` when the input does not identify one specific part. `part_not_found` when no supplier lists that part number exactly — usually a typo or a partial number. `verification_unavailable` when we could not check whether the part is real, and so declined to describe it; temporary, safe to retry. `generation_failed` when the report could not be produced, or a search or a comparison could not be started. `bom_too_large` when one call carries more lines than the limit; `reason` states both numbers. `bom_not_found` when no BOM with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `bom_columns_not_found` when an uploaded file has no column we can identify as part numbers; `reason` lists the headers seen. `event_not_found` when no active event has that id. `rate_limited` when your organization has used its calls for this minute or this day; wait the seconds in the `Retry-After` header, then retry. `supplier_opted_out` when the supplier asked not to receive requests for quote from you, or from anyone through PartFinder. `send_failed` when the email could not be sent; nothing was stored, safe to retry. `rfq_not_found` when no request for quote with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `rfq_bounced` when the supplier's address could not receive the request; send a new request for quote to a working address. `message_refused` when the text was not sent; `summary` says what to change before sending again. `key_not_allowed` when a key that belongs to one of your customers calls an endpoint only your organization's own keys may call, or a caller signed in through an AI app manages keys or webhooks. `insufficient_scope` when an AI app signed in without the permission the call needs (`partfinder:read` to read, which includes looking up parts, alternates and events and uses credits for those; `partfinder:write` to change anything); the `summary` names it, and connecting the app again with it allowed fixes it. `app_disconnected` when the AI app the caller signed in through was disconnected in the console; signing in again does not help, allowing the app again in the console does. `key_not_found` when no live end-customer key with that id belongs to your organization. `key_name_taken` when a key with that name already exists in your organization, revoked keys included. `webhook_endpoint_not_found` when no webhook endpoint with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `not_a_parts_query` when a search query is not about a part; send a part number or describe the part. `search_not_found` when no search with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `compare_not_found` when no comparison with that id belongs to your organization (with a key made with `POST /v1/keys`, to that customer). `credits_exhausted` when your plan's credits for this month are used up; this request was not run and nothing was charged. Upgrade the plan at `billing_url`, then retry. `payment_method_required` when your organization is on pay as you go with no payment method; this request was not run and nothing was charged. Add a payment method or choose a plan at `billing_url`, then retry. `payment_failed` when pay as you go is paused because the last payment failed; this request was not run and nothing was charged. Update the payment method at `billing_url`, then retry. `usage_limit_reached` when your organization, on pay as you go, has reached its limit for unpaid usage; this request was not run and nothing was charged. Calls resume once the current payment goes through; follow it at `billing_url`. With a key made with `POST /v1/keys`, these four carry no `billing_url`: the `summary` asks your customer to contact your organization.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"summary":{"description":"One sentence you can relay to a user as-is, the same as `summary` on a successful response. Present whenever there is something useful to say about what went wrong.","type":"string","uniqueKey":"summary","typeLabel":"string"},"reason":{"description":"The specific detail behind the error.","type":"string","uniqueKey":"reason","typeLabel":"string"},"billing_url":{"description":"On `credits_exhausted`, `payment_method_required`, `payment_failed` and `usage_limit_reached`: the PartFinder console Billing page, where your organization manages its plan and payment method. Absent for a key made with `POST /v1/keys`, and for an organization whose plan is set by its contract.","type":"string","format":"uri","uniqueKey":"billing_url","typeLabel":"string\u003curi>"},"did_you_mean":{"description":"Real part numbers to retry with. On `not_a_specific_part` they are parts of the kind you described; on `part_not_found` they are the listed part numbers your input is a prefix of, so `TPS5433` returns TPS54331, TPS54332 and so on. Absent when there is nothing to suggest. Every entry is a real part number, never a guess.","type":"array","items":{"type":"string","uniqueKey":"did_you_mean.items.[INDEX]","typeLabel":"string"},"uniqueKey":"did_you_mean","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"authentication_required","summary":"\u003cstring>","reason":"\u003cstring>","billing_url":"\u003cstring>","did_you_mean":["\u003cstring>"]}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current window: the minute or the day, whichever has fewer calls left.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Remaining":{"description":"Calls left in that window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Seconds until that window resets.","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"}},"security":{"ff9e9b82-f90e-4a4b-b1b1-0a91012e4b98":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key created in the PartFinder console at https://console.partfinder.dev, or a customer key created with `POST /v1/keys`. Send as `Authorization: Bearer \u003ckey>`. Revocation takes effect within approximately one minute.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"0fd180cc-370f-4a5d-b567-97592ff7113e":{"url":"https://api.partfinder.dev"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key created in the PartFinder console at https://console.partfinder.dev, or a customer key created with `POST /v1/keys`. Send as `Authorization: Bearer \u003ckey>`. Revocation takes effect within approximately one minute.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key created in the PartFinder console at https://console.partfinder.dev, or a customer key created with `POST /v1/keys`. Send as `Authorization: Bearer \u003ckey>`. Revocation takes effect within approximately one minute.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://api.partfinder.dev/v1/openapi.json"},"subdomain":"partfinder","siteName":"PartFinder API","title":"Find alternate parts - PartFinder API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T08:04:57.802Z","originalFileLocation":"api-reference/parts/find-alternate-parts.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=\"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package. The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry Cache-Control: no-store. Confirm fit and specifications against the datasheets before substituting.\">\u003cmeta data-mint-head name=\"application-name\" content=\"PartFinder API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_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/partfinder/EFtN-rIWwyuXX5BE/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Find alternate parts - PartFinder API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package. The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry Cache-Control: no-store. Confirm fit and specifications against the datasheets before substituting.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PartFinder API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://partfinder.mintlify.app/_mintlify/api/og/v2?division=Parts\u0026amp;title=Find+alternate+parts\u0026amp;description=Parts+that+could+replace+one+part%2C+up+to+five%2C+each+with+its+current+stock%2C+distributor+count%2C+lead+time+and+lifecycle.+Never+the+part+itself+or+the+same+part+i\u0026amp;theme=2915c8e57862f94fe512378b\u0026amp;signature=7456b37b964a76de37b6a30c6e5c4f3d7f083344cb91e6eae808bec0894d9867\">\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=\"Find alternate parts - PartFinder API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package. The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry Cache-Control: no-store. Confirm fit and specifications against the datasheets before substituting.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://partfinder.mintlify.app/_mintlify/api/og/v2?division=Parts\u0026amp;title=Find+alternate+parts\u0026amp;description=Parts+that+could+replace+one+part%2C+up+to+five%2C+each+with+its+current+stock%2C+distributor+count%2C+lead+time+and+lifecycle.+Never+the+part+itself+or+the+same+part+i\u0026amp;theme=2915c8e57862f94fe512378b\u0026amp;signature=7456b37b964a76de37b6a30c6e5c4f3d7f083344cb91e6eae808bec0894d9867\">\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/partfinder/EFtN-rIWwyuXX5BE/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PartFinder API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D4ED8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/parts/find-alternate-parts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.partfinder.dev/#organization\",\"name\":\"PartFinder API\",\"url\":\"https://docs.partfinder.dev\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.partfinder.dev#website\",\"name\":\"PartFinder API\",\"url\":\"https://docs.partfinder.dev\",\"publisher\":{\"@id\":\"https://docs.partfinder.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts#webpage\",\"url\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts\",\"name\":\"Find alternate parts\",\"description\":\"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package. The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry Cache-Control: no-store. Confirm fit and specifications against the datasheets before substituting.\",\"dateModified\":\"2026-11-01T08:04:57.802Z\",\"isPartOf\":{\"@id\":\"https://docs.partfinder.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.partfinder.dev/api-reference/authentication/verify-an-api-key\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Parts\",\"item\":\"https://docs.partfinder.dev/api-reference/parts/research-a-part\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Find alternate parts\",\"item\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts#apireference\",\"headline\":\"Find alternate parts\",\"name\":\"Find alternate parts\",\"description\":\"Parts that could replace one part, up to five, each with its current stock, distributor count, lead time and lifecycle. Never the part itself or the same part in another package. The list is kept server-side for 48 hours, so repeat calls return quickly; stock is read fresh on every call. Responses carry Cache-Control: no-store. Confirm fit and specifications against the datasheets before substituting.\",\"url\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.partfinder.dev/api-reference/parts/find-alternate-parts#webpage\"},\"dateModified\":\"2026-11-01T08:04:57.802Z\",\"publisher\":{\"@id\":\"https://docs.partfinder.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.partfinder.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PartFinder API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PartFinder API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"PartFinder REST API: reference overview and endpoints","sidebarTitle":"Overview","href":"/api-reference/overview"}]},{"group":"Endpoints","pages":[{"group":"Authentication","pages":[{"title":"Verify an API key","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/ping","href":"/api-reference/authentication/verify-an-api-key"}]},{"group":"Parts","pages":[{"title":"Research a part","description":"Supply-chain intelligence for one industrial part: a composite risk score with its four drivers, current distributor availability, a datasheet link, the live disruption events that touch it, alternate parts, and recommended actions.\n\nA cold part takes tens of seconds because it gathers live data. The result is kept server-side for 48 hours, so repeat calls return quickly; responses themselves are not HTTP-cacheable and carry `Cache-Control: no-store`.","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/parts","href":"/api-reference/parts/research-a-part"},{"title":"Find alternate parts","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/alternates","href":"/api-reference/parts/find-alternate-parts"}]},{"group":"BOMs","pages":[{"title":"List your BOMs","description":"Every BOM your organization has submitted (with a key made with `POST /v1/keys`, only that customer's), newest first, with its status, one page at a time. When `next_cursor` is not null, call again with `cursor` set to it for the next page.","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/bom","href":"/api-reference/boms/list-your-boms"},{"title":"Analyze a BOM","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/bom","href":"/api-reference/boms/analyze-a-bom"},{"title":"Upload a BOM file","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/bom/upload","href":"/api-reference/boms/upload-a-bom-file"},{"title":"Get a BOM report","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/bom/{id}","href":"/api-reference/boms/get-a-bom-report"},{"title":"Delete a BOM","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json delete /v1/bom/{id}","href":"/api-reference/boms/delete-a-bom"}]},{"group":"Events","pages":[{"title":"List disruption events","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/events","href":"/api-reference/events/list-disruption-events"},{"title":"Get a disruption event","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/events/{id}","href":"/api-reference/events/get-a-disruption-event"},{"title":"Disruptions by country","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/events/countries","href":"/api-reference/events/disruptions-by-country"},{"title":"Port and sea-route activity","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/events/shipping","href":"/api-reference/events/port-and-sea-route-activity"}]},{"group":"Search","pages":[{"title":"List your searches","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/search","href":"/api-reference/search/list-your-searches"},{"title":"Search for parts","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/search","href":"/api-reference/search/search-for-parts"},{"title":"Get a search","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/search/{id}","href":"/api-reference/search/get-a-search"},{"title":"Delete a search","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json delete /v1/search/{id}","href":"/api-reference/search/delete-a-search"}]},{"group":"Compare","pages":[{"title":"List your comparisons","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/compare","href":"/api-reference/compare/list-your-comparisons"},{"title":"Compare parts","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/compare","href":"/api-reference/compare/compare-parts"},{"title":"Get a comparison","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/compare/{id}","href":"/api-reference/compare/get-a-comparison"},{"title":"Delete a comparison","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json delete /v1/compare/{id}","href":"/api-reference/compare/delete-a-comparison"}]},{"group":"RFQs","pages":[{"title":"List your requests for quote","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/rfq","href":"/api-reference/rfqs/list-your-requests-for-quote"},{"title":"Send a request for quote","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/rfq","href":"/api-reference/rfqs/send-a-request-for-quote"},{"title":"Get a request for quote","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/rfq/{id}","href":"/api-reference/rfqs/get-a-request-for-quote"},{"title":"Delete a request for quote","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json delete /v1/rfq/{id}","href":"/api-reference/rfqs/delete-a-request-for-quote"},{"title":"Send a message in a request for quote","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/rfq/{id}/messages","href":"/api-reference/rfqs/send-a-message-in-a-request-for-quote"}]},{"group":"Keys","pages":[{"title":"List customer keys","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/keys","href":"/api-reference/keys/list-customer-keys"},{"title":"Create a key for a customer","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/keys","href":"/api-reference/keys/create-a-key-for-a-customer"},{"title":"Revoke a customer key","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json delete /v1/keys/{id}","href":"/api-reference/keys/revoke-a-customer-key"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json get /v1/webhooks","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Register a webhook endpoint","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json post /v1/webhooks","href":"/api-reference/webhooks/register-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"https://api.partfinder.dev/v1/openapi.json delete /v1/webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"A supplier replied","version":null,"deprecated":null,"openapi":"https://api.partfinder.dev/v1/openapi.json webhook rfq.reply_received","href":"/api-reference/webhooks/a-supplier-replied"},{"title":"A request for quote bounced","version":null,"deprecated":null,"openapi":"https://api.partfinder.dev/v1/openapi.json webhook rfq.bounced","href":"/api-reference/webhooks/a-request-for-quote-bounced"},{"title":"A search ended","version":null,"deprecated":null,"openapi":"https://api.partfinder.dev/v1/openapi.json webhook search.completed","href":"/api-reference/webhooks/a-search-ended"},{"title":"A comparison ended","version":null,"deprecated":null,"openapi":"https://api.partfinder.dev/v1/openapi.json webhook compare.completed","href":"/api-reference/webhooks/a-comparison-ended"}]}]}]}]},"basePath":"","title":"Find alternate parts - PartFinder API","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-Bevw23-4.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}