# aplusContent_validateContentDocumentAsinRelations (https://sellersheetai.com/docs/mcp-api/tools/aplusContent_validateContentDocumentAsinRelations)

> Validate ASINs against an A+ content document before linking — no changes made (read-only).

Access: **READ** · toolset amazon_sp · family sp.aplusContent_2020-11-01

Amazon SP-API · validateContentDocumentAsinRelations · POST /aplus/2020-11-01/contentAsinValidations Non-mutating: requires only read access (a read-only user can validate eligibility before asking someone with write access to link). Call this before ``aplusContent_postContentDocumentAsinRelations`` when you're unsure about ASIN eligibility, or to diagnose why the link_asins step failed inside ``aplusContent_create_and_publish``. Returns Amazon's per-ASIN error objects — an empty list means all ASINs are valid. The SP-API validates against the full ``contentDocument`` you pass; the wire request carries only marketplaceId + asinSet + contentDocument. There is NO contentReferenceKey on this Amazon operation, so none is accepted here — pass the document you intend to create, or the existing document retrieved via ``aplusContent_getContentDocument``.

## Call it

MCP tool call:

```json
{
  "name": "aplusContent_validateContentDocumentAsinRelations",
  "arguments": {
    "store": "myStore-US",
    "asinSet": [],
    "contentDocument": {}
  }
}
```

Tool API (early access — contact us):

```bash
curl -X POST https://api.sellersheetai.com/api/v1/tools/aplusContent_validateContentDocumentAsinRelations \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store":"myStore-US","asinSet":[],"contentDocument":{}}'
```

## Arguments

| Name | Type | Required | Description |
|---|---|---|---|
| `store` | string | yes | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
| `asinSet` | string[] | yes | List of ASIN strings to validate (e.g. ['B0XXXXXXXX']). Each ASIN is at least 10 chars. |
| `contentDocument` | object | yes | Full content document dict (same structure as aplusContent_create_and_publish). This is what the SP-API actually validates the ASINs against. |

## Result

- `data.asinCount` — number of ASINs validated.
- `data.errors` — Amazon's validation findings, each {code, message, details} (this operation reports findings under `errors`, not `issues`). Empty list means all ASINs are eligible for this content document.
- `data.warnings` — (if present) Amazon advisory messages, same {code, message, details} shape. Not returned when Amazon reported errors — the SDK surfaces that response as an error list only.

## Body (Amazon schema)

- contentDocument*: {name* (max 100 chars), contentType*: EBC | EMC, contentSubType, locale* (min 5 chars), contentModuleList*: [{contentModuleType*, standardCompanyLogo, standardComparisonTable, standardFourImageText, standardFourImageTextQuadrant, standardHeaderImageText, standardImageSidebar, standardImageTextOverlay, standardMultipleImageText, standardProductDescription, standardSingleImageHighlights, standardSingleImageSpecsDetail, standardSingleSideImage, standardTechSpecs, standardText, standardThreeImageText}] (1–100)} contentDocument.contentModuleList.contentModuleType: STANDARD_COMPANY_LOGO | STANDARD_COMPARISON_TABLE | STANDARD_FOUR_IMAGE_TEXT | STANDARD_FOUR_IMAGE_TEXT_QUADRANT | STANDARD_HEADER_IMAGE_TEXT | STANDARD_IMAGE_SIDEBAR | STANDARD_IMAGE_TEXT_OVERLAY | STANDARD_MULTIPLE_IMAGE_TEXT | STANDARD_PRODUCT_DESCRIPTION | STANDARD_SINGLE_IMAGE_HIGHLIGHTS | STANDARD_SINGLE_IMAGE_SPECS_DETAIL | STANDARD_SINGLE_SIDE_IMAGE | STANDARD_TECH_SPECS | STANDARD_TEXT | STANDARD_THREE_IMAGE_TEXT contentDocument.contentModuleList.standardImageTextOverlay.overlayColorType: DARK | LIGHT contentDocument.contentModuleList.standardSingleSideImage.imagePositionType: LEFT | RIGHT

## Workflow

- 1. Call with your intended asinSet and contentDocument. 2. data.errors empty → link with aplusContent_postContentDocumentAsinRelations or create with aplusContent_create_and_publish. 3. data.errors not empty → show them to the user; fix eligibility before retrying.