Create a project
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Idempotency-Key | header | string | No | 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. |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Display name for the project."
},
"description": {
"type": "string",
"nullable": true
},
"visibility": {
"enum": [
"private",
"internal"
],
"type": "string"
},
"dataKind": {
"enum": [
"human",
"robot",
"video"
],
"type": "string"
},
"dataFormat": {
"type": "string",
"nullable": true,
"maxLength": 40,
"description": "Optional import default hint: a platform data format or a published team format slug (x-<name>); never restricts formats in this project.",
"example": "x-sim-hdf5"
},
"robotType": {
"type": "string",
"nullable": true
},
"defaultFps": {
"type": "number",
"nullable": true,
"minimum": 1
},
"defaultTask": {
"type": "string",
"nullable": true,
"maxLength": 500
},
"requiresSegmentation": {
"type": "boolean"
}
},
"required": [
"name",
"visibility"
]
}| Status | Description | Content-Type | Schema |
|---|---|---|---|
| 201 | Success | application/json | object |
| 400 | Bad request. Enumerated catalog codes for this operation. | application/problem+json | union |
| 401 | Authentication failed. A specific TOKEN_* cause is returned only when the presented hash matched a stored row. | application/problem+json | union |
| 403 | Authorization failed. PERMISSION_DENIED on an any-of route lists the alternatives in message. | application/problem+json | union |
| 409 | Conflict. Enumerated catalog codes for this operation. | application/problem+json | union |
| 429 | Authenticated per-principal or per-tenant request budget exceeded. Rate-limit headers appear only on 429. | application/problem+json | union |
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/ProjectDto"
}
},
"required": [
"data"
]
}{
"allOf": [
{
"$ref": "#/components/schemas/ProblemJson"
},
{
"type": "object",
"properties": {
"status": {
"type": "integer",
"enum": [
400
]
},
"code": {
"type": "string",
"enum": [
"BAD_REQUEST",
"IDEMPOTENCY_KEY_INVALID",
"IF_MATCH_INVALID",
"IMPORT_EXECUTION_FAILED",
"IMPORT_VALIDATION_FAILED",
"INVALID_PERMISSION_OVERLAY",
"INVALID_ROLE_TRANSITION",
"TENANT_CONTEXT_MISMATCH",
"TENANT_REQUIRED",
"VALIDATION_ERROR",
"WORKFLOW_DEFINITION_REVISION_NOT_PUBLISHED"
]
}
}
}
]
}{
"allOf": [
{
"$ref": "#/components/schemas/PublishedAuthProblem"
},
{
"type": "object",
"properties": {
"status": {
"type": "integer",
"enum": [
401
]
},
"code": {
"type": "string",
"enum": [
"TOKEN_MALFORMED",
"TOKEN_NOT_FOUND",
"TOKEN_EXPIRED",
"TOKEN_REVOKED",
"UNAUTHORIZED",
"SESSION_EXPIRED",
"ACTIVATION_REQUIRED",
"MFA_REQUIRED"
]
}
}
}
]
}{
"allOf": [
{
"$ref": "#/components/schemas/PublishedAuthProblem"
},
{
"type": "object",
"properties": {
"status": {
"type": "integer",
"enum": [
403
]
},
"code": {
"type": "string",
"enum": [
"PERMISSION_DENIED",
"PERMISSION_NOT_DECLARED",
"FORBIDDEN",
"MEMBERSHIP_NOT_FOUND",
"MEMBERSHIP_DISABLED",
"MEMBERSHIP_EXPIRED",
"PROJECT_MEMBERSHIP_EXPIRED"
]
}
}
}
]
}{
"allOf": [
{
"$ref": "#/components/schemas/ProblemJson"
},
{
"type": "object",
"properties": {
"status": {
"type": "integer",
"enum": [
409
]
},
"code": {
"type": "string",
"enum": [
"IDEMPOTENCY_CONFLICT",
"IMPORT_SOURCE_CHANGED",
"LAST_OWNER_PROTECTION",
"PIPELINE_BINDING_ALREADY_EXISTS",
"SLUG_GENERATION_CONFLICT",
"WORKFLOW_DEFINITION_CODE_CONFLICT"
]
}
}
}
]
}{
"allOf": [
{
"$ref": "#/components/schemas/PublishedAuthProblem"
},
{
"type": "object",
"properties": {
"status": {
"type": "integer",
"enum": [
429
]
},
"code": {
"type": "string",
"enum": [
"RATE_LIMITED"
]
}
}
}
]
}curl -X POST 'https://api.embodiflow.com/v1/projects' \
-H 'Authorization: Bearer $EMBODIFLOW_PAT' \
-H 'Content-Type: application/json' \
-d '{}'