Core Concepts
What Brand Intelligence does
Adobe Brand Intelligence validates creative assets against your organization's brand guidelines. You submit assets - images, documents, layouts - and Brand Intelligence checks each one against a set of brand rules (colour palette, typography, logo usage, and so on). For each asset, Brand Intelligence returns findings with human-readable messages and attributions.
The REST API base URL is https://brand-intelligence.adobe.com. Your tenant is resolved from your access token; Use GET /index to discover your tenant's ID and name.
Use GET /campaigns?skill=validate to list available campaigns. An optional campaignId on a validation request selects a campaign.
Async invocation model
Validation is asynchronous. You submit a batch of items and receive an invocationId immediately; Brand Intelligence processes each item in the background and you poll for results.
POST /skills/validate → 202 Accepted { invocationId }
GET /skills/validate/{invocation_id} → invocation status + counts
GET /skills/validate/{invocation_id}/items → per-asset results
This design keeps the API responsive for large batches.
Asset sources
The REST API accepts uploaded assets only. Each item must use itemSource: "upload" and reference an upload:
- Request an upload location with
POST /storage/temp(no request body). - Upload the asset bytes to the returned
uploadUrlbeforeuploadUrlExpiresAt. - Set the item's
sourceRefto the returneduploadIdwhen submitting validation.
uploadId identifies the temporary upload; itemId identifies an item returned by the validation results endpoints. Use the returned itemId for item detail and feedback requests. See Using curl for the full upload flow.
Resource hierarchy
Invocation
└── Items (one per submitted entry)
└── Violations (reviewer feedback + pipeline findings on the item)
Invocation - represents a single validation run. Created by POST /skills/validate, with skill: "validate" in the response. Tracks overall status and aggregate counts (successCount, failureCount).
Item - represents one submitted entry within an invocation. Contains a result.summaryText and result.violations, result.passes, and result.rejections lists.
Violation - a single finding on an item. Violations are either generated by the validation pipeline (violationSource: system) or created by your application on behalf of a human reviewer (violationSource: user).
Invocation lifecycle
An invocation moves through the following states:
queuedrunningcompletedsuccessCount / failureCount for the outcome.failedcancelledOnce an invocation reaches completed, failed, or cancelled it will not change state again. Poll until you see one of these terminal states before processing results.
Item status values
Each item within an invocation moves through its own status independently:
pendingqueuedrunningcompletedfailedcancelledrejectedValidation results
Each item's detail (GET /skills/validate/{invocation_id}/items/{item_id}) contains a result object with:
-
summaryText- a human-readable narrative of the validation outcome. -
violations- list of individual findings. Each violation includes:violationId- unique identifier for this finding.violationSource-system(pipeline-generated) oruser(reviewer-authored).violationSummary- human-readable description of the finding.assetAttributions- regions within the submitted asset that triggered the finding, each with aregionsarray (bounding box in normalised 0–1 coordinates).corpusAttributions- chunks from the brand guidelines corpus the finding was assessed against, each with adocumentUrlandchunkUrlpointing to the guideline source.reviewStatus-accepted,rejected, ornullif no reviewer feedback has been recorded yet.
-
passesandrejections- additional finding lists with the sameValidateItemViolationshape.
For a successfully completed item, an empty violations array means no violations were reported. Check the item's status before treating an empty list as a successful validation. See Review Feedback for how to accept, reject, or add violations. Updates require the current recordVersion in a quoted If-Match header; successful updates return 204 No Content and the new version in ETag.
See the API Reference for the full ValidateItemViolation schema.
Pagination
GET /skills/invocations?skill=validate lists invocations submitted by the current user, most recent first. The skill query parameter is required (validate or iassemble). This endpoint and GET /campaigns support cursor-based pagination: pass an optional limit (1–100) and use the previous response's page.next as start. The limit is a hint, not a guaranteed page size. When page.next is absent or null, there are no further pages. Campaign listing defaults to skill=validate if the filter is omitted.
Authentication
The signed upload URL authorizes the separate storage PUT; do not send your IMS token to storage.
Every request requires an IMS Bearer token in the Authorization header. Tokens are valid for 24 hours. See Authentication for setup instructions.