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.
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:
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:
|
format |
String | Yes | This defines the export format. The possible export format values are:
|
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:
|
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:
|
|||||||||||||||||||||||||||||||
entries |
Object | No | Optional object with music track entries. | |||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
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
|
|||||||||||||||||||||||||||||||
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. | |||||||||||||||||
|
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. | |||||||||||||||||
|
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 |