POST /api/openfda/device/udi/search
Price: 5 credits
Search the FDA GUDID device identifier registry by brand, company, code, term and flags
Search the FDA GUDID unique device identifier registry. Combine a free-text keyword with structured filters — brand name, company, device description, catalog or model number, product code, GMDN term, prescription/OTC flags, MRI safety, record status and commercial distribution status. Each result is a full device record (same shape as the udi endpoint).
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)keyword string nullable — Free-text query across all UDI fields (examples: "catheter")brand_name string nullable — Device brand name (examples: "ORTHOFIX")company_name string nullable — Labeler company name (examples: "ORTHOFIX SRL")device_description string nullable — Text in the device description (examples: "ecg leadwires")catalog_number string nullable — Catalog number (examples: "99-60003697")version_or_model_number string nullable — Version or model number (examples: "1")product_code string nullable — FDA product code (examples: "HSB")gmdn_term string nullable — GMDN term name (examples: "Bone nail trial")is_rx boolean nullable — Only prescription (or non-prescription) devicesis_otc boolean nullable — Only over-the-counter (or non-OTC) devicesmri_safety string nullable — MRI safety labeling (one of: "MR Safe", "MR Unsafe", "MR Conditional", "Labeling does not contain MRI Safety Information")record_status string nullable — GUDID record status (one of: "Published", "Deactivated", "Archived")commercial_distribution_status string nullable — Commercial distribution status (one of: "In Commercial Distribution", "Not in Commercial Distribution")count integer required — Number of device records to return (min: 1)@type string (default: "OpenfdaDeviceUdi")public_device_record_key string requiredbrand_name string nullablecompany_name string nullabledevice_description string nullableversion_or_model_number string nullablecatalog_number string nullablelabeler_duns_number string nullablerecord_status string nullablecommercial_distribution_status string nullablecommercial_distribution_end_at integer nullablemri_safety string nullabledevice_count_in_base_package string nullablepublic_version_number string nullablepublic_version_status string nullablepublish_at integer nullablepublic_version_at integer nullableis_rx boolean nullableis_otc boolean nullableis_kit boolean nullableis_combination_product boolean nullableis_single_use boolean nullableis_hct_p boolean nullableis_pm_exempt boolean nullableis_direct_marking_exempt boolean nullablehas_expiration_date boolean nullablehas_lot_or_batch_number boolean nullablehas_serial_number boolean nullablehas_manufacturing_date boolean nullablehas_donation_id_number boolean nullableis_labeled_as_nrl boolean nullableis_labeled_as_no_nrl boolean nullableidentifiers array (default: [])@type string (default: "OpenfdaUdiIdentifier")id string requiredidentifier_type string nullableissuing_agency string nullableproduct_codes array (default: [])@type string (default: "OpenfdaUdiProductCode")code string requiredname string nullableopenfda object nullable@type string (default: "OpenfdaBlock")application_number array (default: [])brand_name array (default: [])generic_name array (default: [])manufacturer_name array (default: [])product_ndc array (default: [])package_ndc array (default: [])product_type array (default: [])route array (default: [])substance_name array (default: [])rxcui array (default: [])unii array (default: [])spl_id array (default: [])spl_set_id array (default: [])nui array (default: [])pharm_class_cs array (default: [])pharm_class_epc array (default: [])pharm_class_moa array (default: [])pharm_class_pe array (default: [])is_original_packager array (default: [])device_class string nullabledevice_name string nullablemedical_specialty_description string nullableregulation_number string nullablefei_number array (default: [])registration_number array (default: [])k_number array (default: [])pma_number array (default: [])gmdn_terms array (default: [])@type string (default: "OpenfdaUdiGmdnTerm")code string nullablename string requireddefinition string nullableimplantable boolean nullablecode_status string nullabledevice_sizes array (default: [])@type string (default: "OpenfdaUdiSize")size_type string nullablevalue string nullableunit string nullablestorage array (default: [])@type string (default: "OpenfdaUdiStorage")storage_type string nullablehigh object nullable@type string (default: "OpenfdaUdiStorageBound")value string nullableunit string nullablelow object nullable@type string (default: "OpenfdaUdiStorageBound")value string nullableunit string nullablespecial_conditions string nullablepremarket_submissions array (default: [])@type string (default: "OpenfdaUdiSubmission")submission_number string requiredsupplement_number string nullablecustomer_contacts array (default: [])@type string (default: "OpenfdaUdiContact")phone string nullableemail string nullablesterilization object nullable@type string (default: "OpenfdaUdiSterilization")is_sterile boolean nullableis_sterilization_prior_use boolean nullableweb_url string (default: "")422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.