This documentation is under construction.

Space export/import

Jam Pad allows you to export a space including all of its clips and other data to a folder of your choice. The reverse, importing from a folder, is also possible.

Export format

2026-08-31: The documentation of the export fields and example is not entirely accurate at the moment. It will be updated soon to reflect the current format.

You don’t need to understand anything in this section if you simply want to export or import spaces!

This section is intended for …​

  • …​ power users who want to modify their spaces in a text editor.

  • …​ developers who want to build an import/export function for their own software.

Folder structure

A space export is a folder with the following structure:

Example
hello/
├── assets/                             (1)
│   ├── YSBSZJJZCGD68JDB969J4SDFAC.m4a  (2)
│   ├── RS48WGQ5FZE6EZ7V1S16NJXFEW.mp3
├── hello.space.jampad.json             (3)
1 The folder containing all space assets
2 The actual assets, for example, clip media files
3 A JSON file that contains a snapshot of all the other data in this space (markers, playlists, sheets, …​)

The JSON file

JSON is a widely used data exchange format. Unlike CSV, it can easily represent nested structures, which is important because Jam Pad spaces can get quite complex.

Let’s look at an example:

Example space export file
{
  "$schema": "https://jampad.app/schemas/space.jampad.schema.json",
  "space": {
    "name": "Nature and music"
  },
  "customFieldsForClips": [
    {
      "id": "tonalQuality",
      "hidden": false,
      "name": "Tonal quality",
      "description": "Tonal quality of a musical piece, that is, *major* or *minor*. If you need more variety, consider adding a *Scales/modes* field.",
      "position": 31,
      "showInListView": true,
      "showInAdvancedFilter": false,
      "type": "tonalQuality"
    },
    {
      "id": "moods",
      "hidden": false,
      "name": "Mood",
      "description": "Associate a clip or marker with moods or emotions, such as \"Happy\" or \"Sad\"",
      "position": 600,
      "showInListView": true,
      "showInAdvancedFilter": false,
      "type": "items",
      "itemTypeId": "moods"
    },
    {
      "id": "tonalCenter",
      "hidden": false,
      "name": "Tonal center",
      "description": "Tonal center (or root note) of a musical piece, for example D♭. Together with the *Tonal quality* field, it makes up the key of a musical piece.",
      "position": 30,
      "showInListView": true,
      "showInAdvancedFilter": false,
      "type": "note"
    }
  ],
  "customFieldsForMarkers": [
    {
      "id": "019951f6-fa46-7b80-b4c8-54801c12a8b0",
      "hidden": false,
      "name": "Sound source",
      "position": 1000,
      "showInListView": true,
      "showInAdvancedFilter": false,
      "type": "item",
      "itemTypeId": "019951f6-fa45-7c09-a569-22d90f660df3"
    },
    {
      "id": "rating",
      "hidden": false,
      "name": "Rating",
      "icon": "starRate",
      "description": "Each user can give their own 1–5 rating.",
      "position": 10,
      "showInListView": true,
      "showInAdvancedFilter": true,
      "type": "perUserRating"
    }
  ],
  "customItemTypes": [
    {
      "id": "019951f6-fa45-7c09-a569-22d90f660df3",
      "hidden": false,
      "name": "Sound source",
      "nameIsPath": false
    },
    {
      "id": "moods",
      "hidden": false,
      "name": "Moods",
      "nameIsPath": false
    }
  ],
  "customItems": {
    "moods": [
      {
        "id": "019951f4-f46f-7693-b179-99734860774c",
        "authorId": 0,
        "hidden": false,
        "name": "Rigid",
        "customColor": [
          23,
          190,
          207
        ]
      },
      {
        "id": "019951f4-bfd2-7fe8-a227-ddd6e19c29e5",
        "authorId": 0,
        "hidden": false,
        "name": "Dreamy",
        "customColor": [
          148,
          103,
          189
        ]
      }
    ],
    "019951f6-fa45-7c09-a569-22d90f660df3": [
      {
        "id": "019951f9-1ed2-714f-be12-163b97bf1b22",
        "authorId": 0,
        "hidden": false,
        "name": "Stones",
        "customColor": [
          188,
          189,
          34
        ]
      },
      {
        "id": "019951f7-1514-7dfc-9c79-e5c7ec9b761c",
        "authorId": 0,
        "hidden": false,
        "name": "Cricket",
        "customColor": [
          255,
          127,
          14
        ]
      }
    ]
  },
  "clips": [
    {
      "id": "019951ef-467e-7e21-9141-7a2d32bbeb7a",
      "authorId": 0,
      "hidden": false,
      "title": "Distance",
      "customData": {
        "moods": {
          "019951f4-bfd2-7fe8-a227-ddd6e19c29e5": null
        },
        "tonalQuality": "min",
        "tonalCenter": "B♭"
      },
      "versions": [
        {
          "filePath": "assets/8E4CN8JX590DTMPA5MFM76HGC4.mp3",
          "authorId": 0,
          "origin": "imported",
          "importedOrigin": {
            "installationId": "01991a04-8640-7820-b3bf-3da3754cf705",
            "importId": "019951ae-4098-7ddf-822c-a22ebd3246e0",
            "baseFolderHash": "5A6JFGW2HZ3SB3E6KTCCW42RR8",
            "baseFolderName": "docs",
            "contentSize": 11903690,
            "path": "Distance.mp3",
            "contentHash": "8E4CN8JX590DTMPA5MFM76HGC4",
            "format": "mp3Cbr"
          }
        }
      ],
      "comments": []
    },
    {
      "id": "019951ef-2c7b-7a6d-b5cc-4afc4ec2f08c",
      "authorId": 0,
      "hidden": false,
      "title": "Siquijor Hill",
      "customData": {},
      "versions": [
        {
          "filePath": "assets/7SA8JQ5SRM97H2XC4075TWRRG4.m4a",
          "authorId": 0,
          "origin": "imported",
          "importedOrigin": {
            "installationId": "01991a04-8640-7820-b3bf-3da3754cf705",
            "importId": "019951ae-4098-7ddf-822c-a22ebd3246e0",
            "baseFolderHash": "5A6JFGW2HZ3SB3E6KTCCW42RR8",
            "baseFolderName": "docs",
            "contentSize": 15265350,
            "path": "230212-142536-siquijor-hill.wav",
            "contentHash": "4JRKZ1T9SPS035M0KZ36SRHXEG",
            "format": "wav"
          }
        }
      ],
      "comments": []
    },
    {
      "id": "019951ef-5d9a-7a48-bbb9-23d7d9c5f4fc",
      "authorId": 0,
      "hidden": false,
      "title": "Rügen Sea",
      "customData": {},
      "versions": [
        {
          "filePath": "assets/TT9Q3E82VZN64VY1YP0CF76AR4.m4a",
          "authorId": 0,
          "origin": "imported",
          "importedOrigin": {
            "installationId": "01991a04-8640-7820-b3bf-3da3754cf705",
            "importId": "019951eb-b050-7b1f-961e-c669e7657e70",
            "baseFolderHash": "5A6JFGW2HZ3SB3E6KTCCW42RR8",
            "baseFolderName": "docs",
            "contentSize": 22040702,
            "path": "ruegen.WAV",
            "contentHash": "D4GPJ595FT4EVB56M1H99NC76C",
            "format": "wav"
          }
        }
      ],
      "comments": []
    }
  ],
  "markers": [
    {
      "id": "019951e3-c263-7d6e-96ab-0acdc0511c1b",
      "authorId": 0,
      "hidden": false,
      "clipVersionId": "019951ef-2c7b-7a6d-b5cc-4afc4ec2f08c/1",
      "name": "Loud cricket",
      "start": 254634,
      "length": 15000,
      "createdAt": 1758015504995,
      "comments": [
        {
          "id": "019951f1-724d-74b6-9245-104e6fb00b68",
          "hidden": false,
          "authorId": 0,
          "createdAt": 1758016401997,
          "content": "What an awesome cricket sound!"
        }
      ],
      "customData": {
        "rating": {
          "0": 4
        },
        "019951f6-fa46-7b80-b4c8-54801c12a8b0": "019951f7-1514-7dfc-9c79-e5c7ec9b761c"
      }
    },
    {
      "id": "019951f8-317b-7f96-a3ea-652e7e9bf8d0",
      "authorId": 0,
      "hidden": false,
      "clipVersionId": "019951ef-5d9a-7a48-bbb9-23d7d9c5f4fc/1",
      "name": "Knocking stones",
      "start": 36123,
      "length": 15000,
      "createdAt": 1758016844155,
      "comments": [],
      "customData": {
        "019951f6-fa46-7b80-b4c8-54801c12a8b0": "019951f9-1ed2-714f-be12-163b97bf1b22"
      }
    },
    {
      "id": "019951e4-22aa-78e2-a8e8-4a36823d63aa",
      "authorId": 0,
      "hidden": false,
      "clipVersionId": "019951ef-467e-7e21-9141-7a2d32bbeb7a/1",
      "name": "Drop & Flute",
      "start": 98404,
      "length": 15000,
      "createdAt": 1758015529643,
      "comments": [],
      "customData": {}
    },
    {
      "id": "019951e5-2158-7455-9435-5e9dfbe83a6f",
      "authorId": 0,
      "hidden": false,
      "clipVersionId": "019951ef-467e-7e21-9141-7a2d32bbeb7a/1",
      "name": "Distorted",
      "start": 153909,
      "length": 15000,
      "createdAt": 1758015594840,
      "comments": [],
      "customData": {
        "rating": {
          "0": 2
        }
      }
    }
  ],
  "playlists": [
    {
      "id": "019951ef-58e7-707a-8a8c-ac511b84a591",
      "hidden": false,
      "authorId": 0,
      "createdAt": 1758016264423,
      "name": "Nature",
      "entries": [
        "/marker/019951e4-22aa-78e2-a8e8-4a36823d63aa#6DHP",
        "/marker/019951e3-c263-7d6e-96ab-0acdc0511c1b#PA5X",
        "/clip/019951ef-2c7b-7a6d-b5cc-4afc4ec2f08c#TYCX"
      ]
    }
  ],
  "sheets": [
    {
      "id": "home",
      "authorId": 0,
      "hidden": false,
      "title": "Home",
      "content": {
        "type": "doc",
        "content": [
          {
            "type": "paragraph",
            "content": [
              {
                "type": "text",
                "text": "This space is all about nature. Field recordings mixed with music deeply connected to the natural world."
              }
            ]
          },
          {
            "type": "heading",
            "attrs": {
              "id": "0HPS",
              "level": 2
            },
            "content": [
              {
                "type": "text",
                "text": "Some examples"
              }
            ]
          },
          {
            "type": "bulletList",
            "content": [
              {
                "type": "listItem",
                "content": [
                  {
                    "type": "paragraph",
                    "content": [
                      {
                        "type": "jam",
                        "attrs": {
                          "id": "EYPX",
                          "href": "/marker/019951f8-317b-7f96-a3ea-652e7e9bf8d0"
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "listItem",
                "content": [
                  {
                    "type": "paragraph",
                    "content": [
                      {
                        "type": "jam",
                        "attrs": {
                          "id": "85VB",
                          "href": "/clip/019951ef-5d9a-7a48-bbb9-23d7d9c5f4fc"
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "listItem",
                "content": [
                  {
                    "type": "paragraph",
                    "content": [
                      {
                        "type": "jam",
                        "attrs": {
                          "id": "337W",
                          "href": "/clip/019951ef-467e-7e21-9141-7a2d32bbeb7a"
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  ],
  "clipPlayEvents": [
    {
      "timestamp": 1764241281000,
      "clipVersionId": "019951ef-2c7b-7a6d-b5cc-4afc4ec2f08c/1",
      "start": 0,
      "length": 7804
    },
    {
      "timestamp": 1764241286000,
      "clipVersionId": "019951ef-5d9a-7a48-bbb9-23d7d9c5f4fc/1",
      "start": 0,
      "length": 4404
    }
  ]
}

The structure of space export files is specified in this JSON Schema file. JSON schema files are made for machines, so they are not very readable. However, you can use a JSON Schema Viewer to read it like a specification: