> ## Documentation Index
> Fetch the complete documentation index at: https://docs.partfinder.dev/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent 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.

# PartFinder REST API: reference overview and endpoints

> PartFinder REST API: base URL, versioning, Bearer auth, JSON request/response format, and all available supply-chain intelligence endpoints.

The PartFinder REST API gives you programmatic access to composite risk scores, supply availability data, datasheet links, live disruption events, alternate part recommendations, part search and side-by-side part comparison for industrial components. All endpoints are served from `https://api.partfinder.dev`, versioned under the `/v1/` prefix, and communicate exclusively in JSON.

## Base URL

All endpoints are prefixed with `/v1/`:

```text theme={null}
https://api.partfinder.dev/v1/
```

## OpenAPI Document

A machine-readable OpenAPI 3.1 document is available at:

```text theme={null}
https://api.partfinder.dev/v1/openapi.json
```

Use it to generate client SDKs, validate requests in your CI pipeline, or import the collection directly into tools like Postman or Insomnia.

## Authentication

Every request must include a valid API key as a Bearer token in the `Authorization` header:

```text theme={null}
Authorization: Bearer <your-api-key>
```

Keys belong to your organization, not to a team member, and keep working when team members change. You create, rotate and revoke keys at [console.partfinder.dev](https://console.partfinder.dev/settings/api-keys). Revocation takes effect within approximately one minute.

For full details, see the [Authentication](https://docs.partfinder.dev/authentication.md) page.

## Request and Response Format

Requests and responses use `application/json`, except `POST /v1/bom/upload`, which takes the file as `multipart/form-data`. Include `Content-Type: application/json` on every other `POST`. All timestamps are ISO 8601 UTC strings.

## Endpoint Summary

| Method | Endpoint | Description |
| - | - | - |
| `GET` | `/v1/ping` | [Verify an API key](https://docs.partfinder.dev/api-reference/authentication/verify-an-api-key.md) |
| `GET` | `/v1/parts` | [Research a part](https://docs.partfinder.dev/api-reference/parts/research-a-part.md) |
| `GET` | `/v1/alternates` | [Find alternate parts](https://docs.partfinder.dev/api-reference/parts/find-alternate-parts.md) |
| `POST` | `/v1/bom` | [Analyze a BOM](https://docs.partfinder.dev/api-reference/boms/analyze-a-bom.md) |
| `GET` | `/v1/bom` | [List your BOMs](https://docs.partfinder.dev/api-reference/boms/list-your-boms.md) |
| `POST` | `/v1/bom/upload` | [Upload a BOM file](https://docs.partfinder.dev/api-reference/boms/upload-a-bom-file.md) |
| `GET` | `/v1/bom/{id}` | [Get a BOM report](https://docs.partfinder.dev/api-reference/boms/get-a-bom-report.md) |
| `DELETE` | `/v1/bom/{id}` | [Delete a BOM](https://docs.partfinder.dev/api-reference/boms/delete-a-bom.md) |
| `GET` | `/v1/events` | [List disruption events](https://docs.partfinder.dev/api-reference/events/list-disruption-events.md) |
| `GET` | `/v1/events/{id}` | [Get a disruption event](https://docs.partfinder.dev/api-reference/events/get-a-disruption-event.md) |
| `GET` | `/v1/events/countries` | [Disruptions by country](https://docs.partfinder.dev/api-reference/events/disruptions-by-country.md) |
| `GET` | `/v1/events/shipping` | [Port and sea-route activity](https://docs.partfinder.dev/api-reference/events/port-and-sea-route-activity.md) |
| `POST` | `/v1/search` | [Search for parts](https://docs.partfinder.dev/api-reference/search/search-for-parts.md) |
| `GET` | `/v1/search` | [List your searches](https://docs.partfinder.dev/api-reference/search/list-your-searches.md) |
| `GET` | `/v1/search/{id}` | [Get a search](https://docs.partfinder.dev/api-reference/search/get-a-search.md) |
| `DELETE` | `/v1/search/{id}` | [Delete a search](https://docs.partfinder.dev/api-reference/search/delete-a-search.md) |
| `POST` | `/v1/compare` | [Compare parts](https://docs.partfinder.dev/api-reference/compare/compare-parts.md) |
| `GET` | `/v1/compare` | [List your comparisons](https://docs.partfinder.dev/api-reference/compare/list-your-comparisons.md) |
| `GET` | `/v1/compare/{id}` | [Get a comparison](https://docs.partfinder.dev/api-reference/compare/get-a-comparison.md) |
| `DELETE` | `/v1/compare/{id}` | [Delete a comparison](https://docs.partfinder.dev/api-reference/compare/delete-a-comparison.md) |
| `POST` | `/v1/rfq` | [Send a request for quote](https://docs.partfinder.dev/api-reference/rfqs/send-a-request-for-quote.md) |
| `GET` | `/v1/rfq` | [List your requests for quote](https://docs.partfinder.dev/api-reference/rfqs/list-your-requests-for-quote.md) |
| `GET` | `/v1/rfq/{id}` | [Get a request for quote](https://docs.partfinder.dev/api-reference/rfqs/get-a-request-for-quote.md) |
| `DELETE` | `/v1/rfq/{id}` | [Delete a request for quote](https://docs.partfinder.dev/api-reference/rfqs/delete-a-request-for-quote.md) |
| `POST` | `/v1/rfq/{id}/messages` | [Send a message in a request for quote](https://docs.partfinder.dev/api-reference/rfqs/send-a-message-in-a-request-for-quote.md) |
| `POST` | `/v1/keys` | [Create a key for a customer](https://docs.partfinder.dev/api-reference/keys/create-a-key-for-a-customer.md) |
| `GET` | `/v1/keys` | [List customer keys](https://docs.partfinder.dev/api-reference/keys/list-customer-keys.md) |
| `DELETE` | `/v1/keys/{id}` | [Revoke a customer key](https://docs.partfinder.dev/api-reference/keys/revoke-a-customer-key.md) |
| `POST` | `/v1/webhooks` | [Register a webhook endpoint](https://docs.partfinder.dev/api-reference/webhooks/register-a-webhook-endpoint.md) |
| `GET` | `/v1/webhooks` | [List webhook endpoints](https://docs.partfinder.dev/api-reference/webhooks/list-webhook-endpoints.md) |
| `DELETE` | `/v1/webhooks/{id}` | [Delete a webhook endpoint](https://docs.partfinder.dev/api-reference/webhooks/delete-a-webhook-endpoint.md) |

The machine-readable description of every endpoint is
[the OpenAPI document](https://api.partfinder.dev/v1/openapi.json).

## Common Headers

**Authorization** `string` *required*

Your API key as a Bearer token. Example: `Bearer ak_7f3a2b1c...`. All requests require this header. Missing or invalid keys return `401`.

**Content-Type** `string`

`application/json` on every `POST` except the file upload; `multipart/form-data` on `POST /v1/bom/upload`.

## Response Envelope

Every successful response from the PartFinder API shares the following top-level fields. Errors have their own shape: an `error` code, usually a `summary` you can relay, and where useful a `reason` and `did_you_mean` (see [Errors](https://docs.partfinder.dev/errors.md)).

**as\_of** `string`

ISO 8601 UTC timestamp of when the data in this response was produced. It can be earlier than your call.

**notice** `string`

Informational-use disclaimer. Always present. Example: `"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."`

**summary** `string`

A plain-language summary of the response, which an agent or UI can relay directly rather than re-deriving it from the fields.

## Score Fields

Every score object in the API follows a consistent structure so you can handle scores generically without endpoint-specific parsing logic:

| Field | Type | Description |
| - | - | - |
| `value` | number | The numeric score |
| `scale` | number | The maximum the score can take: `100` means 0 to 100 |
| `direction` | string | `higher_is_worse` or `higher_is_better` |
| `interpretation` | string | A plain-language reading of this specific value |

## Unknown Values

When a data point cannot be determined, the API returns an explicit `null` with a `reason` field saying why, for example `"reason": "No distributor quotes a lead time for this line."`. Fields are never omitted.

## Versioning

The current API version is `v1`. Breaking changes (removed fields, changed meanings, incompatible schema changes) are released under a new version prefix (e.g. `/v2/`). Non-breaking additions such as new response fields may be added at any time within the same version. Write your clients defensively: ignore unknown fields rather than treating them as errors.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.