> For the complete documentation index, see [llms.txt](https://support.iafcertsearch.org/verification-users-api-developer-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.iafcertsearch.org/verification-users-api-developer-guide/api-integration/verification-apis.md).

# Verification APIs

Every verification follows the same journey: from an initial input—a company name, an identifier, or a scanned certificate, to trusted certificate data. Each endpoint is designed for a specific stage of that journey, so the one you call depends on the information you already have.

### Recommended workflow

When you're matching by name, we recommend working through these three steps in order, discover, review, then retrieve. It keeps you in control of which entity you're paying to verify.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td>Search by name to find candidate entities and their IAF CE IDs. No certificates yet, and no credits spent.</td><td></td><td><mark style="color:green;"><strong><code>POST</code></strong></mark> <code>/match-companies</code><br><strong>No credit consumption</strong></td><td data-object-fit="contain"><a href="/files/1w7BNwL79afv87xM3khN">/files/1w7BNwL79afv87xM3khN</a></td></tr><tr><td>Look over the candidates and confirm the right entity is the one you meant. Note its IAF CE ID for the next step.</td><td></td><td><em>Your check, no call</em></td><td data-object-fit="contain"><a href="/files/cWAkzXAJW4KBOzQlqTMz">/files/cWAkzXAJW4KBOzQlqTMz</a></td></tr><tr><td>Pull the full certificate data for the entity you confirmed. This is the step that consumes a credit.</td><td></td><td><strong>SINGLE</strong> verification: <mark style="color:green;"><strong><code>POST</code></strong></mark> <code>/company/{ce_id}</code><br><strong>BULK</strong> verification: <mark style="color:green;"><strong><code>POST</code></strong></mark> <code>/bulk-company-by-id</code></td><td data-object-fit="contain"><a href="/files/YSvlFHWbXj0VYmd5iRz2">/files/YSvlFHWbXj0VYmd5iRz2</a></td></tr></tbody></table>

⚡ **In a hurry?** If you'd rather get certificate data immediately, skip discover and review and call the following endpoints directly:

* <mark style="color:green;">**`POST`**</mark>  `/company`&#x20;
  * **Single verification. It matches and returns the certificates in one call.**
* <mark style="color:green;">**`POST`**</mark>  `/bulk-companies`&#x20;
  * **Bulk verification. It matches and returns certificates in bulk, but only for the exact matches.** Loose matches return company information only, with no certificates. To get the certificate data for a loose match, review it first, then call a retrieval endpoint, either single (`GET /company/{ce_id}`) or bulk (`POST /bulk-company-by-id`).

The trade-off is that you're trusting the automatic match instead of reviewing the candidates yourself, so loose matches come back for you to check rather than being confirmed up front.

### Key terms

A few terms show up throughout this page. Here's what each one means before you dive in.

<table><thead><tr><th width="216.65625">Field Name</th><th>Description</th></tr></thead><tbody><tr><td>Certified Entity (CE)</td><td>A company or organisation that holds one or more certifications in IAF CertSearch. It's the thing you're verifying.</td></tr><tr><td>IAF CE ID <code>ce_id</code></td><td>The unique ID of a Certified Entity. Matching returns it, and you reuse it for direct lookups later. Some match responses label this simply "IAF ID", it's the same value.</td></tr><tr><td>Certificate ID <code>cert_id</code></td><td>The unique ID of a single certificate held by an entity. Use it when you want one specific certificate rather than a whole company.</td></tr><tr><td>Credit</td><td>The billing unit. One credit is consumed each time you successfully retrieve certificate data for a confirmed match. Discovery, loose matches, and unmatched results are free.</td></tr><tr><td>Match rate <code>match_rate</code></td><td>How strict name matching is, from <code>80</code> (loose) to <code>100</code> (exact), in steps of <code>5</code>. Default is <code>90</code>. A higher rate returns fewer but more confident matches.</td></tr><tr><td>Exact match <code>exactly_matched</code></td><td>A match that cleared the strict threshold, confident enough to trust automatically. This is the result that consumes a credit, and the only kind that bulk retrieval returns.</td></tr><tr><td>Loose match <code>loosely_matched</code></td><td>A likely but not certain match. Single <code>/company</code> returns it so you can review it yourself, at no cost. </td></tr></tbody></table>

### Quick pick by what you have

Not sure where you are in the arc? Match your input on the left to the endpoint on the right.

<table data-header-hidden data-header-sticky><thead><tr><th width="248.43359375"></th><th></th></tr></thead><tbody><tr><td><strong>A company name only</strong></td><td><strong>Retrieve Company &#x26; Certificates</strong> (<mark style="color:green;"><strong><code>POST</code></strong></mark> <strong><code>/company</code></strong>). It matches and returns certificates in one call, no separate match step needed.</td></tr><tr><td><strong>A name, but only the IAF CE ID</strong> <em>(no certificates)</em></td><td><strong>Match Companies</strong> (<mark style="color:green;"><strong><code>POST</code></strong></mark> <strong><code>/match-companies</code></strong>). Free discovery and disambiguation.</td></tr><tr><td><strong>Many company names to verify</strong></td><td><strong>Bulk Retrieve</strong> <strong>(</strong><mark style="color:green;"><strong><code>POST</code></strong></mark> <strong><code>/bulk-companies</code>)</strong>. Returns only exact matches, up to 100 per request.</td></tr><tr><td><strong>An IAF CE ID you saved earlier</strong></td><td><strong>Retrieve by IAF ID</strong> (<mark style="color:green;"><strong><code>GET</code></strong></mark> <strong><code>/company/{ce_id}</code></strong>), or <mark style="color:green;"><strong><code>POST</code></strong></mark> <strong><code>/bulk-company-by-id</code> for high volume.</strong></td></tr><tr><td><strong>A certificate ID</strong></td><td><strong>Retrieve Certificate by IAF ID</strong> (<mark style="color:green;"><strong><code>GET</code></strong></mark> <strong><code>/certificate/{cert_id}</code></strong>).<br></td></tr></tbody></table>

### Full endpoint reference

The complete detail for each endpoint, including credit consumption rules.

<table><thead><tr><th width="222.125">Endpoint</th><th width="267.9453125">When to use</th><th width="239.34765625">Consumption</th><th data-hidden>What it does</th></tr></thead><tbody><tr><td><p><mark style="color:green;"><strong><code>POST</code></strong></mark> <a href="/pages/IVGBUI20auNuUXm9vdRU"><strong>Match Companies</strong></a></p><p><strong><code>/match-companies</code></strong></p></td><td>Use <strong>first</strong> when you need to find candidate companies and do not yet have a <code>ce_id</code>. Best for search, review, and discovery flows.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span> No credits consumed. No certificates returned.</td><td>Searches by company name and/or identifiers. Returns up to 10 matching Certified Entity records, including their IAF CE IDs. Does not return certificates. Supports <code>match_result_count</code> to control result count.</td></tr><tr><td><p><mark style="color:green;"><strong><code>POST</code></strong></mark> <a href="/pages/hTCPCHFnqzvoWhFuDSAx"><strong>Retrieve Company &#x26; Certificates</strong></a></p><p><strong><code>/company</code></strong></p></td><td>Use when you need to <strong>verify one company and retrieve its certificates</strong> in one call. The main retrieval endpoint for single-company verification.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> One credit only for <code>exactly_matched</code> results. <code>loosely_matched</code> results return for review with no credit consumed.</td><td>Matches one company by name and/or identifiers, then returns the Certified Entity record with its certificates. Applies <code>match_rate</code> for name-based matching. Default is <code>90</code>; valid values are <code>80</code> to <code>100</code> in steps of <code>5</code>.</td></tr><tr><td><p><mark style="color:green;"><strong><code>POST</code></strong></mark> <a href="/pages/LELvZJcDijZnHVPDVSwp"><strong>Bulk Retrieve Companies &#x26; Certificates</strong></a></p><p><strong><code>/bulk-companies</code></strong></p></td><td>Use when you need to <strong>verify many companies in one request</strong>. Best for batch verification and backfill workflows.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> One credit per <code>exactly_matched</code> result (certificates returned). <code>loosely_matched</code> results return company info only and consume no credit. Skipped entries consume no credit. Max <code>100</code> companies per request.</td><td>Same matching and retrieval logic as <code>POST /company</code>, but accepts up to 100 companies in one request. Exact matches return the full record with certificates. Loose matches return company information only, with no certificates, so you review them and then call a retrieval endpoint for their certs. Invalid, failed, or unmatched companies are skipped. The response includes <code>companies_request_index</code> for correlation.</td></tr><tr><td><p><mark style="color:green;"><strong><code>GET</code></strong></mark> <a href="/pages/JO6lMdWeP6pshUPqA2Va"><strong>Retrieve Company &#x26; Certificates by IAF ID</strong></a></p><p><strong><code>/company/{ce_id}</code></strong></p></td><td>Use when you <strong>already know the IAF CE ID</strong> and want the latest company and certificate data without another match step.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Credits consumed on retrieval. Per-ID billing details are pending confirmation. Max <code>100</code> IDs per request.</td><td>Retrieves Certified Entity records and certificates for one or more known <code>ce_id</code> values. Accepts comma-separated IDs, up to 100. Does not perform name matching or use <code>match_rate</code>.</td></tr><tr><td><p><mark style="color:green;"><strong><code>POST</code></strong></mark> <a href="/pages/if1hXaDPx29OnbQmYFaa"><strong>Bulk Retrieve Company &#x26; Certificates by IAF ID</strong></a></p><p><strong><code>/bulk-company-by-id</code></strong></p></td><td>Use when you need <strong>high-volume retrieval by known <code>ce_id</code> values</strong>. Best for large-scale re-verification and scheduled refreshes.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Credits consumed on retrieval. Same rules as the <code>GET</code> variant. Max <code>1000</code> IDs per request.</td><td>Retrieves Certified Entity records and certificates for up to 1000 known IAF CE IDs in one request. Does not perform name matching.</td></tr><tr><td><p><mark style="color:green;"><strong><code>GET</code></strong></mark> <a href="/pages/JO6lMdWeP6pshUPqA2Va"><strong>Retrieve Certificate by IAF ID</strong></a></p><p><strong><code>/certificate/{cert_id}</code></strong></p></td><td>Use when you need to <strong>look up a specific certificate directly</strong> and already have the <code>cert_id</code>. Ideal for certificate-level verification or audit where the cert ID is known (e.g. scanned from a certificate document).</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Credits consumed on retrieval. Single certificate lookup per call.</td><td>Accepts a single known <code>cert_id</code> and returns that certificate record including its associated certified entities. No company-level matching fields (<code>match_type</code>, <code>match_status</code>) returned.</td></tr></tbody></table>
