Marketing Studio Ad References

Ad references are reusable inspiration videos a user wants to model new ads after — typically tied to a specific avatar and/or product. The backend processes the input video and stores a reusable reference the user can recall later.

Inputs

Create an ad reference from one of two source types:

Exactly one of these two flags is required.

Optional binding flags (each accepts at most one id):

Sources accepted

There are exactly two supported inputs:

If the user supplies anything else (a URL, a streaming link, an external reference), ask for a local video file. Do not attempt to fetch or convert other inputs.

Constraints

Create

# From an uploaded local video
UPLOAD_ID=$(higgsfield upload create reel.mp4 --video --json | jq -r .id)
REF_ID=$(higgsfield marketing-studio ad-references create --video-input $UPLOAD_ID --json | jq -r .id)

# From a previous generation job
JOB_ID="b1a2c3d4-..."
higgsfield marketing-studio ad-references create --job $JOB_ID --json

# Bind to an avatar and product at creation time
higgsfield marketing-studio ad-references create \
  --video-input $UPLOAD_ID \
  --avatar <avatar_id> \
  --product <product_id> \
  --json

The backend kicks off processing asynchronously. Newly created references start in status: queued then move to in_progress and finally completed (or failed).

Discover

higgsfield marketing-studio ad-references list
higgsfield marketing-studio ad-references list --json
higgsfield marketing-studio ad-references list --size 50 --cursor <cursor>

Aliases: ad-refs, adrefs.

The response shape is:

Inspect

higgsfield marketing-studio ad-references get <id>
higgsfield marketing-studio ad-references get <id> --json

Use this to check status, read fail_reason when status: failed, or grab video_s3_url once status: completed.

Polling for completion

create returns immediately with status: queued. The reference is not usable for generation until status: completed. There is no built-in --wait flag, so poll explicitly:

REF_ID=$(higgsfield marketing-studio ad-references create --video-input $UPLOAD_ID --json | jq -r .id)
while :; do
  STATUS=$(higgsfield marketing-studio ad-references get $REF_ID --json | jq -r .status)
  case "$STATUS" in
    completed) break ;;
    failed)
      REASON=$(higgsfield marketing-studio ad-references get $REF_ID --json | jq -r .fail_reason)
      echo "Ad reference failed: $REASON" >&2
      exit 1
      ;;
    *) sleep 5 ;;
  esac
done

Always wait for completed before passing the reference id to a generation step.