Skip to content

Projects

These endpoints list, create, import, rename, and delete projects in the current workspace.

Endpoints

List workspace projects # GET/api/v1/workspace/projects

Request

http
GET /api/v1/workspace/projects
bash
curl --request GET \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json" \
  "https://arcweave.com/api/v1/workspace/projects"

Response

Returns 200 OK.

Projects are ordered by their latest data update. The response contains the public project hash, name, timestamps, and status:

json
[
  {
    "hash": "ra6XRNxl3G",
    "name": "The Castle",
    "updatedAt": "2026-07-12T10:15:30.000000Z",
    "createdAt": "2026-01-05T13:43:32.000000Z",
    "status": "active"
  }
]

List user workspace projects # GET/api/v1/user/projects

Deprecated endpoint

GET /api/v1/user/projects is an alias of GET /api/v1/workspace/projects. It is deprecated and will be removed soon. New integrations should use GET /api/v1/workspace/projects, and existing integrations should migrate to it.

Request

http
GET /api/v1/user/projects
bash
curl --request GET \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json" \
  "https://arcweave.com/api/v1/user/projects"

Response

Returns 200 OK.

Projects are ordered by their latest data update. The response has the same shape as the workspace projects endpoint:

json
[
  {
    "hash": "ra6XRNxl3G",
    "name": "The Castle",
    "updatedAt": "2026-07-12T10:15:30.000000Z",
    "createdAt": "2026-01-05T13:43:32.000000Z",
    "status": "active"
  }
]

Create project # POST/api/v1/workspace/projects

Request

http
POST /api/v1/workspace/projects
bash
curl --request POST \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data @payload.json \
  "https://arcweave.com/api/v1/workspace/projects"
json
{
  "template": "empty"
}

Request fields:

PropertyRequiredTypeDescription
templateYesStringTemplate used to initialize the new project.

Supported templates:

ValueTemplate
emptyBlank Project
sampleInteractive Fiction Example
video-sampleInteractive Movie Example
game-engine-sampleGame Engine Example
tabletop-campaign-sampleTabletop Campaign Example
visual-novelVisual Novel Example
cyber-security-sampleSerious Games Example

The token owner must have permission to create projects, and the workspace must have capacity for another project. Unknown root fields are rejected.

Response

Returns 201 Created with the new project's numeric ID and public hash:

json
{
  "message": "Successful project creation",
  "directory": null,
  "projectId": 1234,
  "hash": "ra6XRNxl3G"
}

Import project # POST/api/v1/workspace/projects/import

Rate limits

Project imports and exports share a workspace quota of 3 requests per minute per purchased seat. Import requests also count toward the overall API quota of 60 requests per minute per purchased seat. See Rate limits for seat allowances, shared quotas, and retry guidance.

Request

http
POST /api/v1/workspace/projects/import
bash
curl --request POST \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data @payload.json \
  "https://arcweave.com/api/v1/workspace/projects/import"
json
{
  "name": "Generated game",
  "project": {
    "startingElement": "65139ea3-331f-4b25-88b4-ea7a65ff106c",
    "boards": {
      "e723bdc8-f5f3-4cbc-875d-f559ca40b511": {
        "name": "Generated Board",
        "elements": ["65139ea3-331f-4b25-88b4-ea7a65ff106c"],
        "notes": [],
        "jumpers": [],
        "branches": [],
        "connections": []
      }
    },
    "elements": {
      "65139ea3-331f-4b25-88b4-ea7a65ff106c": {
        "title": "Opening",
        "content": "<p>Hello world</p>",
        "outputs": []
      }
    }
  }
}

Request fields:

PropertyRequiredTypeDescription
nameYesStringNew project name, up to 255 characters. Used as supplied without an Imported - prefix.
projectYesObjectProject data to import. Accepts an Arcweave JSON export or collection maps as in the example.

Import creates a new project in the key's workspace. It does not replace or merge into an existing project. The key needs project:write, and its owner needs permission to import projects. Workspace project and item limits still apply.

Collections can be maps keyed by resource UUIDs or objects containing a byId map. Use valid UUID v4 IDs and consistent references; the server validates project integrity and rich-text content. Missing collection roots and default fields are generated. Existing board variables in imported data are migrated to board attributes.

A JSON export can be supplied directly as project. This imports project content and structure; asset files are not restored. The asset collection is reset to an empty root, element/component asset references are removed, and asset-list attribute values are cleared. Upload and attach media separately using the asset endpoints.

Response

Returns 201 Created with the new project's identifiers and name:

json
{
  "hash": "ra6XRNxl3G",
  "projectId": 1234,
  "name": "Generated game"
}

Invalid payloads, inconsistent references, invalid rich text, or exceeded project/item limits return 400 Bad Request. Import integrity errors use the title Project integrity exception during import. with details in errors.

Rename project # PATCH/api/v1/{hash}

Request

http
PATCH /api/v1/{hash}
bash
curl --request PATCH \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data @payload.json \
  "https://arcweave.com/api/v1/PROJECT_HASH"
json
{
  "name": "The Castle: Remastered"
}

Request fields:

PropertyRequiredTypeDescription
nameYesStringNew project name. Maximum length: 255 chars.

name must not be empty. Unknown root fields are rejected.

Response

Returns 200 OK:

json
{
  "message": "Project name was successfully updated"
}

Delete project # DELETE/api/v1/{hash}

Request

http
DELETE /api/v1/{hash}
bash
curl --request DELETE \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json" \
  "https://arcweave.com/api/v1/PROJECT_HASH"

The token owner must have permission to delete the project.

Response

Returns 200 OK:

json
{
  "message": "Successful project deletion"
}

Common errors

StatusMeaning
400Invalid project creation or rename payload.
403API access, project permission, or workspace project capacity denied.
404Project not found.