# SegmentFlow.ai > Public REST API for SegmentFlow.ai — trigger journeys, send broadcasts, manage templates and segments from your own systems. ## Docs - [Finalize a presigned upload](https://segmentflow.ai/docs/api-reference/publicassets/finalize-a-presigned-upload.md): Verifies the bytes landed in S3, strips EXIF/GPS metadata, extracts dimensions, and commits the asset row. - [Request a presigned asset upload](https://segmentflow.ai/docs/api-reference/publicassets/request-a-presigned-asset-upload.md): Pre-mints an asset id and returns a presigned S3 PUT URL. Upload the bytes with the returned headers, then call /assets/{assetId}/finalize. - [List brand kits](https://segmentflow.ai/docs/api-reference/publicbrand-kit/list-brand-kits.md) - [Cancel an in-flight broadcast](https://segmentflow.ai/docs/api-reference/publicbroadcasts/cancel-an-in-flight-broadcast.md): Cancel all in-flight Temporal workflows for a broadcast and mark it Failed. Idempotent — noop (still 200) on broadcasts in terminal states. - [Create and send a broadcast](https://segmentflow.ai/docs/api-reference/publicbroadcasts/create-and-send-a-broadcast.md): Create a broadcast and send immediately. v1 does not support scheduleAt; providing it returns 501. Supports Idempotency-Key header. - [Get broadcast status + stats](https://segmentflow.ai/docs/api-reference/publicbroadcasts/get-broadcast-status-+-stats.md) - [Prepare a broadcast (dry-run, returns preparedSendId)](https://segmentflow.ai/docs/api-reference/publicbroadcasts/prepare-a-broadcast-dry-run-returns-preparedsendid.md): Validate a broadcast draft and return a preparedSendId + audience snapshot. Bytes go nowhere until you redeem the id with /broadcasts/send-prepared. preparedSendIds expire after 15 minutes and are bound to the (organization, user) pair that created them. - [Redeem a preparedSendId and trigger the broadcast](https://segmentflow.ai/docs/api-reference/publicbroadcasts/redeem-a-preparedsendid-and-trigger-the-broadcast.md): Atomically consumes a preparedSendId and starts the broadcast. One-time use — repeated calls with the same id replay the original response (idempotent), they never start a second send. Caller (organization, user) must match the prepare call. Requires the API key's `allowSends` metadata flag. - [Get journey run status](https://segmentflow.ai/docs/api-reference/publicjourneys/get-journey-run-status.md): Fetch the status of a journey run previously created via POST /journeys/{id}/trigger. - [Trigger a journey for a recipient](https://segmentflow.ai/docs/api-reference/publicjourneys/trigger-a-journey-for-a-recipient.md): Start an API-triggerable journey for a single recipient. Returns immediately; poll GET /journeys/runs/{runId} for status. Supports Idempotency-Key header. - [List segments](https://segmentflow.ai/docs/api-reference/publicsegments/list-segments.md) - [Preview segment audience count](https://segmentflow.ai/docs/api-reference/publicsegments/preview-segment-audience-count.md): Recompile the segment's live definition and count matching users from api.user_event. Bypasses the cached segment_membership table. - [Get an email template by id](https://segmentflow.ai/docs/api-reference/publictemplates/get-an-email-template-by-id.md) - [List email templates](https://segmentflow.ai/docs/api-reference/publictemplates/list-email-templates.md) - [Authentication](https://segmentflow.ai/docs/authentication.md): Mint an API key in the dashboard and send it on the x-api-key header. - [Errors](https://segmentflow.ai/docs/errors.md): Status codes and error envelope shape used across the public API. - [Introduction](https://segmentflow.ai/docs/introduction.md): The SegmentFlow.ai public API lets you trigger journeys, send broadcasts, and read templates and segments from your own systems. - [Sending domain](https://segmentflow.ai/docs/sending-domain.md): Verify your domain with SPF, DKIM, and DMARC so SegmentFlow.ai can send email on your behalf. ## OpenAPI Specs - [openapi](https://segmentflow.ai/docs/api-reference/openapi.json)