Authenticate to api.zyte.com with HTTP Basic auth, key as username, blank password. The trailing colon in --user KEY: matters - it denotes the empty password. Do not send the key as a Bearer [redacted] or a query parameter; those fail. This is the single most common first-call failure against the API.

Context: Zyte field notes (scraping-vendors.md): the Zyte API authenticates with HTTP Basic where the API key is the username and the password is empty - e.g. curl --user YOUR_ZYTE_API_KEY - against POST https://api.zyte.com/v1/extract.