# /iec/publications/search

`POST /api/iec/publications/search`

Price: 20 credits

Search the IEC Webstore catalogue of IEC, CISPR, IECEE, IECEx, IECQ and joint ISO/IEC, IEC/IEEE and IEC/ASTM publications. Narrows by free text, deliverable type, the form the document is sold in, publishing body, lifecycle status, file format, technical committee and subcommittee, ICS classification code and publication date range, and orders by reference, publication date or relevance. Each result is the full catalogue record: reference, title, abstract, edition, status, price in Swiss francs, page count, committee, ICS codes, the edition and amendment lifecycle and the citation graph.

## How to use it

This is the IEC electrotechnical catalogue only — ISO's own standards live behind /iso/standards/search, and only the jointly published ISO/IEC series appears in both. By default the answer is limited to currently published documents; pass `statuses` to reach revised, replaced or withdrawn ones, which is how you research the history of a reference rather than its current edition. `publication_types` and `document_forms` are different axes and are often confused: an IS can be sold as a plain STANDARD, a CONSOLIDATED text including its amendments and a REDLINE showing the changes, so a search without `document_forms` returns all three as separate rows for the same standard. A shorter `ics_codes` value widens the result set. TRF rows are not standards documents; set `include_test_reports` to false to drop them. `count` tops out at 1000 with no further pages beyond that, so split a broad question by committee, ICS code or date range rather than raising it.

## Parameters

- `access-token` (string, required)

## Request body

- `timeout` (integer) — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)
- `query` (string, nullable) — Free text matched against reference, title and abstract (examples: "transformer", "IEC 60335-1", "photovoltaic"; minLength: 1)
- `publication_types` (array, nullable) — Deliverable type: IS international standard, TS technical specification, TR technical report, PAS publicly available specification, TRF IECEE test report form, and the smaller series (one of: "IS", "TRF", "TR", "TS", "PAS", "GUIDE", "SRD", "OTHER", "WP", "STTR", "TEC", "TMOP")
- `document_forms` (array, nullable) — Form the document is sold in: STANDARD is the base text, CONSOLIDATED merges the base text with its amendments, REDLINE marks the changes against the previous edition, PACK bundles several publications, SERIES covers a whole numbered family (one of: "STANDARD", "PUBLICATION", "CONSOLIDATED", "REDLINE", "COMMENTED", "EXTENDED", "PACK", "PRERELEASE", "SERIES")
- `publishers` (array, nullable) — Publishing body the reference is headed with, including the joint ISO/IEC, IEC/IEEE and IEC/ASTM series and the IECEE, IECEx and IECQ conformity-assessment systems (one of: "IEC", "ISO/IEC", "IECEE", "ISO", "CISPR", "ISO/IEC/IEEE", "IECEx", "IEC/IEEE", "IECQ", "IEC/ASTM", "IEC/ISO", "IEC/ISO/IEEE")
- `statuses` (array, nullable) — Lifecycle status. Left unset the search covers currently published documents only; setting it opens the whole catalogue and returns exactly the statuses asked for (one of: "PUBLISHED", "REVISED", "REPLACED", "WITHDRAWN")
- `file_formats` (array, nullable) — Restrict to publications sold in at least one of these file formats (one of: "PDF", "DOC", "XML", "TRF")
- `committees` (array, nullable) — Technical committee codes as the catalogue writes them (examples: ["TC 61"], ["CIS/B","TC 100"])
- `subcommittees` (array, nullable) — Subcommittee codes below a technical committee (examples: ["CIS/B"], ["SC 121A"])
- `ics_codes` (array, nullable) — ICS classification codes at any of the three levels: a two-digit field ('97'), a five-character group ('33.100') or a full subgroup ('33.100.10') (examples: ["97"], ["33.100"], ["33.100.10","29.020"])
- `published_from` (string, nullable) — Earliest publication date, ISO format YYYY-MM-DD (examples: "2020-01-01")
- `published_to` (string, nullable) — Latest publication date, ISO format YYYY-MM-DD (examples: "2024-12-31")
- `include_test_reports` (boolean) — Keep IECEE test report forms (TRF) in the result set (default: true)
- `sort` (string) — Result ordering (default: "reference_asc"; one of: "reference_asc", "reference_desc", "publication_date_asc", "publication_date_desc", "relevance")
- `count` (integer, required) — Max number of results to return (min: 1; max: 1000)

## Response

### 200 — Successful Response

- `@type` (string) (default: "IecPublication")
- `id` (string, required)
- `urn` (string, nullable)
- `url` (string, nullable)
- `art_num` (string, nullable)
- `reference` (string, nullable)
- `reference_parts` (object, nullable)
  - `@type` (string) (default: "IecReferenceParts")
  - `head` (string, nullable)
  - `number` (string, nullable)
  - `part` (string, nullable)
  - `section` (string, nullable)
  - `amendment` (string, nullable)
  - `corrigendum` (string, nullable)
  - `version` (string, nullable)
  - `issue` (string, nullable)
- `publication_title` (string, nullable)
- `abstract` (string, nullable)
- `edition` (string, nullable)
- `status` (string, nullable)
- `document_form` (string, nullable)
- `publication_date` (string, nullable)
- `isbn` (string, nullable)
- `page_count` (integer, nullable)
- `price` (object, nullable)
  - `@type` (string) (default: "IecPrice")
  - `amount` (number, nullable)
  - `currency` (string, nullable)
- `available_formats` (array) (default: [])
- `available_files` (array) (default: [])
  - `@type` (string) (default: "IecAvailableFile")
  - `file_format` (string, nullable)
  - `language` (string, nullable)
  - `file_type` (string, nullable)
  - `has_full_pdf` (boolean, nullable)
  - `has_supporting_content` (boolean, nullable)
  - `has_zipped_document` (boolean, nullable)
- `preview_languages` (array) (default: [])
- `deliverables` (array) (default: [])
  - `@type` (string) (default: "IecDeliverable")
  - `art_num` (string, nullable)
  - `deliverable_type` (string, nullable)
  - `location` (string, nullable)
  - `languages` (array) (default: [])
  - `last_update` (string, nullable)
- `committee` (object, nullable)
  - `@type` (string) (default: "IecCommittee")
  - `level_1` (string, nullable)
  - `level_1_title` (string, nullable)
  - `level_2` (string, nullable)
  - `level_2_title` (string, nullable)
- `ics` (array) (default: [])
  - `@type` (string) (default: "IecIcsCode")
  - `level_1` (string, nullable)
  - `level_1_title` (string, nullable)
  - `level_2` (string, nullable)
  - `level_2_title` (string, nullable)
  - `level_3` (string, nullable)
  - `level_3_title` (string, nullable)
- `classifications` (array) (default: [])
  - `@type` (string) (default: "IecClassification")
  - `classification_type` (string, nullable)
  - `value` (string, nullable)
- `lifecycle` (array) (default: [])
  - `@type` (string) (default: "IecLifecycleEntry")
  - `id` (string, nullable)
  - `reference` (string, nullable)
  - `edition` (string, nullable)
  - `publication_date` (string, nullable)
  - `forecast_publication_date` (string, nullable)
  - `status` (string, nullable)
  - `stage` (string, nullable)
  - `is_in_progress` (boolean, nullable)
  - `is_national_committee_only` (boolean, nullable)
- `related_publications` (array) (default: [])
  - `@type` (string) (default: "IecRelatedPublication")
  - `id` (string, nullable)
  - `reference` (string, nullable)
  - `status` (string, nullable)
  - `url` (string, nullable)
- `referenced_by` (array) (default: [])
  - `@type` (string) (default: "IecRelatedPublication")
  - `id` (string, nullable)
  - `reference` (string, nullable)
  - `status` (string, nullable)
  - `url` (string, nullable)

## Errors

### 422 — Validation Error

An ICS code, date or sort value is malformed, or sort=relevance was passed without a query

What to do: Check the fields against this schema. A URN with the wrong prefix is the most common cause.

- `detail` (array)
  - `loc` (array, required)
  - `msg` (string, required)
  - `type` (string, required)
  - `input` (any)
  - `ctx` (object)

### 408

The request ran past its time limit

What to do: 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

No publication matched the filter combination

What to do: 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

What to do: 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

What to do: 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

What to do: Wait at least 30 seconds, then retry.

## Response envelope

Success: Array of objects (may be empty if no results)

Error: Error may coexist with partial results if it occurs mid-execution. Check X-Error header and status code.

Every response carries these headers:

- `X-Error` — Error message text (present only on error)
- `X-Request-ID` — Unique request identifier
- `X-Execution-Time` — Execution time in seconds
- `X-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.

