> For the complete documentation index, see [llms.txt](https://docs.skail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skail.dev/construir/escrever-fluxos.md).

# Escrever fluxos

Uma tarefa por página, do disparo pela API ao tratamento de erros. Cada guia assume que você já rodou o Quickstart.

* [Como disparar uma função pela API HTTP](/construir/escrever-fluxos/como-disparar-uma-funcao-pela-api-http.md). O padrão completo para iniciar uma `[SkailFunction]` a partir do seu sistema: um cliente HTTP configurado uma vez, um serviço que dispara com id de negócio, e retry no chamador.
* [Como disparar um evento pela API HTTP](/construir/escrever-fluxos/como-disparar-um-evento-pela-api-http.md). Como acordar uma function que está parada em `SkailTask.WaitForEvent`, a partir de um webhook, de uma tela ou de um job. O disparo é um `POST` na API do skail; esta página mostra o padrão completo dos dois lados.
* [Como esperar com timeout](/construir/escrever-fluxos/como-esperar-com-timeout.md). Toda espera por evento externo leva um prazo. Este guia mostra o padrão `WhenAny` com `WaitForEvent` e `Delay`, o que fazer quando o prazo vence, e como enviar um lembrete antes de vencer.
* [Como executar em paralelo e agregar resultados](/construir/escrever-fluxos/como-executar-em-paralelo-e-agregar-resultados.md). Como disparar vários commands ao mesmo tempo dentro de uma function, esperar todos com `WhenAll` ou o primeiro com `WhenAny`, e ler os resultados sem depender da ordem de término.
* [Como escrever commands idempotentes](/construir/escrever-fluxos/como-escrever-commands-idempotentes.md). O skail garante que um command não executa de novo depois de gravar o resultado. Ele não pode garantir que o efeito externo aconteceu uma única vez se o command falhar entre o efeito e a gravação. Este guia mostra como fechar essa janela com uma chave de negócio, em três situações.
* [Como tratar erros e compensar](/construir/escrever-fluxos/como-tratar-erros-e-compensar.md). Onde o `try/catch` entra em uma function, o que fazer com uma exceção que esgotou as tentativas, como desfazer passos anteriores com compensações, e o que nunca capturar.
* [Como passar dados entre função e commands](/construir/escrever-fluxos/como-passar-dados-entre-funcao-e-commands.md). Argumentos e retornos de functions e commands são gravados no histórico da execução e desserializados a cada replay. Este guia diz o que passar, o que não passar, e como desenhar os tipos.
* [Como migrar código existente](/construir/escrever-fluxos/como-migrar-codigo-existente.md). Como pegar um fluxo que já existe no seu sistema (jobs, filas, tabela de controle) e transformá-lo em uma function skail, sem reescrever o sistema. Em quatro passos, com o código antes e depois.
