EmbodiFlowDocs
Open console
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
    • GET
      List data formats
    • POST
      Create a data format
    • GET
      Get a data format
    • PATCH
      Update a data format
    • POST
      Publishes the draft as the next immutable revision. The path is the REST noun (`revisions`): the public contract refuses verb segments.
    • POST
      Create a sample run
    • GET
      Get a sample run
    • DELETE
      Removes every sample uploaded for the DRAFT of a team format (FV-20c). The format stays. Repeating the call removes nothing and still succeeds.
    • GET
      This team's own formats, drafts included. The route precedes `:formatId`.
    • GET
      List first value state
    • PATCH
      Update a first value state
    • POST
      Create a onboarding sample
    • DELETE
      Delete a current
    • GET
      List current for a onboarding sample
    • POST
      Create a project import job
    • GET
      Get a project import job
    • POST
      Create a confirmation
    • POST
      Create a resumption
    • POST
      Create a project import source
    • POST
      Create a validation request
    • PATCH
      Update a project membership
    • GET
      List projects
    • POST
      Create a project
    • DELETE
      Move a project to trash
    • GET
      Get a project
    • PATCH
      Update a project
    • GET
      List analytics for a project
    • POST
      Create a archive request
    • POST
      Move a project to trash
    • GET
      List members for a project
    • POST
      Create a member
    • PATCH
      Update a membership
    • GET
      List overview for a project
    • GET
      List pii policy for a project
    • PUT
      Update a pii policy
    • GET
      List project import jobs for a project
    • GET
      List recording privacy for a project
    • PUT
      Owner only (checked in the service). Applies to new uploads; with `applyToExistingRecordings` (not_required only) it also moves the project's existing recordings, audited, in the same transaction.
    • GET
      List saved views in a project
    • POST
      Create a saved episode filter view
    • DELETE
      Delete a saved view
    • GET
      Get a saved view
    • PATCH
      Patch a saved view
    • GET
      List project secrets
    • POST
      Create a secret
    • DELETE
      Delete a secret
    • PUT
      Update a secret
    • GET
      Resolve a dataset reference or console path to ids
    • GET
      List rig profiles
    • POST
      Create a rig profile
    • GET
      Get a rig profile
    • PATCH
      Update a draft
    • POST
      Publishes the confirmed draft as the next immutable revision. The path is the REST noun (`revisions`): the public contract refuses verb segments.
    • POST
      Create a test
    • POST
      Analyses a recording and answers a draft; stores nothing.
    • GET
      List team secrets
    • POST
      Create a secret
    • DELETE
      Delete a secret
    • PUT
      Update a secret
    • GET
      List items in trash
    • DELETE
      Permanently purge an item from trash
    • POST
      Restore an item from trash
    • GET
      List recent projects for a me
  • 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. REST API
                              3. Projects
                              4. Update a project

                              Update a project

                              PATCH
                              /v1/projects/{projectId}
                              curl -X PATCH 'https://api.embodiflow.io/v1/projects/{projectId}' \
                                -H 'Authorization: Bearer $EMBODIFLOW_PAT' \
                                -H 'Content-Type: application/json' \
                                -d '{
                                  "dataFormat": "mcap",
                                  "name": "string",
                                  "description": "string",
                                  "slug": "string",
                                  "dataKind": "human",
                                  "robotType": "string",
                                  "defaultFps": 0,
                                  "defaultTask": "string",
                                  "requiresSegmentation": true
                                }'

                              Authorization

                              Send a personal access token with every request.

                              • Authorization: Bearer PAT
                              Authentication guide

                              Path parameters

                              • projectIdstringrequired

                              Header parameters

                              • Idempotency-Keystring

                                Optional idempotency key, at most 255 characters (UUIDv4 recommended). A repeated key returns the first response byte-for-byte, including a 5xx. The same key with a different body, or a second in-flight request, returns 409 IDEMPOTENCY_CONFLICT. Keys are unique per tenant and retained for 24 hours.

                              • If-Matchstring

                                Optional precondition. A matching tag proceeds and returns the new ETag. A stale tag returns 412 PRECONDITION_FAILED with no write. Absent proceeds (opt-in this release). If-Match: * succeeds when the resource exists. Malformed values return 400 IF_MATCH_INVALID.

                              Request body

                              Content-Typeapplication/json
                              • dataFormatstring | null

                                Optional import default hint; null clears it.

                                Allowed values
                                mcap
                                rosbag1
                                rosbag2
                                lerobot
                                hdf5-embodiflow
                                hdf5-agilex
                                hdf5-realman
                                hdf5-dobot
                                video
                                bvh
                                aria-vrs
                                umi-gopro
                              • namestring
                              • descriptionstring | null
                              • slugstring
                              • dataKindstring
                                Allowed values
                                human
                                robot
                                video
                              • robotTypestring | null
                              • defaultFpsnumber | null
                              • defaultTaskstring | null
                              • requiresSegmentationboolean

                              Responses

                              Success

                              • dataobjectrequired
                                • idstringrequired
                                • tenantIdstringrequired
                                • slugstringrequired
                                • namestringrequired
                                • descriptionstring | nullrequired
                                • visibilitystringrequired
                                • statusstringrequired
                                • isSampleone ofrequired
                                • dataKindstringrequired
                                  Allowed values
                                  human
                                  robot
                                  video
                                • dataFormatstring | null
                                • robotTypestring | nullrequired
                                • defaultFpsnumber | nullrequired
                                • defaultTaskstring | nullrequired
                                • requiresSegmentationone ofrequired
                                • lastAccessedAtstring | nullrequired
                                • createdAtstringrequired
                                • updatedAtstringrequired
                                • processingobject
                                • teamRuntimeobject
                                • handlestring
                                • refstring
                                • urlstring
                              Response example
                              {
                                "data": {
                                  "id": "string",
                                  "tenantId": "string",
                                  "slug": "string",
                                  "name": "string",
                                  "description": "string",
                                  "visibility": "string",
                                  "status": "string",
                                  "isSample": false,
                                  "dataKind": "human",
                                  "dataFormat": "string",
                                  "robotType": "string",
                                  "defaultFps": 0,
                                  "defaultTask": "string",
                                  "requiresSegmentation": false,
                                  "lastAccessedAt": "string",
                                  "createdAt": "string",
                                  "updatedAt": "string",
                                  "processing": {
                                    "state": "not_applicable",
                                    "code": "PROJECT_PROCESSING_UNAVAILABLE",
                                    "templateCode": "robot-standard",
                                    "reason": "algorithms_missing",
                                    "missingAlgorithms": [
                                      "string"
                                    ]
                                  },
                                  "teamRuntime": {
                                    "state": "ready"
                                  },
                                  "handle": "string",
                                  "ref": "string",
                                  "url": "string"
                                }
                              }
                              Servershttps://api.embodiflow.io/v1https://api.embodiflow.dev/v1
                              Previous

                              GET /projects/{projectId}

                              Next

                              GET /projects/{projectId}/analytics

                              curl -X PATCH 'https://api.embodiflow.io/v1/projects/{projectId}' \
                                -H 'Authorization: Bearer $EMBODIFLOW_PAT' \
                                -H 'Content-Type: application/json' \
                                -d '{
                                  "dataFormat": "mcap",
                                  "name": "string",
                                  "description": "string",
                                  "slug": "string",
                                  "dataKind": "human",
                                  "robotType": "string",
                                  "defaultFps": 0,
                                  "defaultTask": "string",
                                  "requiresSegmentation": true
                                }'
                              Response example
                              Status code
                              200
                              ​
                              {
                                "data": {
                                  "id": "string",
                                  "tenantId": "string",
                                  "slug": "string",
                                  "name": "string",
                                  "description": "string",
                                  "visibility": "string",
                                  "status": "string",
                                  "isSample": false,
                                  "dataKind": "human",
                                  "dataFormat": "string",
                                  "robotType": "string",
                                  "defaultFps": 0,
                                  "defaultTask": "string",
                                  "requiresSegmentation": false,
                                  "lastAccessedAt": "string",
                                  "createdAt": "string",
                                  "updatedAt": "string",
                                  "processing": {
                                    "state": "not_applicable",
                                    "code": "PROJECT_PROCESSING_UNAVAILABLE",
                                    "templateCode": "robot-standard",
                                    "reason": "algorithms_missing",
                                    "missingAlgorithms": [
                                      "string"
                                    ]
                                  },
                                  "teamRuntime": {
                                    "state": "ready"
                                  },
                                  "handle": "string",
                                  "ref": "string",
                                  "url": "string"
                                }
                              }