Azure AI Search Custom Web API Skill: Add Archive Provenance Without Mixing Record IDs

A small museum indexes catalog notes from approved collections and needs a custom field naming the source revision used for each searchable summary. Azure AI Search supports a Custom Web API skill that receives records from an indexer and returns derived fields. The key reliability question is not whether an endpoint can produce a plausible phrase; it is whether every output belongs to the correct source record and whether private records stay private. This hypothetical design shows a provenance enrichment that can be checked independently of an AI-generated answer.

Define the provenance field before adding a skill

List the fields that already identify a collection item: accession ID, source repository, approved revision, language, visibility and source-document checksum where permitted. Decide exactly what the custom skill should add—for example a normalized display citation or a reference to an approved revision record. A custom endpoint must not invent an authorization status or label a draft as approved. Establish the source of truth for provenance before writing code that transforms it.

Keep access-control fields under a trusted ingestion policy, not under a natural-language model that can be persuaded by text inside a scanned document. If a donor note says ‘share freely’ but the catalog access table marks it restricted, the permission table wins. Define null and error behavior for missing provenance rather than substituting the neighboring record’s identifier. Reviewers should be able to trace every derived field to the original indexed document.

Respect the values and recordId contract

Microsoft’s custom skill interface passes a JSON object with a values array. Each item has a recordId and a data object containing inputs. The skill’s response also uses values with the corresponding recordId and data, optionally including errors and warnings. The indexer uses this key to align records; output order alone is not an identity guarantee. Design the enrichment function as a per-record transformation with explicit type checking and deterministic source associations.

Original conceptual educational illustration of Azure AI Search Custom Web API Skill. Process: Read approved archive record → Send records with recordId → Return mapped enrichment → Verify indexing and ACL. Not a screenshot, live test, or measured result.

As a concrete example, if two records arrive as recordId ‘a1’ and ‘b5,’ a successful reply may return ‘b5’ before ‘a1’ while preserving the keys. A response with duplicate or missing recordId values is invalid for enrichment. Validate that each input record is represented exactly once, that the output field belongs to the matching accession record, and that a failed item cannot borrow data from the previous successful item.

Secure the HTTPS endpoint and inputs

A Custom Web API skill calls an HTTPS endpoint hosted by your application or function. Microsoft’s documentation describes authentication options including managed identity with Microsoft Entra ID. Use the least-privilege option supported by your environment; do not put archival secrets in source files or expose a general-purpose internal API to the public merely for indexing. Minimize the fields sent to the skill and keep sensitive note text out when the transformation needs only IDs and revision data.

Reject unexpected input schemas and long or malformed values. Keep the endpoint’s permissions narrower than the indexing service’s overall permissions, and verify logs do not capture whole restricted documents by default. If a service-generated label may be used in public search snippets, route it through an approval step. The custom skill framework does not waive consent, copyright or access requirements.

Process errors by record, not as false success

Microsoft documents per-record errors and warnings. A record that cannot be mapped to an approved source should return an explicit issue rather than an empty but apparently verified citation. A successful HTTP response is not sufficient if the JSON shape is invalid or the data object is missing required fields. The indexer history is part of the operational evidence; inspect it for failures, skipped skills and unmapped outputs.

Microsoft’s scaling guide distinguishes success status 200 and multi-status 207 when some records have errors; other HTTP errors can fail the batch. Only choose warnings for conditions where continuing would still produce a safe, clearly qualified record. If the provenance is required for publication, hold the affected document out of public results instead of treating a blank source as approval. A retry must preserve the same record identity.

Compare a broken join with a verified record

Draw three distinct stages: two source folders with different accession IDs, a broken response where a derived citation is attached to the wrong ID, and a corrected response that preserves recordId alignment and leads to a verified public result. This is a conceptual defect example, not observed Azure output. The comparison should make identity mismatch visible rather than showing three identical JSON cards.

Original conceptual educational illustration of Azure AI Search Custom Web API Skill. Comparison: Two approved source IDs, Mismatched output detected, Provenance and access verified. Not a screenshot, live test, or measured result.

An archive search interface should expose the original accession ID and version beside the derived description. Test retrieval of an object whose name resembles another object’s name but has a different number. Confirm that the enriched citation points to the right source record and that the search index can be rebuilt without renumbering source IDs. Any uncertainty about source mapping should cause a review flag rather than a guessed match.

Test on a separate skillset and sample

Build a small, permission-cleared fixture containing valid records, a missing revision, duplicates, malformed data and a restricted record. Test the endpoint directly for correct JSON, content type and status codes before involving the search indexer. Use an Azure AI Search debug session to review representative documents, but recognize that a single debugged document cannot prove correctness across an entire index.

Microsoft’s guidance identifies skill batchSize, degreeOfParallelism and timeout as tuning parameters. Adjust them using recorded application and indexer behavior, not assumptions about optimum throughput. Start conservatively, inspect errors and measure actual workload performance before scaling. If a record consistently fails, preserve the failure reason; do not repeatedly retry it without checking whether the source data or endpoint contract is wrong.

Check access filtering after enrichment

Rebuild a test index containing both publicly approved and restricted materials. Apply the application’s authorization filters before returning any search result, facet or snippet. Confirm that adding a provenance field cannot change a restricted record into a public one. Test by querying a distinctive term that exists only in a restricted source and ensure that the public endpoint returns no identifying metadata.

Original conceptual educational illustration of Azure AI Search Custom Web API Skill. Review points: Unique recordId each way, Validate data and warnings, Restrict skill endpoint, Confirm source ACL before search. Not a screenshot, live test, or measured result.

Audit enrichment results separately from retrieval permissions. A perfectly matching recordId can still belong to a restricted item. Conversely, a public record whose provenance is broken should be held for review, not silently hidden from staff who need to repair the index. Keep the raw source, derived enrichment and access decisions in appropriately separated logs.

Release the skill with an accountable rollback

Version the skill contract, code, input mapping, output mapping and indexed schema together. Record who reviewed the source permissions and which test fixtures were used. Deploy first to a staging index and compare expected accession IDs, missing-value behavior and restricted-result leakage against the approved baseline. Preserve a previous index or reversible deployment path so a mapping regression can be corrected.

The API can enrich records, but it cannot certify that a museum has rights to publish them. The sample objects and diagrams here are fictional, not screenshots or a live service evaluation. Before production, check current Microsoft documentation, endpoint authentication, response limits and cost, then have collection staff verify the citations and access policy for the affected records.

How We Research

For this November 2026 article, we examined named, official documentation: Microsoft custom skill interface; Microsoft custom Web API skill; Microsoft custom skill scale and management; Microsoft indexer troubleshooting. We cross-checked response shapes, feature boundaries, and stated limitations, then built a clearly hypothetical nonprofit example to explain manual verification and permission controls. This was documentation-based editorial research only: we did not process real records, run vendor experiments, measure success rates or imply that machine-generated text is approved. The original teaching diagrams are schematic, not product screenshots or tested outcomes. Recheck current API documentation, pricing, region availability, input rights, and internal release policies before implementation.

Frequently Asked Questions

Can the custom skill return records in a different order?

Yes, provided each returned item preserves the matching unique recordId.

What happens if recordId is missing or duplicated?

Microsoft documents those as invalid records that are not enriched correctly.

Does a 200 HTTP status guarantee a correct index?

No. Validate JSON shape, field mappings, warnings and source identity.

Can the skill decide whether an archive item is public?

It should not; authorization must come from trusted policy and be enforced in retrieval.

Is a one-document debug session sufficient?

No. It helps diagnose a sample; test multiple variants and the full access boundary before release.

Scroll to Top