EmbodiFlowDocs
Get startedDataWorkflows and algorithmsTraining and deploymentDeveloper reference
  • Developer reference

Authentication

  • Authentication overview
  • API keys
  • Personal access tokens
  • Browser sessions

REST API

  • Using the REST API
  • All endpoints
  • Projects
    • Recordings
      • Upload
        • Episodes and versions
          • Annotation
            • Quality and tasks
              • Search
                • Workflows
                  • Algorithms
                    • Models
                      • Artifacts and export
                        • Billing and usage
                          • Team and governance
                            • Account and notifications
                              • Webhook endpoints

                                Events

                                • Outbound events
                                • Signature verification

                                Tools

                                • CLI
                                • SDK
                                • MCP

                                Updates

                                • Changelog

                                © 2026 EmbodiFlow

                                llms.txtOpenAPI JSON
                                1. Developer reference
                                2. Events
                                3. Outbound events

                                Outbound events

                                Get an HTTP call the moment work finishes: add a webhook endpoint, choose its events, and watch deliveries in the console.

                                Webhooks let your own systems react as soon as something finishes in EmbodiFlow, instead of polling. When a recording is processed, a workflow run ends or a training job succeeds, EmbodiFlow sends a signed JSON request to a URL you run. Your service can then pull the new data, start the next job or post a message to your team.

                                Add an endpoint

                                Adding and managing endpoints is for team owners and admins. You create an endpoint with the CLI or the API, then follow its deliveries in the console.

                                1Create the endpoint

                                Give it an HTTPS URL and the event types it should receive, comma-separated. Add --project-id to limit it to one project.

                                embodiflow webhook-endpoints create --url https://example.com/hooks --event-types workflow.run.succeeded,training.job.succeeded

                                Or call the API directly:

                                curl -X POST https://api.embodiflow.io/v1/webhook-endpoints \
                                  -H "Authorization: Bearer $EMBODIFLOW_KEY" \
                                  -H "Content-Type: application/json" \
                                  -d '{"url":"https://example.com/hooks","eventTypes":["workflow.run.succeeded"]}'

                                2Save the signing secret

                                The response includes the endpoint's signingSecret. It's shown this one time only, so store it with your service right away. You need it to verify each delivery.

                                3Check it in the console

                                Open Settings and choose Webhooks under team settings. Pick your endpoint and choose Send test ping to check that your service receives it; the ping arrives with the type webhook.endpoint.ping. Below, Delivery history lists recent deliveries with their status, attempts and failure reason; set From and To and choose Apply filters to look at another time window. If a delivery failed while your service was down, choose Replay to send it again.

                                Until an endpoint exists, the Webhooks page shows "No webhook endpoints yet". The console doesn't have a button to create one yet, which is why step 1 uses the CLI or API.

                                Events

                                The list of event types is fixed, so you can rely on it:

                                Event typeSent when
                                recording.importedA recording was imported.
                                recording.processedA recording finished processing.
                                recording.failedA recording failed processing.
                                version.createdA dataset version was created.
                                version.redactedA dataset version was redacted.
                                version.alias_setAn alias was set on a dataset version.
                                export.succeeded, export.failedAn export finished.
                                workflow.run.succeeded, workflow.run.failedA workflow run finished.
                                training.job.succeeded, training.job.failedA training job finished.
                                collection.submission.decidedA collection submission was accepted or rejected.
                                erasure.completedAn erasure request completed.

                                What a delivery looks like

                                Every event uses the same envelope: id, type, specVersion, occurredAt, tenantId, projectId when the event belongs to a project, resource and data. On purpose, data carries ids and a coarse status, never the records themselves. Use the ids to fetch what you need from the API, with your own credential.

                                Next

                                • Signature verification
                                • CLI
                                Previous

                                Webhook endpoints

                                Next

                                Signature verification