Flat API
flat · Media
The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the clas
Authentication
Sample Requests
List the classes available for the current user
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/flat.io/2.13.0/classes?state=active"
import requests
params = {
"state": "active"
}
response = requests.get(
"https://api.apis.guru/v2/specs/flat.io/2.13.0/classes",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/flat.io/2.13.0/classes');
url.searchParams.set('state', 'active');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/flat.io/2.13.0/classes")
q := baseURL.Query()
q.Set("state", "active")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/flat.io/2.13.0/classes")
uri.query = URI.encode_www_form({
"state" => "active"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/flat.io/2.13.0/classes?" . http_build_query([
"state" => "active"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Use this method to list the user's collections contained in `parent` (by default in the `root` collection). If no sort option is provided, the collections are sorted by `creationDate` `desc`. Note that this method will not include the `parent` collection in the listing. For example, if you need the
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/flat.io/2.13.0/collections?next=example&sort=creationDate&limit=25&parent=root&previous=example&direction=asc"
import requests
params = {
"next": "example",
"sort": "creationDate",
"limit": "25",
"parent": "root",
"previous": "example",
"direction": "asc"
}
response = requests.get(
"https://api.apis.guru/v2/specs/flat.io/2.13.0/collections",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/flat.io/2.13.0/collections');
url.searchParams.set('next', 'example');
url.searchParams.set('sort', 'creationDate');
url.searchParams.set('limit', '25');
url.searchParams.set('parent', 'root');
url.searchParams.set('previous', 'example');
url.searchParams.set('direction', 'asc');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/flat.io/2.13.0/collections")
q := baseURL.Query()
q.Set("next", "example")
q.Set("sort", "creationDate")
q.Set("limit", "25")
q.Set("parent", "root")
q.Set("previous", "example")
q.Set("direction", "asc")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/flat.io/2.13.0/collections")
uri.query = URI.encode_www_form({
"next" => "example",
"sort" => "creationDate",
"limit" => "25",
"parent" => "root",
"previous" => "example",
"direction" => "asc"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/flat.io/2.13.0/collections?" . http_build_query([
"next" => "example",
"sort" => "creationDate",
"limit" => "25",
"parent" => "root",
"previous" => "example",
"direction" => "asc"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Get details about the current authenticated User.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/flat.io/2.13.0/me?onlyId=false"
import requests
params = {
"onlyId": "false"
}
response = requests.get(
"https://api.apis.guru/v2/specs/flat.io/2.13.0/me",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/flat.io/2.13.0/me');
url.searchParams.set('onlyId', 'false');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/flat.io/2.13.0/me")
q := baseURL.Query()
q.Set("onlyId", "false")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/flat.io/2.13.0/me")
uri.query = URI.encode_www_form({
"onlyId" => "false"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/flat.io/2.13.0/me?" . http_build_query([
"onlyId" => "false"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with Flat API?
Flat API is a Media API. Developers commonly use media APIs for:
- storing and delivering images, video, and audio
- building digital asset management and media libraries
- transcoding and optimising media for the web
- adding video streaming and playback to your app
- automating content tagging and metadata extraction
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Flat API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?