A run that can read your repeat memory but not write to it now says so, instead of letting your next run pay for everything twice. The previous entry covered a token that cannot OPEN that memory. This is the other half: an API token can be allowed to read key-value stores and not to write them — or to write them and not to create one you do not have yet — and such a run opens your memory, recognises every reel you already had correctly, and then remembers nothing it delivered. The run looks perfect and your NEXT run is charged for the whole delivery all over again — here the reel and the transcript you already paid for. The run page now names it the moment the first write is refused, an uncharged row at the top of the dataset carries the cause and the fix in full, the receipt carries repeatWrite: "denied_scope", and the run log keeps Apify's own message and adds the permission to grant: key-value store Write (and Create), or Actor runs set to Full access, under Settings → API & Integrations. A write that fails for an ordinary reason is still just retried bookkeeping and says nothing. Both run-page sentences are also shorter and now read the same on every actor in the portfolio, with the whole fix on the row. No price, no input field, no delivered column and no charged event changed.
The run page no longer says "50 searchs". A run across more than one search phrase printed a plural that does not exist in English, while the receipt on the same run said "50 searches". One spelling now, on both. Nothing about what is collected or charged changed.
A run that cannot open your account's repeat memory now says so instead of quietly charging you twice. This actor promises you never pay for the same reel twice, and never pay twice for a transcript you already bought: it remembers what it delivered to your account in a key-value store there, and skips those next time. A run started from the API with a scoped token in restricted-access mode cannot open that store unless the token is allowed to — so the check never ran, every reel you already had was collected and charged again (and re-transcribed), and nothing on the run page, the rows or the receipt said a word about it. The run page now names the cause and the fix, an uncharged row at the top of the dataset says the same thing for anything reading rows rather than the page, the receipt carries repeatCheck: "unavailable_scope", and the run log keeps Apify's own message and adds the permission to grant: key-value store Read, Write and Create, or Actor runs set to Full access, under Settings → API & Integrations. Every other reason the memory can be unreadable reads exactly as it did before. No price, no input field, no delivered column and no charged event changed.