MyLists Third Party API - Easily Get Parts into myLists from Third Party Applications

API Documentation: Third-Party Integrations with DigiKey myLists

This guide explains how to transfer Bill of Materials (BOM) data to DigiKey’s myLists using a lightweight API endpoint that does not require API keys or authentication.[1] The endpoint returns a single-use URL that allows users to:

  • Add parts to a DigiKey cart, or
  • Sign in to myDigiKey to save the list to their account.

Purpose: Quickly push BOM data to DigiKey without full API integration.
Use Case: Ideal for third-party tools, plugins, or scripts that need a fast way to send parts lists.


API Endpoint

  • Base URL: https://www.digikey.com/mylists/api/thirdparty
  • Method: POST
  • Headers:
    • Content-Type: application/json

Request Structure

The request payload consists of query parameters and a JSON object detailing parts. Below are the required components for a valid request:

Query Parameters

  • listName (string, required): Specifies the name of the list to be created in myLists.
    • Example: "hello_myLists"
  • tags (string, optional): Tags to categorize the list.
    • Example: "KiCad"

JSON Payload

The payload contains an array of parts, including their quantities and optional metadata.

JSON Payload Example

[
    {
        "requestedPartNumber": "3000TR",
        "manufacturerName": "",
        "referenceDesignator": "",
        "customerReference": "",
        "notes": "",
        "quantities": [
            {
                "quantity": 10
            }
        ]
    },
    {
        "requestedPartNumber": "3000TR",
        "manufacturerName": "",
        "referenceDesignator": "",
        "customerReference": "",
        "notes": "",
        "quantities": [
            {
                "quantity": 10
            },
            {
                "quantity": 20
            }
        ]
    }
]

Field Descriptions

  1. requestedPartNumber (string, required):

    • The DigiKey or manufacturer part number for the item.
  2. manufacturerName (string, optional):

    • The name of the manufacturer for the requested part. Leave blank if not applicable.
  3. referenceDesignator (string, optional):

    • A designator from the schematic (e.g., R1, C2). Leave blank if not applicable.
  4. customerReference (string, optional):

    • A custom reference field for user-defined identifiers or notes.
  5. notes (string, optional):

    • Additional notes or comments about the part.
  6. quantities (array of objects, required):

    • An array of quantities, where each object contains:
      • quantity (integer, required): The desired quantity of the part.

Response Structure

The API responds with a JSON object containing a single-use URL that redirects the user to the myLists interface with the submitted BOM data preloaded.

Example Response

{
    "singleUseUrl": "https://www.digikey.com/mylists/singleuse/12345abcde"
}

Response Field Description

  1. singleUseUrl (string):
    • A one-time use URL that redirects to the DigiKey myLists interface. The URL includes the preloaded BOM data submitted in the request.

Key Notes

  1. Single-Use URL:

    • The singleUseUrl is valid for one-time use only.
    • Once accessed, the URL cannot be reused or refreshed.
  2. URL Expiry:

    • The single-use URL may expire after a short period. Ensure the URL is accessed immediately after retrieval.

Error Handling

The API returns standard HTTP status codes and detailed error messages in the response body.

Common Error Codes

  • 400 Bad Request: Indicates invalid input or missing required fields.
  • 401 Unauthorized: Authentication error; missing or invalid credentials.
  • 500 Internal Server Error: Server-side issue.

Example Error Response

{
    "error": {
        "code": "400",
        "message": "Invalid part number format."
    }
}

Python Example

import requests
import json
 
base_api_url = "https://www.digikey.com/mylists/api/thirdparty"
params = {
    "listName": "hello_myLists",
    "tags": "KiCad"
}
headers = {"Content-Type": "application/json"}
payload = [
    {
        "requestedPartNumber": "3000TR",
        "manufacturerName": "",
        "referenceDesignator": "",
        "customerReference": "",
        "notes": "",
        "quantities": [{"quantity": 10}]
    },
    {
        "requestedPartNumber": "3000TR",
        "manufacturerName": "",
        "referenceDesignator": "",
        "customerReference": "",
        "notes": "",
        "quantities": [{"quantity": 10}, {"quantity": 20}]
    }
]
 
response = requests.post(base_api_url, headers=headers, params=params, data=json.dumps(payload))
 
if response.status_code == 200:
    data = response.json()
    print(f"Single-Use URL: {data['singleUseUrl']}")
else:
    print(f"Error: {response.status_code}")
    print(response.text)

Alternative methods of pushing parts to DigiKey’s website

  • The DigiKey API suite has several methods of managing part lists and orders in a more robust manner. It’s free and easy to get started using your current DigiKey site credentials.
  • If you just want to send parts directly into a DigiKey cart without the need for messing around with the full API, please check out this page for more information.

Applications using this feature

The Kicad Push-to-DigiKey plugin leverages this API. This is an example of it being used in the wild.


  1. 1 ↩︎

2 Likes