REST API
Introduction
Authentication
OpenAPI/Swagger Reference
Flat for Education API
API Console
SDKs
Rate Limits
Errors
API Changelog
LTI
Flat REST API Changelog
We regularly update our API and services, you can discover all the changes to our public specification. While we try to avoid breaking changes during the Beta Period, they will be written below in bold if any.
v2.21.0 (2024-10-18)
- Scores & Library:
GET /users/{user}/scores
: As planned in 2020, this endpoint has been updated to only return public scores for user community profiles. The endpoint has also a new pagination system and sorting options.ScoreDetails
: AddededitHtmlUrl
,instrumentsNames
andscheduledDeletionDate
properties.Collection
: Addedcontents.scoresCount
property.
- Flat Community profiles:
UserPublic
now includeslikesCount
andplaysCount
properties.
- Flat for Education:
GET /eduResources
:- Added options
withoutSubfoldersResources
,assignmentTypes
,subjects
, andgrades
to filter content. - Added new response headers
X-Total-Assignments-Count
andX-Total-Folders-Count
.
- Added options
EduResource
: AddedsharingDescription
,subjects
,grades
andcapabilities.canChangePrivacy
properties.EduResourceFolder
: AddedassignmentsTypes
andresourcesCount
properties.Assignment
: AddedrestrictPlayNote
andrestrictToAudioTracks
properties.AssignmentSubmission
: Updated LTI to support LTI 1.1 and 1.3 (lti.gradeService
property).ScoreTrack
: Addedpurpose
property.
v2.20.1 (2024-03-11)
- Keep
rights
property optional onScoreDetails
v2.20.0 (2024-03-08)
- Accounts:
- feat(account): Added pagination to
GET /users/{user}/likes
and fixed typo in operationId. - feat(account): Added
product
onUserDetails
to know the product the user is using.
- feat(account): Added pagination to
- Score Library:
- feat(library): Added
collaboratorType
toResourceRights
to know if the user accessing a resource is the owner, user or group collaborator. Adjusted non-optional properties onResourceRights
. - feat(library): Added
date
toResourceCollaborator
with the date the collaborator was added. - feat(score): Added new
mainKeySignature
,highlightedDate
andorganization
properties toScoreDetails
. Adjusted non-optional properties onScoreDetails
. - feat(score): Added new
purpose
property toScoreTrack
. Adjusted non-optional properties onScoreTrack
. - feat(score): Added new
googleDriveDisabled
option when copying score (POST /scores/{score}/fork
).
- feat(library): Added
- Flat for Education:
- feat(edu): Some Flat for Education invitatons can be re-used multiple times.
- fix(edu): Flat for Education invitatons can only be used to create
admin
orteacher
accounts, fixedorganizationRole
enum. - feat(edu): Added new
verifyIfNotAlreadyInResourceLibrary
option toPOST /classes/{class}/assignments/{assignment}/copy
to avoid copying to the Resource Library if the assignment is already in it. - fix(edu): Fixed
ClassAttachmentCreation
enum values to reflect the current state of our product. - feat(edu): Added
playback
andlti
properties toAssignmentSubmission
. - fix(edu):
comments
object has never been available inAssignmentSubmissionUpdate
, only inAssignmentSubmission
. - feat(edu): Added
graded
state for submissions. - feat(edu): Added
organizationResources
library type toGET /eduResources/libraries
, and addedorganizationPublic
enum value toEduResourcePrivacy
. - feat(edu): Added new
privacy
property toPUT /eduResources/{resource}
- fix(edu): Removed unused property
alternateLink
fromMicrosoftGraphSubmission
.
- fix(schema): missing
required: true
on some POST/PUT bodies.
v2.19.0 (2023-08-25)
- feat(edu): added new
POST /eduResources/{resource}/createLtiLink
endpoint to create LTI links from Flat for Education resources. - feat(edu): maximum graded has been increased from 100 to 10000.
- feat(score): new nullable properties in
PUT /scores/{score}
to unset properties (subtitle
,composer
,lyricist
,arranger
,description
,creationType
,license
,licenseText
). - fix(score): wrong user object in
ScoreSummary
, returned object has more properties than the specification (UserPublic
). - fix(spec): various properties marked as required as they will always be returned.
v2.18.0 (2023-05-05)
- feat(edu): Released Resource Library API in beta (
/eduResources
) with new OAuth 2 scopesedu.resources
andedu.resources.readonly
. - feat(edu): Updated
POST /classes/{class}/assignments/{assignment}/copy
to allow to copy to Resource Library. - feat(edu): Updated
DELETE /classes/{class}/assignments/{assignment}/submissions/{submission}
behavior, now only resets the submission instead of deleting it. - feat(edu): Added
POST /classes/{class}/testStudent
to create testing student accounts. - feat(edu): Operation
POST /classes/{class}/assignments
has been renamed fromcreateAssignment
->createClassAssignment
in schema. - feat(edu):
Assignment
models now include a newcapabilities
property returning which actions are possible with a specific resource (canEdit
,canPublishInClass
,canPublishInClassError
,canArchive
,canUnarchive
). - feat(edu):
Assignment
models now include a newuseDedicatedAttachments
property to know if the underlying resources are dedicated and stored inside the assignment (new behavior with the resource library). - feat(edu):
ClassAssignment
now includes a newissue
property to return any issues encountered with the assignment. - feat(edu):
toolset
id provided when creating or updated assignments will now make a copy of the toolset to have a dedicated object for the assignment. - feat(edu):
AssignmentSubmissionHistory
now includes thesource
of the change, when this one comes from a third party (Google Classroom, Microsoft Teams, LTI). It also includes the following new properties:dueDate
,comment
andattachment.title
. - feat(edu):
UserDetails
now contains Microsoft Sign in details (azureDetails
) and list of groups the user is part of (groups
). - feat(edu): Added optional metadata on class objects (
level
,skillsFocused
,size
). - fix(edu): Fixed
ClassAttachmentCreation
enum values to reflect the current state of our product. - feat(scores): Updated
GET /scores/{score}/revisions/{revision}
now returns thestartDate
andendDate
for the score revisions. - feat(scores): Updated
POST /scores
to addhasQuarterTone
on score builders to enable quarter tones on score parts. - feat(scores): Updated
POST /scores/{score}/fork
to add option to keep original title during a file copy (keepOriginalTitle
). - fix(schema): Added missing required properties on models
ScoreSummary
,MediaAttachment
andFlatErrorResponse
.
v2.17.0 (2022-03-23)
- feat(collections): Add new dedicated App Collections. When creating new scores, by default Flat will add the scores to a dedicated collection for the 3rd party app. This collection is automatically created in the user account and has a new alias
app
that can be used in the URLs paths.
v2.16.0 (2021-12-11)
- feat(scores): added
POST /scores/{score}/revisions/{revision}/{format}/task
to create a new export task for a score andGET /tasks/{task}
to fetch the progress of an export task.
v2.15.0 (2021-11-10)
- feat(edu): added
POST /organizations/users/{user}/signinLink
to allow admins to create sign in links for their organization’s users. - feat(edu): added
POST /organizations/users/{user}/accessToken
to allow admins to create delegated access tokens for their organization’s users. - feat(locale): added
ja-HIRA
- feat(comments): added
moderation
object on public comments - feat(scores): added
defaultTrack
option toGET /scores/{score}/revisions/{revision}/{format}
to return mp3 tracks when a mp3 is set as default track. - DEPRECATED: removed
onlyCached
option fromGET /scores/{score}/revisions/{revision}/{format}
since only cached files are now returned for audio exports.
v2.14.0 (2021-10-04)
- feat(scores):
POST /v2/scores
has a new score builder to easily create blank scores without the need of importing a MusicXML file. Provide a list of instruments to use, and optionally customize the time signature, key signature, enable TABs, Chord grids as well as the page layout. - feat(edu):
POST /v2/organizations/users
has support for roles. - feat(edu): added new
shuffleExercises
option for worksheets. - feat(edu): added new
exercisesIds
in students submissions.
v2.13.0 (2021-07-19)
- feat(scores):
GET /v2/scores/{score}/tracks
has new query strings:listAutoTrack
to fetch tracks automatically generated & synced (playback available as a MP3 file).assignment
to filter tracks related to a Flat for Education assignment.
- feat(scores): added
GET /v2/scores/{score}/revisions/{revision}/synchronizationPoints
to fetch synchronization points automatically generated from latest MP3 playback file. - feat(scores):
GET /v2/scores/{score}/revisions/{revision}/{format}
has a new query stringurl
to fetch the CDN URL of the exported file in the JSON body. - feat(edu): added
DELETE /v2/classes/{class}/assignments/{assignment}/submissions/{submission}
to let teachers reset students’ submissions. - feat(edu): added detected
issues
on classes with the list fo accounts that couldn’t be added to the classes during synchronizations. - feat(edu): added
microsoftGraph
property on assignments with the Microsoft Teams assignmentsstate
, URLs (alternateLink
) andcategories
. - feat(edu): added
microsoftGraph
property on submissions with the Microsoft Teams submissionsstate
and URLs (alternateLink
). - feat(edu):
POST /v2/classes/{class}/assignments/{assignment}/copy
has a new propertyscheduledDate
to schedule assignments copies. - feat(edu): added
track
property to submissions for performance assigments saved audio tracks. - feat(account): added a
coverPicture
property with the URL of the profile cover picture, andpictureFile
andcoverPictureFile
containing the ID of the corresponding files. - feat(account):
GET /v2/me
has a newonlyId
query string to quickly fetch current user id.
v2.12.0 (2021-02-18)
- update(scores):
ResourceCollaborator
now includes ainvited
boolean property to know if the collaborator is still a pending invite. - feat(assignments): Export grades as CSV and Excel files (
GET /classes/{class}/assignments/{assignment}/submissions/csv
and/classes/{class}/assignments/{assignment}/submissions/excel
) - update(assignments): Assignment creation (
POST /classes/{class}/assignments
) and assignments objects now include atype
(AssignmentType
). - update(assignments): Assignments objects (
Assignment
) now include a cover URL (cover
) and the corresponding file identifier (`coverFile). - update(assignments): Assignment copy (
POST /classes/{class}/assignments/{assignment}/copy
) now accepts an optionalassigment
identifier. This can be used to override a draft assignment with the content from another assignment. - style: Lint OpenAPI v3 specification
v2.11.0 (2020-10-26)
- feat(edu):
PUT /organizations/users/{user}
has new parameters to edit accounts:username
,firstname
,lastname
,email
. - feat(edu):
POST /classes/{class}/assignments
has new parameters:toolset
id to enable a toolset for the assignment.nbPlaybackAuthorized
to limit the number of time the playback can be usedmaxPoints
for grading purposegoogleClassroom.topicId
to add the assignment under a specific Google Classroom course topicassigneeMode
andassignedStudents
to assign specific studentslockScoreTemplate
to lock assigned templatesdueDate
andscheduledDate
are nullable to unset properties- returns new information about LTI assigments, Canvas assignments and MusicFirst assignments
- feat(edu):
PUT /classes/{class}/assignments/{assignment}/submissions
has:- New parameters for grading (
draftGrade
,grade
) - A new parameter for teacher to return a submission (
return
) and - Computed comments counters (
comments
) - Returned object
AssignmentSubmission
now includesmaxPoints
for the maximum number of points when the grade was set.
- New parameters for grading (
- feat(edu): New endpoints under
/classes/{class}/assignments/{assignment}/submissions/{submission}/comments
to create, list, update and delete comments for the submission. - update(scores):
GET /scores/{score}/revisions/{revision}/{format}
query stringparts
now only accepts parts UUIDs. - update(edu):
GET /organizations/users
query stringlicenseExpirationDate
now also acceptsactive
andnotActive
values, and has a new query optiononlyIds
- DEPRECATED:
PUT /classes/{class}/assignments/{assignment}/submissions
parametersstudentComment
andreturnFeedback
have been removed.returnFeedback
has been replace by a booleanreturn
to return a submission as a teacher.
v2.10.0 (2020-06-03)
- feat(edu):
POST /v2/organizations/users
now accepts optionalfirstname
andlastname
- update(edu):
GET /v2/organizations/users
now accepts sort options and filters - feat(edu): added
GET /v2/organizations/users/count
to count users matching specified filters - feat(edu): removed deprecated
role
property fromPOST /organizations/invitations
(previously renamed toorganizationRole
) - feat(assignments): added
POST/DELETE /v2/classes/{class}/assignments/{assignment}/archive
to archive/unarchive assignments - feat(assignments): returned assignments object from
GET /v2/classes/{class}/assignments/{assignment}
now includes the main type of the assignment:newScore
,scoreTemplare
orsharedWriting
. - feat(edu): users returned by
GET /v2/groups/{group}/users
can now be filtered by the sync source:googleClassroom
,microsoftGraph
orclever
. - feat(scores): scores details returned by
GET /v2/scores/{score}
(and similar) now includes the audio samples list used by our playback. Theinstruments
property now includes a normalized list of instruments that is not dependent from the samples used.
v2.9.0 (2020-01-10)
- Schema is now using OpenAPI 3.0.2 (previous schemas were using OpenAPI 2)
- feat(scores): New metadata and update of
GET/PUT /v2/scores/{score}
:arranger
property has been addedplays
statistics are now returned (ScorePlaysCounts
)
- feat(scores): New
now
proprty on theDELETE
method to schedule a deletion to be executed shortly (avoid keeping in trash) - feat(edu): Attachments (
MediaAttachment
andClassAttachmentCreation
) have new typegoogleDrive
for attached Drive file, and a newgoogleDriveFileId
property. If the attachment is agoogleDrive
item, theiconUrl
andmimeType
properties are also returned - feat(edu): Add
microsoftGraph
info toClassDetails
(e.g.GET /v2/classes
andGET /v2/classes/{class}
) - feat(account): Add
firstname
andlastname
properties for education accounts
v2.8.0 (2019-04-27)
- feat(scores): New metadata and update of
PUT /v2/scores/{score}
:subtitle
,composer
,lyricist
andlicenseText
properties has been added- when updating
title
,subtitle
,composer
,lyricist
andlicenseText
via the API, the modifications events will be pushed to our real-time engine, and a new version will be scheduled (asynchronous) description
can now be up to 2000 characters (was previously 1000)
- feat(submissions): Added education submissions states (
created
,turnedIn
,returned
) - feat(revisions): Return the last modification
event
when fetching a revision metadata (UUID) - feat(locale): added Turkish (
tr
) - feat(licenses): added new license source
appStore
- feat(user): added
isFlatTeam
property to public profiles - chore(specs): Inline schemas
UserInstruments
,ResourceSharingKey
,ScoreData
,ScoreDataEncoding
,CollectionTitle
v2.7.0 (2018-09-11)
- update(spec): specify
produces
andconsumes
on endpoints instead of globally - feat(scores): now support Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files in POST /scores
- feat(scores): add support for
filename
when importing scores - feat(collections):
parent
collection can now be a collection id when listing collections - feat(collections): includes parent collections when listing scores
- feat(collections): add
creationDate
property in collection details - feat(comments): add
staffUuid
for contextualized comments, which will completely replacestaffIdx
in the future - feat(rights): now return a
isCollaborator
boolean property with the Score or Collection rights - update(account): added new locales supported
v2.6.0 (2018-04-23)
- feat(collections): Add new Collections API endpoints
POST /collections
: Create new collectionGET /collections
: List collectionsGET /collections/{collection}
: Get collection detailsPUT /collections/{collection}
: Update collection detailsDELETE /collections/{collection}
: Delete collectionPOST /collections/{collection}/untrash
: Untrash collectionGET /collections/{collection}/scores
: List scores contained in a collectionPUT /collections/{collection}/scores/{score}
: Add a score to a collectionDELETE /collections/{collection}/scores/{score}
: Remove a score from a collection
- feat(collections): Add new OAuth2 scopes for new features:
collections.readonly
: Allow read-only access to a user’s collections.collections.add_scores
: Allow to add scores to a user’s collections.collections
: Full, permissive scope to access all of a user’s collections.
- feat(score): Added new method to untrash a score (
POST /v2/scores/{score}/untrash
) - feat(score):
DELETE /v2/scores/{score}
can now be used without admin rights. This new behavior will unshare the score from the current account. - feat(score):
POST /scores/{score}/fork
now accepts a collection identifier to copy a score to a specific collection. - feat(comments): Comments can now be filtered by type with the new query string
type
(document
orinline
). - update(openapi): Some schema definitions have been renamed, they are now used for Scores and Collections
ScoreRights
->ResourceRights
ScoreCollaborator
->ResourceCollaborator
ScoreCollaboratorCreation
->ResourceCollaboratorCreation
- existing score sharing key ->
ResourceSharingKey
- DEPRECATED:
GET /scores/{score}/revisions/{revision}/{format}
no longer support part indexes for single/set of parts exports, but our own part UUIDs. - DEPRECATED on 2019-09-01:
GET /users/{user}/scores
will no longer list private and shared scores, but only public scores of a Flat account.
v2.5.2 (2018-02-07)
- fix(score): missing ScoreRights.aclRead type
v2.5.1 (2018-01-16)
- fix(user): Add missing escape in
pattern
(UserCreation.username
).
v2.5.0 (2017-10-22)
- feat(scores): Add video & audio tracks support for scores:
/v2/scores/{score}/tracks
.
v2.4.0 (2017-10-02)
- feat(scores): New metadata and update of
PUT /v2/scores/{score}
:- Added metadata in API
subtitle
,lyricist
,composer
,description
,tags
,creationType
,license
,licenseText
,durationTime
,numberMeasures
,mainTempoQpm
,publicationDate
. PUT /v2/scores/{score}
: Removetitle
property, this one can be updated by saving a new revision of the score data.PUT /v2/scores/{score}
: New settable properties:description
,tags
,creationType
,license
.
- Added metadata in API
v2.3.0 (2017-08-28)
- feat(user): Add profile theme and instruments played.
- feat(edu): Add new cursor-based pagination for
GET /v2/organizations/users
andGET /v2/organizations/invitations
. - feat(edu): Add new methods:
PUT /v2/organizations/users/{user}
: Admin endpoint to update managed accounts.DELETE /v2/organizations/users/{user}
: Admin endpoint to delete or convert edu accounts to consumer accounts.
- feat(edu): Classes have a new state
inactive
that can be activated using the new methodPOST /v2/classes/{class}/activate
. - feat(edu): Assignments have a new state
draft
and can have a new attachment typeexercise
. - feat(edu): Return Canvas LMS Instance domain in classes details
- feat(edu): Return Clever.com section information in classes details
v2.2.0 (2017-07-02)
- feat(edu): Public release of the first education APIs:
/v2/classes
: Classes management/v2/classes/{class}/assignments
: Flat Assignments and Submissions/v2/organizations/users
: Organization accounts management/v2/organizations/invitations
: Organization invitations for admins and teachers/v2/organizations/lti/credentials
: LTI credentials management/v2/groups/{group}
and/groups/{group}/users
: List of groups and users part of groups/v2/scores/{score}/submissions
: Submissions linked to a score
- feat(edu): New OAuth2 scopes:
edu.classes
: Full, permissive scope to manage the classes.edu.classes.readonly
: Read-only access to the classes.edu.assignments
: Read-write access to the assignments and submissions.edu.assignments.readonly
: Read-only access to the assignments and submissions.edu.admin
: Full, permissive scope to manage all the admin of an organization.edu.admin.lti
: Access and manage the LTI Credentials for an organization.edu.admin.lti.readonly
: Read-only access to the LTI Credentials of an organization.edu.admin.users
: Access and manage the users and invitations of the organization.edu.admin.users.readonly
: Read-only access to the users and invitations of the organization.
- fix(spec): Add missing scopes in specification for
GET /v2/scores/{score}/revisions/{revision}
andGET /v2/scores/{score}/revisions/{revision}/{format}
v2.1.0 (2017-04-17)
- feat(scores): Add support of private links sharing with
sharingKey
. - feat(comments): Make “revision” optional when creating comments and support of “last” keyword.
- fix(revisions): Missing
id
property inScoreRevision
. - update(spec): Specify
binary
response type forGET /v2/scores/{score}/revisions/{revision}/{format}
v2.0.0 (2017-04-10)
- chore(api): First API public release with
/v2/me
,/v2/scores
,/v2/users
and/v2/groups
.