Base64 Transcode — strict, both alphabets, per-item errors
Encodes and decodes base64 in either alphabet. Decoding is strict: input that is not well-formed base64 is refused with a reason and a position, instead of being silently repaired into bytes you did not send.
Called as text.base64.transcode.
What it accepts
One direction, one alphabet, and the strings to transcode. Every item gets its own result: a bad item is reported and not billed, and it does not stop the ones after it.
| Field | Type | Meaning |
|---|---|---|
direction | string | Encode turns text into base64. Decode turns base64 back into text, and refuses anything that is not well-formed. One of encode, decode. |
alphabet | string | Standard uses + and / and pads with =. URL-safe uses - and _ and no padding, which is what makes the value usable in a query string or a filename. Decoding refuses the other alphabet's characters, so a mismatch is an error rather than a surprise. One of standard, url-safe. |
items | array | The strings to transcode, in order. Results carry the index they came from. At most 2,000 per call: at 50 ms an item that is 102 seconds, inside the platform's hard 300-second window for a synchronous call. A larger job is several calls, which is deliberate. |
What a run leaves behind
| Results, one row per item | One row per item in the order they were given, each carrying its index. A failed item is written here too, with the rule it broke and the position, so a caller can tell an item that could not be transcoded from one that was never reached. |
|---|---|
| Report: what the run did, including what it did not do | delivered, succeeded, failed, notAttempted and stoppedEarly. notAttempted above zero with stoppedEarly true is a complete answer, not a truncated one: the caller's spending limit stopped the work and the run says how many it never reached. |
What it costs
- Per call
- $0.001
charged when the run opens - Per item delivered
- $0.0002
an item that fails is not billed
An item that fails is not billed, and one bad item does not stop the ones after it. What that adds up to, and what a spending limit does to a run in progress, is on the pricing page.
What would end it
Either the channel absorbs it as a free built-in function, or monthly revenue falls below the cost of keeping it running for two months in a row. Neither is a prediction: both are thresholds checked at every review.
Written before it happens, on purpose. A capability that quietly stops being worth running costs its buyers more than one that says in advance how it ends.
Facts
| Version | 0.1.0 |
|---|---|
| Available | Yes, on Apify Store |
| Channel | Apify Store |
| How to call it | Console, HTTP or MCP |
| This page as Markdown | /c/text-base64.md — the same facts without the markup, plus the full input schema and a real example of what comes back |