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

# Device Identifier

> Identify a US medical device from the device identifier or GS1 barcode text on its label.

Returns the US Food and Drug Administration’s identification record for a medical device, by the device identifier or GS1 barcode text on its label: brand, model, labeler, package levels, distribution status, product codes, premarket submission numbers and labeling flags such as sterility, latex and MRI safety. Device naming terms and contacts are excluded.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

**device\_identifier** `string`

The device identifier (DI) printed on the label, for example 04063006002252. For HIBCC labels, leave out the leading + and the trailing check character.

**udi** `string`

The full UDI text from a GS1 label, human-readable such as (01)00357599000172(17)250531(10)ABC123 or as scanned. 16 to 200 characters.

<Snippet file="audit-context-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

**data.request\_id** `string`

Durable job ID for audit and lookup

**data.status** `string`

Job status: `completed`

**data.tool** `string`

Always `product_device_identifier`

**data.result** `object`

The answer, described under Result below

**data.evidence** `object`

Where the answer came from and when

**data.evidence.source** `string`

The public body the data comes from. Always `US Food and Drug Administration`.

**data.evidence.source\_kind** `string`

`public` when the data comes from a public body, `commercial` otherwise

**data.evidence.retrieved\_at** `string`

When the lookup was made, as an ISO 8601 UTC time

**data.evidence.as\_of** `string | null`

When the source says the fact was last updated, or `null` when the source gives no date

## Result

Nested under `data.result`.

**data.result.found** `boolean`

Whether the identifier is in the database.

**data.result.device\_identifier** `string`

The identifier that was searched, after normalisation.

**data.result.records\_matched** `integer`

How many records hold the identifier; only the first is returned.

**data.result.matched\_type** `string | null`

Which level of the record matched: Primary, Package, Unit of Use, Secondary or Direct Marking. `null` when the source gives no value.

**data.result.primary\_device\_identifier** `string | null`

The primary device identifier of the record. `null` when the source gives no value.

**data.result.issuing\_agency** `string | null`

The issuing agency of the primary identifier: GS1, HIBCC or ICCBBA. `null` when the source gives no value.

**data.result.identifiers** `object[]`

Every identifier level of the record.

**data.result.identifiers\[].id** `string`

The identifier.

**data.result.identifiers\[].type** `string | null`

The identifier level. `null` when the source gives no value.

**data.result.identifiers\[].issuing\_agency** `string | null`

The issuing agency. `null` when the source gives no value.

**data.result.identifiers\[].contains\_identifier** `string | null`

The identifier of the unit this package contains. `null` when the source gives no value.

**data.result.identifiers\[].quantity\_per\_package** `number | null`

How many units the package holds. `null` when the source gives no value.

**data.result.identifiers\[].package\_type** `string | null`

The package type. `null` when the source gives no value.

**data.result.identifiers\[].package\_status** `string | null`

The package distribution status. `null` when the source gives no value.

**data.result.identifiers\[].package\_discontinue\_date** `string | null`

When the package was discontinued. `null` when the source gives no value.

**data.result.brand\_name** `string | null`

The brand name. `null` when the source gives no value.

**data.result.version\_or\_model\_number** `string | null`

The version or model number. `null` when the source gives no value.

**data.result.catalog\_number** `string | null`

The catalog number. `null` when the source gives no value.

**data.result.company\_name** `string | null`

The labeler. `null` when the source gives no value.

**data.result.device\_description** `string | null`

The device description. `null` when the source gives no value.

**data.result.commercial\_distribution\_status** `string | null`

The commercial distribution status. `null` when the source gives no value.

**data.result.commercial\_distribution\_end\_date** `string | null`

When commercial distribution ended. `null` when the source gives no value.

**data.result.record\_status** `string | null`

The record status. `null` when the source gives no value.

**data.result.public\_version\_number** `number | null`

The published version of the record. `null` when the source gives no value.

**data.result.public\_version\_date** `string | null`

When the published version was released. `null` when the source gives no value.

**data.result.publish\_date** `string | null`

When the record was first published. `null` when the source gives no value.

**data.result.device\_count\_in\_base\_package** `number | null`

How many devices the base package holds. `null` when the source gives no value.

**data.result.product\_codes** `object[]`

The FDA product codes of the device.

**data.result.product\_codes\[].code** `string | null`

The FDA product code. `null` when the source gives no value.

**data.result.product\_codes\[].name** `string | null`

The product code name. `null` when the source gives no value.

**data.result.product\_codes\[].device\_name** `string | null`

The classification device name. `null` when the source gives no value.

**data.result.product\_codes\[].device\_class** `string | null`

The device class. `null` when the source gives no value.

**data.result.product\_codes\[].regulation\_number** `string | null`

The regulation number. `null` when the source gives no value.

**data.result.product\_codes\[].medical\_specialty** `string | null`

The medical specialty. `null` when the source gives no value.

**data.result.premarket\_submissions** `object[]`

The premarket submissions of the device.

**data.result.premarket\_submissions\[].submission\_number** `string | null`

The submission number; 510(k) numbers start with K and can be looked up in Device Clearances. `null` when the source gives no value.

**data.result.premarket\_submissions\[].supplement\_number** `string | null`

The supplement number. `null` when the source gives no value.

**data.result.premarket\_exempt** `boolean | null`

Whether the device is exempt from premarket submission. `null` when the source gives no value.

**data.result.prescription** `boolean | null`

Whether the device is prescription only. `null` when the source gives no value.

**data.result.over\_the\_counter** `boolean | null`

Whether the device is sold over the counter. `null` when the source gives no value.

**data.result.single\_use** `boolean | null`

Whether the device is single use. `null` when the source gives no value.

**data.result.kit** `boolean | null`

Whether the device is a kit. `null` when the source gives no value.

**data.result.combination\_product** `boolean | null`

Whether the device is a combination product. `null` when the source gives no value.

**data.result.hct\_p** `boolean | null`

Whether the device contains human cells, tissues or cellular or tissue-based products. `null` when the source gives no value.

**data.result.direct\_marking\_exempt** `boolean | null`

Whether the device is exempt from direct marking. `null` when the source gives no value.

**data.result.labeled\_contains\_natural\_rubber\_latex** `boolean | null`

Whether the label says it contains natural rubber latex. `null` when the source gives no value.

**data.result.labeled\_no\_natural\_rubber\_latex** `boolean | null`

Whether the label says it is made without natural rubber latex. `null` when the source gives no value.

**data.result.mri\_safety** `string | null`

The MRI safety statement. `null` when the source gives no value.

**data.result.sterile** `boolean | null`

Whether the device is supplied sterile. `null` when the source gives no value.

**data.result.sterilize\_before\_use** `boolean | null`

Whether the device must be sterilized before use. `null` when the source gives no value.

**data.result.label\_production\_identifiers** `object | null`

Which production identifiers the label carries; null when the identifier is not found.

**data.result.label\_production\_identifiers.lot\_or\_batch** `boolean | null`

Whether the label carries a lot or batch number. `null` when the source gives no value.

**data.result.label\_production\_identifiers.serial\_number** `boolean | null`

Whether the label carries a serial number. `null` when the source gives no value.

**data.result.label\_production\_identifiers.manufacturing\_date** `boolean | null`

Whether the label carries a manufacturing date. `null` when the source gives no value.

**data.result.label\_production\_identifiers.expiration\_date** `boolean | null`

Whether the label carries an expiration date. `null` when the source gives no value.

**data.result.label\_production\_identifiers.donation\_id** `boolean | null`

Whether the label carries a donation identification number. `null` when the source gives no value.

```bash cURL theme={null}
curl -X POST https://win.oneshotagent.com/v1/tools/lookup/product-device-identifier \
  -H "Content-Type: application/json" \
  -H "payment-signature: <base64 x402 payment>" \
  -d '{
    "device_identifier": "04063006002252"
  }'
```

```javascript JavaScript theme={null}
const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/product-device-identifier", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "payment-signature": paymentProof,
  },
  body: JSON.stringify({
    "device_identifier": "04063006002252"
  }),
});
```

```typescript SDK theme={null}
const result = await agent.tool('lookup/product-device-identifier', {
  device_identifier: '04063006002252'
});
console.log(result.result);
console.log(result.evidence);
```

```json Response (200) theme={null}
{
  "success": true,
  "data": {
    "request_id": "uuid",
    "receipt_id": "rcpt_...",
    "status": "completed",
    "tool": "product_device_identifier",
    "result": {
      "found": true,
      "device_identifier": "04063006002252",
      "records_matched": 1,
      "matched_type": "Primary",
      "primary_device_identifier": "04063006002252",
      "issuing_agency": "GS1",
      "identifiers": [
        {
          "id": "04063006002252",
          "type": "Primary",
          "issuing_agency": "GS1",
          "contains_identifier": null,
          "quantity_per_package": null,
          "package_type": null,
          "package_status": null,
          "package_discontinue_date": null
        }
      ],
      "brand_name": "Signia",
      "version_or_model_number": "HA STYLETTO CONNECT 5 B L2 SNW",
      "catalog_number": "10965626",
      "company_name": "Ws Audiology Usa, Inc.",
      "device_description": "Signia HA STYLETTO CONNECT 5 B L2 SNW Hearing Aid",
      "commercial_distribution_status": "In Commercial Distribution",
      "commercial_distribution_end_date": null,
      "record_status": "Published",
      "public_version_number": 4,
      "public_version_date": "2023-02-08",
      "publish_date": "2019-04-10",
      "device_count_in_base_package": 1,
      "product_codes": [
        {
          "code": "OSM",
          "name": "Hearing Aid, Air Conduction With Wireless Technology",
          "device_name": "Hearing Aid, Air-Conduction With Wireless Technology, Prescription",
          "device_class": "2",
          "regulation_number": "874.3305",
          "medical_specialty": "Ear, Nose, Throat"
        }
      ],
      "premarket_submissions": [],
      "premarket_exempt": true,
      "prescription": true,
      "over_the_counter": false,
      "single_use": false,
      "kit": false,
      "combination_product": false,
      "hct_p": false,
      "direct_marking_exempt": false,
      "labeled_contains_natural_rubber_latex": false,
      "labeled_no_natural_rubber_latex": false,
      "mri_safety": "Labeling does not contain MRI Safety Information",
      "sterile": false,
      "sterilize_before_use": false,
      "label_production_identifiers": {
        "lot_or_batch": false,
        "serial_number": true,
        "manufacturing_date": false,
        "expiration_date": false,
        "donation_id": false
      }
    },
    "evidence": {
      "source": "US Food and Drug Administration",
      "source_kind": "public",
      "retrieved_at": "2026-10-28T23:57:26.000Z",
      "calls": [
        {
          "retrieved_at": "2026-10-28T23:57:26.000Z"
        }
      ],
      "as_of": "2026-10-01"
    }
  }
}
```

> [!NOTE]
>
> See [Pricing](https://docs.oneshotagent.com/pricing.md) for this tool's price. A wallet (x402) call receives it in the 402 quote before anything is charged; a call paid from prepaid credits is charged when the API accepts the request and answers `200`.

## Notes

* Supply exactly one of device\_identifier or udi; udi reads GS1 labels only.
* A package identifier returns the device inside it; matched\_type says which level matched.
* Lot, serial and dates on a label are not in the database and are not returned.
* An unknown identifier returns found: false.
* The source refreshes weekly.
* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


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