Streaming and asynchronous jobs
Streaming with convertStream
convertStream returns a Observable<string> that emits a value for each fragment — combine it with RxJS’s scan if you prefer to accumulate text reactively instead of signal.update:
convertStream requires your proxy backend to forward the stream without buffering (see Framework Guide). If your backend accumulates the entire response before forwarding it, you will lose the latency benefit of streaming even if the Observable is still working (you will receive everything in a single next).
Jobs due to saturation (202)
When all backends of API are busy, the request is queued and 202 responds with a job_id. See GET /jobs/{id}. How you handle it depends on whether your proxy backend does the polling for you or delegates it to the frontend.
Poll delegado al backend (recomendado)
If your proxy backend uses SDK of Node.js/Python/etc. with autoPoll: true (the default in those SDKs), Angular never sees the 202 — the HTTP request to your backend simply takes longer and convertFile/convertFromUrl resolve to the final result.
Manual poll from Angular
If your backend forwards the 202 as is (for example, to not block a long HTTP connection), handle the poll in the component:
Under normal load conditions you won’t see 202 — it only happens when all backends are saturated. If your backend uses any of the other official SDKs with auto-poll (the default behavior), you don’t need to implement manual polling in Angular at all.
Results for completed jobs expire in approximately 1 hour. If you save a jobId and getJob returns 404, resend the original conversion.