Version: May 2025

Music Cue Sheets

This is the API documentation to our tool "Music Cue Sheet (Converter)" and "Music Cue Sheet Manager". The tool makes it easy to create and manage music cue sheets.

We welcome your feedback! Is there a feature you need to access via API? If so, please let us know, along with the workflow you are trying to create.

Quick Start (Convert file)

This Endpoint can be used to quickly convert a sequence file from an NLE into a music cue sheet document. It only converts the file and does not create a new project that can be edited later. It's a simple way to convert EDL, XML, or other sequence formats into tables like Excel or CSV. You can find more details about the tool here: Music Cue Sheet (Converter)

(i) This Endpoint will not add any metadata from Production Music Libraries.

Endpoint

This endpoint is used to convert a file.

POST https://api.editingtools.io/v2/cuesheet

Authentication

This API requires Basic Authentication. The "Authorization" header should be set with the Base64 encoded string of "apikey:YOUR_API_KEY".

Authorization: Basic <base64Encoded(apikey:YOUR_API_KEY)>

Headers

Content-Type: multipart/form-data

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential.

Request Body

The API supports file uploads using a multipart/form-data request. The request can contain the following parameters:

Parameter Type Required Description
file File Yes The sequence file to upload and convert. Accepted formats are:
  • .edl (CMX3600, File16, File32,...)
  • .xml (Final Cut 7 XML, Premiere Pro)
  • .xml (Media Composer XML)
  • .fcpxml (Final Cut Pro X)
  • .txt (Pro Tools TXT -> Session Info as text)
  • .csv (Please check presets for correct format)
Recommended max file size: 10MB
Max request size (including files): 100 MB
(i) If the sequence file is larger than 10 MB (e.g. XML or FCPXML), it may contain unnecessary layers, such as video tracks, or it may be incorrect. Larger files might fail. It is recommended that you upload files that only contain relevant audio tracks.
(i) .aaf is only supported in Cue Sheet Projects and is not accepted with this endpoint.
(i) .fcpxmld (Directories) from newer Final Cut Pro projects need to be converted into .fcpxml first!
framerate String Yes The framerate of the sequence file. If there is no value set, 25 will be used as default value.
Allowed values:
  • Integer: from 8 to 90
  • Double: 23.976 and 59.94
  • String: 29.97DF and 59.94DF for Drop Framerates
format String Yes This defines the export format. The possible export format values are:
  • csv (separated by comma)
  • csv2 (separated by semicolon)
  • xls (Excel)
  • xlsx (Excel)
  • pdf
  • ods
  • txt (PlainText)
preset String No This can be used to select a predefined document style.
(i) If a predefined document style is selected, the format needs to be set to xlsx.
Available preset values:
  • cisac_preset CISAC Cue Sheet
  • apra_preset APRA Cue Sheet
mergeOverlappingClips Boolean No If set to true, any overlapping identical clips are merged and their total duration recalculated.
Default value is true. Set to false to disable this feature.
deduplicateClips Boolean No If set to true, all identical clips (in the whole sequence) will be merged so that each appears only once. The clip duration will be summed. Timecode In and Out information might become useless. Only use if Timecode In and Out information is not so important.
Default is false. Set to true to enable.
base64 Boolean No If set to true, the generated file will be returned as base64 string.

cURL Examples

The following examples show how to use the API with cURL commands. If you are using a different language, we recommend using https://curlconverter.com to convert the commands for other languages like: PHP, JavaScript, Python, Ruby, Rust, Ansible, C , C#, ColdFusion, Clojure, Dart, Elixir, Go, HAR, HTTP, HTTPie, Java, JSON, Kotlin, MATLAB, Node.js, Objective-C, OCaml, PowerShell, R, Swift and more.

cURL Request Example 1

This is an example of how to convert a simple .edl with 25 fps file into a CSV document.

curl -X POST https://api.editingtools.io/v2/cuesheet \
-u "apikey:YOUR_API_KEY" \
-F file=@/Users/path/Demo_Sequence_25fps.edl \
-F framerate=25 \
-F format=csv \
-F mergeOverlappingClips=true

cURL Request Example 2

This is an example of how to convert a .edl sequence with 23.976 fps into an Excel spreadsheet in CISAC Standard.

curl -X POST https://api.editingtools.io/v2/cuesheet \
-u "apikey:YOUR_API_KEY" \
-F file=@/Users/path/Demo_Sequence_25fps.edl \
-F framerate=23.976 \
-F format=xlsx \
-F preset=cisac_preset \
-F mergeOverlappingClips=true

cURL Request Example 3

This is an example of how to convert a .edl sequence with 29.97 drop frame into an Excel spreadsheet and return the file as base64 string.

curl -X POST https://api.editingtools.io/v2/cuesheet \
-u "apikey:YOUR_API_KEY" \
-F file=@/Users/path/Demo_Sequence_25fps.edl \
-F framerate=29.97DF \
-F format=xlsx \
-F base64=true

Demo File

Demo sequence file (.edl) to test requests: Demo_Sequence_25fps.edl

Responses

Success (HTTP 200 OK)

If the file was successfully uploaded and the process started, the API will return a 200 OK status code with a JSON object containing the file details.

{
    "code": 200,
    "status": "The sequence was successfully converted into a music cue sheet document.",
    "timestamp": "2025-05-01T10:00:00Z",
    "data": {
    	"fileName": "Demo_Sequence_25fps.csv",
        "fileUrl": "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv",
        "fileBase64": "Tm8uLFRpbWVjb2Rl...IsIiIK",
        "fileSize": 1830,
        "fileChecksum": "06abe8b0662afabe9ba8e1f0b0efe0b7"
    }
}
Field Type Description
code String HTTP status code.
status String A descriptive message about the process.
timestamp String Server time of the request (ISO 8601).
data Object An object containing details about the file.
data.fileName String Name of generated file.
data.fileUrl String Download path of the generated file.
data.fileSize Int Size of the generated file in bytes.
data.fileChecksum String MD5 hash of the generated file for validation.
data.fileBase64 String File encoded as Base64 string.

Error Responses

Error responses typically include an appropriate HTTP status code and a JSON body containing an error message.

{
    "code": "400",
    "status": "The upload could not be completed."
}

Download File

After the conversion is successfully completed, the file can be downloaded using the values returned under fileUrl and fileName.

cURL Request Example (macOS or Linux)

Example to download the file to the Desktop. Uses -o to specify the output file path.

curl -o ~/Desktop/{fileName} "{fileUrl}"
	                        
curl -o ~/Desktop/Demo_Sequence_25fps.csv "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

cURL Request Example (Windows with PowerShell)

curl -o "$env:USERPROFILE\Desktop\{fileName}" "{fileUrl}"
	                        
curl -o $env:USERPROFILE\Desktop\Demo_Sequence_25fps.csv "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

cURL Request Example (Windows Command Prompt with cURL installed)

curl -o "%USERPROFILE%\Desktop\{fileName}" "{fileUrl}"
	                        
curl -o %USERPROFILE%\Desktop\Demo_Sequence_25fps.csv "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

Python3 Request Example

import os
import urllib.request

name = "Demo_Sequence_25fps.csv"
url = "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

# Construct the path to the Desktop for example
local_path = os.path.join(os.path.expanduser("~"), "Desktop", name)

# Download the file
try:
    urllib.request.urlretrieve(url, local_path)
    print(f"File downloaded successfully and saved to: {local_path}")
except Exception as e:
    print(f"Failed to download file: {e}")

wget Request Example (macOS or Linux)

Example to download the file to the Desktop. Uses -O to specify the output file path.

wget -O ~/Desktop/{fileName} "{fileUrl}"

wget -O ~/Desktop/Demo_Sequence_25fps.csv "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

wget Request Example (Windows with PowerShell)

wget -O "$env:USERPROFILE\Desktop\{fileName}" "{fileUrl}"

wget -O "$env:USERPROFILE\Desktop\Demo_Sequence_25fps.csv" "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

wget Request Example (Windows Command Prompt with wget installed)

wget -O "%USERPROFILE%\Desktop\{fileName}" "{fileUrl}"

wget -O "%USERPROFILE%\Desktop\Demo_Sequence_25fps.csv" "https://editingtools.io/download/demo/path/Demo_Sequence_25fps.csv"

Create Project

This endpoint is used to create a new cue sheet project for the Music Cue Sheet Manager on the server.

Endpoint

POST https://api.editingtools.io/v2/cuesheets/project

Authentication

This API requires Basic Authentication. The "Authorization" header should be set with the Base64 encoded string of "apikey:YOUR_API_KEY".

Authorization: Basic <base64Encoded(apikey:YOUR_API_KEY)>

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential (as described above).

Request Body (JSON)

The request body should be a UTF8 JSON object containing the following parameters:

Parameter Type Required Description
name String Yes The name of the project or sequence (String 3-200 characters).
color String No The color of the project. If there is no value set, "blue" will be used as default value.
Allowed colors: blue, cyan, fuchsia, green, lavender, lemon, mint, orange, pink, purple, red, sky, yellow, white
framerate String No The framerate of the project. If there is no value set, "25" will be used as default value.
Allowed values:
  • Integer: from 8 to 90
  • Double: 23.976 and 59.94
  • String: 29.97DF and 59.94DF for Drop Framerates
entries Object No Optional object with music track entries.
Parameter Type Required Description
fileName String Yes Filename
clipName String No Title of Track
timecodeIn String Yes Timecode of cue in sequence in SMPTE format (HH:MM:SS:FF)
timecodeOut String Yes Timecode of End of cue in sequence in SMPTE format (HH:MM:SS:FF)
duration String No Cue duration in SMPTE format (HH:MM:SS:FF)
sourceStart String No Source Timecode Start in SMPTE format (HH:MM:SS:FF)
sourceEnd String No Source Timecode End in SMPTE format (HH:MM:SS:FF)
isArchived Boolean No Defines if a project is active or archived. Default value is false.
false = Active, true = Archived
productionType String No (Optional) Default: null
F = Film (Standalone), S = Series
productionCategory String No (Optional) Default: null
  • ANI = Animation/Cartoon
  • COM = Commercials
  • DOC = Documentary
  • FIL = Feature Film, TV Movie, etc.
  • INF = Infomercial
  • MIN = Mini-Series
  • MUL = Multimedia
  • NEW = News
  • ONO = One Offs / Shows (Song contest, Concert, Quiz show, etc.)
  • OTH = Other production
  • REA = Reality / Unscripted television
  • SER = TV Series, Cable Series, etc.
  • SOP = Soap Opera, Tele-Novelas
  • SPC = Specials (single television production that features a topic, or a particular performer)
  • SPE = Sporting Event, Sports Related Programme
  • TRL = Trailers
episodeTitle String No (Optional) Default: null (max. 100 characters)
episodeNumber String No (Optional) Default: null (max. 100 characters)
seasonNumber String No (Optional) Default: null (max. 100 characters)
yearOfProduction YEAR No (Optional) Default: null
country String No (Optional) Default: null
Use two digit country code.

Example Request Body 1 - only required parameters

Create a new music cue sheet project without any music track entries.

{
    "name": "My New Cue Sheet Project"
}

Example Request Body 2 - with music tracks

Create a new music cue sheet project with music track entries.

{
    "name": "My New Cue Sheet Project",
    "color": "green",
    "framerate": "23.976",
    "entries" : [
    	{"filename" : "mysong.mp3", "timecodeIn" : "10:02:12:03", "timecodeOut" : "10:02:16:12" },
    	{"filename" : "song_2.mp3", "timecodeIn" : "10:03:20:01", "timecodeOut" : "10:04:23:21" }
    ]
}

cURL Examples

The following examples show how to use the API with cURL commands. If you are using a different language, we recommend using https://curlconverter.com to convert the commands for other languages like: PHP, JavaScript, Python, Ruby, Rust, Ansible, C , C#, ColdFusion, Clojure, Dart, Elixir, Go, HAR, HTTP, HTTPie, Java, JSON, Kotlin, MATLAB, Node.js, Objective-C, OCaml, PowerShell, R, Swift and more.

cURL Request Example 1 - only required parameters

curl -X POST https://api.editingtools.io/v2/cuesheets/project \
  -u "apikey:YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My New Cue Sheet Project"
}'

cURL Request Example 2 - with cues

curl -X POST https://api.editingtools.io/v2/cuesheets/project \
  -u "apikey:YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  	"name": "My New Cue Sheet Project",
    "color": "green",
    "framerate": "23.976",
    "entries" : [
    	{"filename" : "mysong.mp3", "timecodeIn" : "10:02:12:03", "timecodeOut" : "10:02:16:12" },
    	{"filename" : "song_2.mp3", "timecodeIn" : "10:03:20:01", "timecodeOut" : "10:04:23:21" }
    ]
}'

Responses

Success (HTTP 201 Created)

If the request is successful, the API will return a 201 Created status code with a JSON object containing project details. The JSON will contain some informations.

Field Type Description
code String HTTP status code.
status String Status message.
timestamp String Timestamp of server time (ISO 8601).
data Object An object containing details about the created project.
data.projectId String The unique identifier of the project.
data.creationDate String Timestamp of project creation (ISO 8601).

Example

{
    "code": "201",
    "status": "The project was successfully created.",
    "timestamp": "2025-01-01T19:10:00Z",
    "data": {
        "projectId": "rcwo9binm0xo8wt9vpfz16pt5pypju",
        "creationDate": "2025-01-01T19:10:00Z"
    }
}

Error Responses (Example)

Error responses will typically include an appropriate HTTP status code (e.g., 400 Bad Request, 401 Unauthorized) and a JSON body with an error message.

It's recommended that the content of the "status" field be shown to end users as it can contain useful information. For example, it could be shown in an error dialog.

{
    "code": "400",
    "status": "Missing required parameter: name",
    "timestamp": "2025-01-01T19:10:00Z"
}
{
    "code": "401",
    "status": "Invalid API Key",
    "timestamp": "2025-01-01T19:10:00Z"
}

Duplicate Project

This endpoint is used to duplicate an existing music cue sheet project on the server. The project is identified by its projectId in the URL path.

Endpoint

POST https://api.editingtools.io/v2/cuesheets/project/{projectId}/copy

Replace {projectId} with the project's unique ID.

Authentication

This API requires Basic Authentication. The "Authorization" header should be set with the Base64 encoded string of "apikey:YOUR_API_KEY".

Authorization: Basic <base64Encoded(apikey:YOUR_API_KEY)>

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential (as described above).

Path Parameters

Parameter Type Description
projectId String The unique identifier of the project.

Request Body (JSON)

The request body should be a UTF8 JSON object containing the following parameters:

Parameter Type Required Description
name String Yes The name of the new project copy (String 3-200 characters).
copyEntries Boolean No Defines if all music track entries should be copied as well into the new project. Default value is false.
false = No (Do not copy),true = Yes (Copy to new project)

Example Request Body

Duplicate a project with all music track entries.

{
    "name": "My New Cue Sheet Project (Copy)",
    "copyEntries": true
}

cURL Request Example

Replace {projectId} with the project id.

curl -X POST https://api.editingtools.io/v2/cuesheets/project/{projectId}/copy \
  -u "apikey:YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My New Cue Sheet Project (Copy)",
    "copyEntries": true
}'

Responses

Success (HTTP 201 Created)

If the request is successful, the API will return a 201 Created status code with a JSON object containing project details. The JSON will contain some informations.

Field Type Description
code String HTTP status code.
status String Status message.
timestamp String Timestamp of server time (ISO 8601).
data Object An object containing details about the created project.
data.projectId String The unique identifier of the project.
data.creationDate String Timestamp of project creation (ISO 8601).

Example

{
    "code": "201",
    "status": "The music cue sheet has been duplicated successfully.",
    "timestamp": "2025-01-01T19:10:00Z",
    "data": {
        "projectId": "rcwo9binm0xo8wt9vpfz16pt5pypju",
        "creationDate": "2025-01-01T19:10:00Z"
    }
}

Error Responses (Example)

Error responses will typically include an appropriate HTTP status code (e.g., 400 Bad Request, 401 Unauthorized, 404 Not found) and a JSON body with an error message.

It's recommended that the content of the "status" field be shown to end users as it can contain useful information. For example, it could be shown in an error dialog.

{
    "code": "400",
    "status": "Please enter a project name with at least 3 characters.",
    "timestamp": "2025-01-01T19:10:00Z"
}

Get Projects (List)

This endpoint allows to get a list of all music cue sheet project connected to the API account on EditingTools.io.

Endpoint

GET https://api.editingtools.io/v2/cuesheets/projects

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential using your `YOUR_API_KEY`.

cURL Request Example 1

curl -X GET https://api.editingtools.io/v2/cuesheets/projects \
   -u "apikey:YOUR_API_KEY"

Responses

Success (HTTP 200 OK)

If the projects were successfully loaded, the API will return a 200 OK status code with a JSON object containing all existing projects.

Field Type Description
code String HTTP status code.
status String Status message.
timestamp String Timestamp of server time (ISO 8601).
data Object An object containing details about the projects.
Field Type Description
projectId String A unique identifier for the project.
name String The name of the project.
color String The color of the project.
lastUpdate String Timestamp of project update (ISO 8601).
creationDate String Timestamp of project creation (ISO 8601).

Example

{
    "code": "200",
    "status": "The projects were successfully loaded.",
    "data": [
        {
            "projectId": "6u00p3lz1ycwixs3g2kq0nx3qkroskxiw8o578wx99dor8zn",
            "name": "Late Night Show - Episode 38",
            "color": "green",
            "lastUpdate": "2025-05-17T09:17:52Z",
            "createdDate": "2025-05-01T08:20:00Z"
        },
        {
            "projectId": "nz1thfewx86pirs8etj51huxnfk6sbaytmlb62lghyt64kvs",
            "name": "Late Night Show - Episode 37",
            "color": "blue",
            "lastUpdate": "2025-05-12T10:00:34Z",
            "createdDate": "2025-05-02T10:20:52Z"
        }
    ]
    
}

Error Responses

Error responses will typically include an appropriate HTTP status code and a JSON body with an error message.

{
    "code": "400",
    "status": "The projects could not be loaded."
}

Get Project (Details)

This endpoint allows to get details of a selected project. The projectId have to be specify directly in the URL path.

Endpoint

GET https://api.editingtools.io/v2/cuesheets/project/{projectId}

Replace {projectId} with the project's unique ID.

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential using your `YOUR_API_KEY`.

Path Parameters

Parameter Type Description
projectId String The unique identifier of the project.

cURL Request Example 1

curl -X GET https://api.editingtools.io/v2/cuesheets/project/{project_id} \
   -u "apikey:YOUR_API_KEY"

Responses

Success (HTTP 200 OK)

If the project was successfully loaded, the API will return a 200 OK status code with a JSON object.

Field Type Description
code String HTTP status code.
status String Status message.
timestamp String Timestamp of server time (ISO 8601).
data Object An object containing details about the project.
Field Type Description
projectId String A unique identifier for the project.
name String The name of the project.
color String The color of the project.
lastUpdate String Timestamp of project update (ISO 8601).
creationDate String Timestamp of project creation (ISO 8601).

Example

{
    "code": "200",
    "status": "The projects were successfully loaded.",
    "data": {
        "projectId": "6u00p3lz1ycwixs3g2kq0nx3qkroskxiw8o578wx99dor8zn",
        "name": "Late Night Show - Episode 38",
        "color": "green",
        "lastUpdate": "2025-05-17T09:17:52Z",
        "createdDate": "2025-05-01T08:20:00Z"
    }
}

Error Responses

Error responses will typically include an appropriate HTTP status code and a JSON body with an error message.

{
    "code": "404",
    "status": "The project with the chosen ID could not be found."
}

Delete Project

This endpoint is used to delete a project from server. The project is identified by its projectId in the URL path.

Endpoint

DELETE https://api.editingtools.io/v2/cuesheets/project/{projectId}

Replace {projectId} with the project's unique ID.

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential using `YOUR_API_KEY`.

Path Parameters

Parameter Type Description
projectId String The unique identifier of the project.

cURL Request Example

curl -X DELETE https://api.editingtools.io/v2/cuesheets/project/{projectId} \
  -u "apikey:YOUR_API_KEY" 

Replace {projectId} with the project id.

Responses

Success (HTTP 200 OK)

If the project was deleted successfully, the API will return a 200 OK status code with a JSON object confirming the deletion.

{
    "code": "200",
    "status": "The music cue sheet project has been successfully deleted.",
    "timestamp": "2025-01-01T19:10:00Z"
}

Error Responses

Error responses will typically include an appropriate HTTP status code and a JSON body with an error message.

{
    "code": "404",
    "status": "The project with the chosen projectId could not be found.",
    "timestamp": "2025-01-01T19:10:00Z"
}

Add entries

This endpoint is used to add new music track entries to an existing music cue sheet project. Existing entries will not be changed or deleted.

(!) The current limit is 100 new track entries per call. You may need multiple calls if you have more files to add.

Endpoint

POST https://api.editingtools.io/v2/cuesheets/project/{projectId}/entries

Replace {projectId} with the project's unique ID.

Authentication

This API requires Basic Authentication. The "Authorization" header should be set with the Base64 encoded string of "apikey:YOUR_API_KEY".

Authorization: Basic <base64Encoded(apikey:YOUR_API_KEY)>

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential (as described above).

Path Parameters

Parameter Type Description
projectId String The unique identifier of the project.

Request Body (JSON)

The request body should be a UTF8 JSON object containing the following parameters:

Parameter Type Required Description
fileName String Yes Filename
clipName String No Title of Track
timecodeIn String Yes Timecode of cue in sequence in SMPTE format (HH:MM:SS:FF)
timecodeOut String Yes Timecode of End of cue in sequence in SMPTE format (HH:MM:SS:FF)
duration String No Cue duration in SMPTE format (HH:MM:SS:FF)
sourceStart String No Source Timecode Start in SMPTE format (HH:MM:SS:FF)
sourceEnd String No Source Timecode End in SMPTE format (HH:MM:SS:FF)

Example Request Body 1 - only required parameters

Create one new entry.

{
    "filename" : "mysong.mp3",
    "timecodeIn" : "10:02:12:03", 
    "timecodeOut" : "10:02:16:12"
}

Example Request Body 2 - multiple entries

Create multiple new entry with different attributes.

[
    {
        "fileName": "intro_theme.mp3",
        "clipName": "Intro Theme",
        "timecodeIn": "00:00:00:00",
        "timecodeOut": "00:00:30:12",
        "duration": "00:00:30:12"
    },
    {
        "fileName": "dialogue_1.mp3",
        "clipName": "Opening Dialogue",
        "timecodeIn": "00:00:31:00",
        "timecodeOut": "00:01:15:00",
        "sourceIn": "00:00:00:00",
        "sourceOut": "00:00:44:00"
    },
    {
        "fileName": "transition_fx.mp3",
        "clipName": "Whoosh FX",
        "timecodeIn": "00:01:15:01",
        "timecodeOut": "00:01:16:10"
    }
]

cURL Examples

cURL Request Example 1 - only required parameters

curl -X POST https://api.editingtools.io/v2/cuesheets/project/{projectId}/entries \
  -u "apikey:YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filename" : "mysong.mp3",
    "timecodeIn" : "10:02:12:03", 
    "timecodeOut" : "10:02:16:12"
}'

cURL Request Example 2 - with cues

curl -X POST https://api.editingtools.io/v2/cuesheets/project/{projectId}/entries \
  -u "apikey:YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
        "fileName": "intro_theme.mp3",
        "clipName": "Intro Theme",
        "timecodeIn": "00:00:00:00",
        "timecodeOut": "00:00:30:12",
        "duration": "00:00:30:12"
    },
    {
        "fileName": "dialogue_1.mp3",
        "clipName": "Opening Dialogue",
        "timecodeIn": "00:00:31:00",
        "timecodeOut": "00:01:15:00",
        "sourceIn": "00:00:00:00",
        "sourceOut": "00:00:44:00"
    },
    {
        "fileName": "transition_fx.mp3",
        "clipName": "Whoosh FX",
        "timecodeIn": "00:01:15:01",
        "timecodeOut": "00:01:16:10"
    }
]'

Responses

Success (HTTP 201 Created)

If the request is successful, the API will return a 201 Created status code with a JSON object containing project details. The JSON will contain some informations.

Field Type Description
code String HTTP status code.
status String Status message.
timestamp String Timestamp of server time (ISO 8601).
data Object An object containing details about the project.
data.projectId String The unique identifier of the project.
data.creationDate String Timestamp of project creation (ISO 8601).

Example

{
    "code": "201",
    "status": "The music track entries have been successfully added to the project. (3/3)",
    "timestamp": "2025-01-05T10:08:00Z",
    "data": {
        "projectId": "rcwo9binm0xo8wt9vpfz16pt5pypju",
        "creationDate": "2025-01-01T19:10:00Z"
    }
}

Error Responses (Example)

Error responses will typically include an appropriate HTTP status code (e.g., 400 Bad Request, 401 Unauthorized) and a JSON body with an error message.

It's recommended that the content of the "status" field be shown to end users as it can contain useful information. For example, it could be shown in an error dialog.

{
    "code": "404",
    "status": "Project not found.",
    "timestamp": "2025-01-01T19:10:00Z"
}

Delete Project Entries

This endpoint is used to delete all music track entries in a project. The project itself will not be deleted. The project is identified by its projectId in the URL path.

Endpoint

DELETE https://api.editingtools.io/v2/cuesheets/project/{projectId}/entries

Replace {projectId} with the project's unique ID.

Headers

Content-Type: application/json

Specifies the format of the request body.

Authorization: Basic <base64EncodedString>

Authentication credential using `YOUR_API_KEY`.

Path Parameters

Parameter Type Description
projectId String The unique identifier of the project.

cURL Request Example

curl -X DELETE https://api.editingtools.io/v2/cuesheets/project/{projectId}/entries \
  -u "apikey:YOUR_API_KEY" 

Replace {projectId} with the project id.

Responses

Success (HTTP 200 OK)

If the project entries were deleted successfully, the API will return a 200 OK status code with a JSON object confirming the deletion..

{
    "code": "200",
    "status": "All music track entries in the project have been successfully deleted.",
    "timestamp": "2025-01-01T19:10:00Z"
}

Error Responses

Error responses will typically include an appropriate HTTP status code and a JSON body with an error message.

{
    "code": "404",
    "status": "The project with the chosen projectId could not be found.",
    "timestamp": "2025-01-01T19:10:00Z"
}

Endpoint URL

Endpoint URL to convert a sequence into a music cue sheet document in one step.

https://api.editingtools.io/v2/cuesheet

Endpoint URL to create and manage a music cue sheet project.

https://api.editingtools.io/v2/cuesheets

Authentication

This API requires Basic Authentication. The "Authorization" header should be set with the Base64 encoded string of "apikey:YOUR_API_KEY".

Authorization: Basic <base64Encoded(apikey:YOUR_API_KEY)>

Data Handling

Request parameters must be UTF-8 encoded. Results are returned as UTF-8-encoded JSON. By default, datasets will be inside the data tag.

Error Handling

This API service uses standard HTTP response codes to indicate whether a method was completed successfully. HTTP response codes in the 2XX range indicate success. Responses in the 4XX range indicate some sort of failure, while responses in the 5XX range indicate an internal system error that cannot be resolved by the user. The following error codes are used by the API:

Code Description
200 OK. The request was successful.
201 Created. The entity was created.
202 Accepted. The request was accepted.
400 Bad request. Please check error message.
401 Unauthorized: Username or Api Key is not valid.
402 Upgrade Required: This feature requires an active Pro subscription.
403 Forbidden: The request is understood, but it has been refused or access is not allowed.
404 Not found: The URI requested is invalid or the resource does not exist.
422 Unprocessable Entity. A process failed.
429 Too Many Requests. Try again in some seconds.
500 Internal Server Error. Something is broken.
502 Bad Gateway. API is down.
503 Service Unavailable. API is up but overloaded with requests.
504 Gateway Timeout: API is up but requests reached timout.

Rate Limits

To prevent abuse and spam, the API has limits at various levels. If you receive error code 429 (Too Many Requests), it means you have reached a rate limit.

If you receive a rate limit error, you should stop making requests temporarily. If the retry-after response header is present, you should not retry your request until after that many seconds has elapsed. To prevent rate-errors, we recommend to wait 300 ms to 800 ms between requests to the same endpoint.

Also there is a general limit to the api and all requests made:

Limit Requests
General limit per minute 50
General limit per hour 1000
Recommended wait time between requests > 200 ms
Recommended wait time between requests to one endpoint > 600 ms

The general limits per minute and per hour can be changed upon request.

Upload Limits

The maximum upload size for any single request — including file uploads — is 100 MB. This is a hard limit and applies regardless of your API plan or usage level.

If your request exceeds this size, it will be rejected before reaching our servers. To ensure successful uploads:

  • Make sure uploaded files are under 100 MB.
  • For larger media, consider splitting files before upload.
  • Requests close to the limit may still fail due to encoding or header overhead.

Timezone

This API endpoint returns the time as an ISO 8601 timestamp in the UTC time zone. These timestamps look like 2025-01-10T15:05:06Z.

Localization and Languages

This API supports multiple languages. For instance, it can display the text of a status message in a different language.

Accept-Language: LANGUAGE

Example

To set the preferred response language to Spanish, add this header:

Accept-Language: es

cURL Example

To apply the language in a cURL request, add the following header:

-H "Accept-Language: es"

Available Languages

The following list contains all the currently available languages. Note that setting a language header does not guarantee a translated response, as not all texts are translated. If no language is set or a translation is unavailable, the default response will be in English.

Code Language
en English
de German
fr French
es Spanish
ru Russian
it Italian
el Greek
pl Polish
pt Portuguese
lt Lithuanian
ko Korean
ja Japanese
zh Chinese
id Indonesian
tr Turkish
nl Dutch
ro Romanian
fi Finnish
cs Czech
hu Hungarian
ar Arabic
nb Norwegian Bokmål
sk Slovak
sl Slovenian
sv Swedish
lv Latvian
et Estonian
bg Bulgarian
uk Ukrainian
da Danish