This article or section documents the current version of Scratch (version 3.0). For this article in Scratch 1.4, see Scratch API (1.4).
An example of the Scratch API.

The Scratch API is an application programming interface which provides access to data stored by Scratch in a developer-friendly format. It can be used in many different ways in order to create applications which can send and extract data to and from the Scratch Website. The address of the current Scratch API is https://api.scratch.mit.edu.

Note Warning: Use the API responsibly and follow the Terms of Use. Abuse of the API may result in a ban.[1]

api.scratch.mit.edu Interface

The api.scratch.mit.edu interface is the latest revision of the Scratch API. It can be used to return various types of data regarding the Scratch website. This API can be accessed via the following URL.

https://api.scratch.mit.edu

All endpoints that return an array accept query parameters named limit and offset, except /studios/<studio_id>/activity which only supports limit. limit is the maximum number of items in the response (up to 40). offset is the zero-based index of the first item in the response. For example, /users/mres/projects/142/comments?limit=3&offset=10 returns the 11th, 12th and 13th comment. The default limit is 20 and the default offset is 0.

Some endpoints need an authentication token, which can be specified as a query parameter or header named x-token. The token can be obtained by making a GET request to https://scratch.mit.edu/session/ with the scratchsessionsid cookie set.

Requests with methods other than GET also need a header named X-CSRFToken, which must have the same value as the scratchcsrftoken cookie.

GET /

The root of the api interface provides basic information regarding the API and the Scratch website.


Example Request
GET https://api.scratch.mit.edu
Example Response

Response

{
 "website":"scratch.mit.edu",
 "api":"api.scratch.mit.edu",
 "help":"help@scratch.mit.edu"
}


Accounts

POST /accounts/checkpassword

Checks if a password is valid. The "msg" property of the response object is "valid password" or "invalid password".


Example Request
GET https://api.scratch.mit.edu/accounts/checkpassword
{
 "password": "..."
}
Example Response

Response

{
 "msg": "valid password"
}


GET /accounts/checkusername/<username>

Checks if a username can be registered. The "msg" property of the response object is "valid username" if it is available, "invalid username" if it is too short, too long or contains invalid characters, "username exists" if it is taken and "bad username" if it is inappropriate.


Example Request
GET https://api.scratch.mit.edu/accounts/checkusername/mres
Example Response

Response

{
 "username": "mres",
 "msg": "username exists"
}


Explore

GET /explore/projects?q=<query>&mode=<mode>&language=<language_code>

Returns an array of projects displayed on the Projects tab of the Explore page. The query (q parameter) specifies which keywords to search for. It can be set to * or omitted to get all projects. The mode can be popular (default) or trending. A language code can be specified to prefer results in a certain language.


Example Request
GET https://api.scratch.mit.edu/explore/projects?q=games&mode=trending&language=en
Example Response

Response

[
 {
 "id": 408410919,
 "title": "Classic arcade games",
 "description": "...",
 "instructions": "...",
 "visibility": "notvisible",
 "public": false,
 "comments_allowed": false,
 "is_published": false,
 "author": {
 "id": 60763959,
 "username": "best_friends2",
 "scratchteam": false,
 "history": {
 "joined": "2020-05-21T20:18:54.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/60763959_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/60763959_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/60763959_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/60763959_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/60763959_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/408410919_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/408410919_282x218.png?v=1654615007",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/408410919_216x163.png?v=1654615007",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/408410919_200x200.png?v=1654615007",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/408410919_144x108.png?v=1654615007",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/408410919_135x102.png?v=1654615007",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/408410919_100x80.png?v=1654615007"
 },
 "history": {
 "created": "2020-06-29T12:05:13.000Z",
 "modified": "2022-06-07T15:16:47.000Z",
 "shared": "2022-06-07T15:16:47.000Z"
 },
 "stats": {
 "views": 856,
 "loves": 27,
 "favorites": 23,
 "remixes": 0
 },
 "remix": {
 "root": null
 }
 },
 {
 "id": 443287357,
 "title": "[Forever-Jump] A speedrun platformer #GAMES #ALL #STORIES",
 "description": "...",
 "instructions": "...",
 "visibility": "notvisible",
 "public": false,
 "comments_allowed": false,
 "is_published": false,
 "author": {
 "id": 65862725,
 "username": "-CodingAnimations-",
 "scratchteam": false,
 "history": {
 "joined": "2020-10-25T18:24:48.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/65862725_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/65862725_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/65862725_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/65862725_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/65862725_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/443287357_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/443287357_282x218.png?v=1654108120",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/443287357_216x163.png?v=1654108120",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/443287357_200x200.png?v=1654108120",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/443287357_144x108.png?v=1654108120",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/443287357_135x102.png?v=1654108120",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/443287357_100x80.png?v=1654108120"
 },
 "history": {
 "created": "2020-10-30T17:04:14.000Z",
 "modified": "2022-06-01T18:28:40.000Z",
 "shared": "2022-05-29T19:25:37.000Z"
 },
 "stats": {
 "views": 7361,
 "loves": 235,
 "favorites": 178,
 "remixes": 0
 },
 "remix": {
 "root": null
 }
 },
 ...
]


GET /explore/studios?q=<query>&mode=<mode>&language=<language_code>

Returns an array of studios displayed on the Studios tab of the Explore page. The query (q parameter) specifies which keywords to search for. It can be set to * or omitted to get all studios. The mode can be popular (default) or trending. A language code can be specified to prefer results in a certain language.


Example Request
GET https://api.scratch.mit.edu/explore/studios?q=animations&mode=trending&language=en
Example Response

Response

[
 {
 "id": 30862185,
 "title": " -Animations-",
 "host": 87536920,
 "description": "...",
 "visibility": "notvisible",
 "public": false,
 "open_to_all": false,
 "comments_allowed": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/30862185_170x100.png",
 "history": {
 "created": "2022-01-03T08:58:13.000Z",
 "modified": "2022-04-22T06:24:01.000Z"
 },
 "stats": {}
 },
 {
 "id": 30967042,
 "title": "Best Animators Of 2022",
 "host": 54434902,
 "description": "...",
 "visibility": "notvisible",
 "public": false,
 "open_to_all": true,
 "comments_allowed": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/30967042_170x100.png",
 "history": {
 "created": "2022-01-22T23:44:36.000Z",
 "modified": "2022-05-26T13:17:20.000Z"
 },
 "stats": {}
 },
 ...
]


Health

GET /health

Used to return the status of the Scratch website.


Example Request
GET https://api.scratch.mit.edu/health
Example Response

Response

{
 "version": "ec4f74e2cb1fb245987ae88e473caef33af8400a",
 "uptime": 1263012.5,
 "load": [
 0.35,
 0.34,
 0.28
 ],
 "sql": {
 "main": {
 "primary": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 40,
 "numUsed": 0,
 "numFree": 1,
 "pendingAcquires": 0,
 "pendingCreates": 0
 },
 "replica": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 40,
 "numUsed": 2,
 "numFree": 12,
 "pendingAcquires": 0,
 "pendingCreates": 0
 }
 },
 "project_comments": {
 "primary": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 4,
 "numUsed": 0,
 "numFree": 1,
 "pendingAcquires": 0,
 "pendingCreates": 0
 },
 "replica": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 4,
 "numUsed": 0,
 "numFree": 2,
 "pendingAcquires": 0,
 "pendingCreates": 0
 }
 },
 "gallery_comments": {
 "primary": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 4,
 "numUsed": 0,
 "numFree": 0,
 "pendingAcquires": 0,
 "pendingCreates": 0
 },
 "replica": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 4,
 "numUsed": 0,
 "numFree": 1,
 "pendingAcquires": 0,
 "pendingCreates": 0
 }
 },
 "userprofile_comments": {
 "primary": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 4,
 "numUsed": 0,
 "numFree": 0,
 "pendingAcquires": 0,
 "pendingCreates": 0
 },
 "replica": {
 "ssl": true,
 "destroyed": false,
 "min": 0,
 "max": 4,
 "numUsed": 0,
 "numFree": 0,
 "pendingAcquires": 0,
 "pendingCreates": 0
 }
 }
 },
 "timestamp": 1702720365501,
 "cache": {
 "connected": true,
 "ready": true
 }
}


News

GET /news

Returns information regarding the "Scratch News" section of the homepage.


Example Request
GET https://api.scratch.mit.edu/news
Example Response

Response

[ 
 { 
 "id":140458468423,
 "stamp":"2016-03-04T19:08:01.000Z",
 "headline":"Scratch Video Update Ep. 14",
 "url":"https://scratch.mit.edu/discuss/topic/186558/",
 "image":"https://40.media.tumblr.com/b563e9425dfca8ac53396d997db312ba/tumblr_inline_nwua1f4Chy1szpavb_540.png",
 "copy":"Want to know what's happening on Scratch? Check out the latest video update!"
 },
 { 
 "id":140391071468,
 "stamp":"2016-03-03T15:13:27.000Z",
 "headline":"New Community Blog Post!",
 "url":"https://scratch.mit.edu/discuss/topic/186359/",
 "image":"https://36.media.tumblr.com/b8e8bc37f38a135a0f873a6fe7788701/tumblr_inline_nwuak8hOun1szpavb_540.png",
 "copy":"6 Dance Parties on Scratch To Join Right Now!"
 },
 ...
]


Projects

GET /projects/count/all

Returns the total number of shared projects on the Scratch website.

Note Note: This is very slow, and may lead to a 503 timeout.


Example Request
GET https://api.scratch.mit.edu/projects/count/all
Example Response

Response

{
 "count":13561186
}


GET /projects/<project_id>

Returns information about the project. The response is the same as /users/<username>/projects/<project_id> except that it includes the author's username.


Example Request
GET https://api.scratch.mit.edu/projects/142
Example Response

Response

{
 "id": 142,
 "title": "PlayWithYourFace",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 167,
 "username": "mres",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/167_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/167_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/167_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/167_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/167_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/142_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/142_282x218.png?v=1492110178",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/142_216x163.png?v=1492110178",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/142_200x200.png?v=1492110178",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/142_144x108.png?v=1492110178",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/142_135x102.png?v=1492110178",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/142_100x80.png?v=1492110178"
 },
 "history": {
 "created": "2007-03-07T14:48:22.000Z",
 "modified": "2017-04-13T19:02:58.000Z",
 "shared": "2007-03-07T14:48:22.000Z"
 },
 "stats": {
 "views": 5220,
 "loves": 296,
 "favorites": 238,
 "remixes": 32
 },
 "remix": {
 "parent": null,
 "root": null
 },
 "project_token": "1657533369_d4e43df47c361a4150d085cfb58cd184a0a4c34b"
}


PUT /projects/<project_id>

Changes the name, Instructions, or Notes and Credits of a project. Returns the updated project information. Requires authentication.


Example Request
PUT https://api.scratch.mit.edu/projects/737565268
{
 "title": "New title",
 "instructions": "New instructions",
 "description": "New Notes and Credits"
}
Example Response

Response

{
 "id": 737565268,
 "title": "New title",
 "description": "New Notes and Credits",
 "instructions": "New instructions",
 "visibility": "visible",
 "public": false,
 "comments_allowed": true,
 "is_published": false,
 "author": {
 "id": 16426047,
 "username": "Maximouse",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/16426047_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/16426047_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/16426047_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/16426047_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/16426047_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/737565268_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/737565268_282x218.png?v=1702741634",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/737565268_216x163.png?v=1702741634",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/737565268_200x200.png?v=1702741634",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/737565268_144x108.png?v=1702741634",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/737565268_135x102.png?v=1702741634",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/737565268_100x80.png?v=1702741634"
 },
 "history": {
 "created": "2022-09-27T13:30:03.000Z",
 "modified": "2023-12-16T15:47:14.000Z",
 "shared": null
 },
 "stats": {
 "views": 1,
 "loves": 0,
 "favorites": 0,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
}


GET /projects/<project_id>/favorites/user/<username>

Checks if the project has been favorited by the user. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/projects/142/favorites/user/Maximouse
Example Response

Response

{
 "projectId": "142",
 "userFavorite": false,
 "statusChanged": false
}


GET /projects/<project_id>/loves/user/<username>

Checks if the project has been loved by the user. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/projects/142/loves/user/Maximouse
Example Response

Response

{
 "projectId": "142",
 "userLove": false,
 "statusChanged": false
}


GET /projects/<project_id>/remixes

Returns an array of the project's remixes.


Example Request
GET https://api.scratch.mit.edu/projects/142/remixes
Example Response

Response

[
 {
 "id": 138240950,
 "title": "PlayWithYourFace remix",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 19462034,
 "username": "EAPO",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/19462034_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/19462034_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/19462034_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/19462034_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/19462034_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/138240950_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/138240950_282x218.png?v=1483207072",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/138240950_216x163.png?v=1483207072",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/138240950_200x200.png?v=1483207072",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/138240950_144x108.png?v=1483207072",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/138240950_135x102.png?v=1483207072",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/138240950_100x80.png?v=1483207072"
 },
 "history": {
 "created": "2016-12-31T17:57:50.000Z",
 "modified": "2016-12-31T17:57:52.000Z",
 "shared": "2016-12-31T17:57:52.000Z"
 },
 "stats": {
 "views": 60,
 "loves": 0,
 "favorites": 0,
 "remixes": 0
 },
 "remix": {
 "parent": 142,
 "root": 142
 }
 },
 {
 "id": 140921529,
 "title": "PlayWithMyFace",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 7076324,
 "username": "Babygoo25",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/7076324_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/7076324_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/7076324_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/7076324_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/7076324_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/140921529_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/140921529_282x218.png?v=1484949186",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/140921529_216x163.png?v=1484949186",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/140921529_200x200.png?v=1484949186",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/140921529_144x108.png?v=1484949186",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/140921529_135x102.png?v=1484949186",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/140921529_100x80.png?v=1484949186"
 },
 "history": {
 "created": "2017-01-19T22:44:38.000Z",
 "modified": "2017-01-20T21:53:06.000Z",
 "shared": "2017-01-19T23:13:40.000Z"
 },
 "stats": {
 "views": 84,
 "loves": 2,
 "favorites": 1,
 "remixes": 0
 },
 "remix": {
 "parent": 142,
 "root": 142
 }
 },
 ...
]


Proxy

POST /proxy/comments/project/<project_id>

Posts a comment on the project page and returns information about the comment. Requires authentication.


Example Request
POST https://api.scratch.mit.edu/proxy/comments/project/142
{
 "content": "Comment text",
 "parent_id": "",
 "commentee_id": ""
}
Example Response

Response

{
 "id": 372996396,
 "parent_id": null,
 "commentee_id": null,
 "content": "Comment text",
 "datetime_created": "2023-12-16T14:35:02.000Z",
 "datetime_modified": "2023-12-16T14:35:03.000Z",
 "visibility": "visible",
 "author": {
 "id": 16426047,
 "username": "Maximouse",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/16426047_60x60.png"
 },
 "reply_count": 0
}


DELETE /proxy/comments/project/<project_id>/comment/<comment_id>

Deletes the project comment. Requires authentication.


Example Request
DELETE https://api.scratch.mit.edu/proxy/comments/project/142/comment/272303677
Example Response

Response

{}


POST /proxy/comments/studio/<studio_id>

Posts a comment in the studio and returns information about the comment. Requires authentication.


Example Request
POST https://api.scratch.mit.edu/proxy/comments/studio/5342
{
 "content": "Comment text",
 "parent_id": "",
 "commentee_id": ""
}
Example Response

Response

{
 "id": 243636139,
 "parent_id": null,
 "commentee_id": null,
 "content": "Comment text",
 "datetime_created": "2023-12-16T14:50:13.000Z",
 "datetime_modified": "2023-12-16T14:50:13.000Z",
 "visibility": "visible",
 "author": {
 "id": 16426047,
 "username": "Maximouse",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/16426047_60x60.png"
 },
 "reply_count": 0
}


DELETE /proxy/comments/studio/<studio_id>/comment/<comment_id>

Deletes the studio comment. Requires authentication.


Example Request
DELETE https://api.scratch.mit.edu/proxy/comments/studio/5342/comment/243636139
Example Response

Response

{}


GET /proxy/featured

Returns information regarding the projects currently visible on the Front Page of the website.


Example Request
GET https://api.scratch.mit.edu/proxy/featured
Example Response

Response

{
 "community_newest_projects":[
 {
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/10157/8493.png",
 "title":"Take To The Sky- CC ~OPEN~ remix",
 "creator":"Sapphire19",
 "type":"project",
 "id":101578493,
 "love_count":0
 },
 {
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/10157/8191.png",
 "title":"Untitled",
 "creator":"Sally_Williams-",
 "type":"project",
 "id":101578191,
 "love_count":0
 },
 ...
 ],
 "community_most_remixed_projects":[
 {
 "title":"Oreo!!!",
 "type":"project",
 "remixers_count":429,
 "love_count":11395,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/2625/7525.png",
 "creator":"FunnyAnimatorJimTV",
 "id":26257525
 },
 ...
 ],
 "scratch_design_studio":[
 {
 "gallery_id":1859165,
 "creator":"NaturalmotionStudios",
 "remixers_count":0,
 "gallery_title":"Remix-A-Thon",
 "love_count":8,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/9805/1641.png",
 "title":"My Dream House - SDS",
 "type":"project",
 "id":98051641
 },
 ...
 ],
 "curator_top_projects":[
 {
 "title":"Colour Dash! ",
 "creator":"enderbrick",
 "love_count":30,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/9647/1680.png",
 "curator_name":"Cirrus-",
 "type":"project",
 "id":96471680
 },
 ...
 ],
 "community_featured_studios":[
 {
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/galleries/thumbnails/139/9754.png",
 "type":"gallery",
 "id":1399754,
 "title":"Robots, Androids, and Artificial Intelligence"
 },
 ...
 ],
 "community_most_loved_projects":[
 {
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/10022/2418.png",
 "title":"Instrument Sprites",
 "creator":"ceebee",
 "type":"project",
 "id":100222418,
 "love_count":104
 },
 ...
 ],
 "community_featured_projects":[
 {
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/9486/8644.png",
 "title":"Cavern | Platformer",
 "creator":"Influenzi",
 "type":"project",
 "id":94868644,
 "love_count":334
 },
 ...
 ]
}


POST /proxy/projects/<project_id>/favorites/user/<username>

Favorites the project. Requires authentication.


Example Request
POST https://api.scratch.mit.edu/proxy/projects/142/favorites/user/Maximouse
X-Requested-With: XMLHttpRequest
Example Response

Response

{
 "projectId": "142",
 "userFavorite": true,
 "statusChanged": true
}


DELETE /proxy/projects/<project_id>/favorites/user/<username>

Unfavorites the project. Requires authentication.


Example Request
DELETE https://api.scratch.mit.edu/proxy/projects/142/favorites/user/Maximouse
X-Requested-With: XMLHttpRequest
Example Response

Response

{
 "projectId": "142",
 "userFavorite": false,
 "statusChanged": true
}


POST /proxy/projects/<project_id>/loves/user/<username>

Loves the project. Requires authentication.


Example Request
POST https://api.scratch.mit.edu/proxy/projects/142/loves/user/Maximouse
X-Requested-With: XMLHttpRequest
Example Response

Response

{
 "projectId": "142",
 "userLove": true,
 "statusChanged": true
}


DELETE /proxy/projects/<project_id>/loves/user/<username>

Unloves the project. Requires authentication.


Example Request
DELETE https://api.scratch.mit.edu/proxy/projects/142/loves/user/Maximouse
X-Requested-With: XMLHttpRequest
Example Response

Response

{
 "projectId": "142",
 "userLove": false,
 "statusChanged": true
}


PUT /proxy/projects/<project_id>/share

Shares the project. Requires authentication.


Example Request
PUT https://api.scratch.mit.edu/proxy/projects/737565268/share
Example Response

Response

{
 "is_published": "true"
}


Search

GET /search/projects?q=<query>&mode=<mode>&language=<language_code>

Searches for projects that match the query (q parameter). The mode can be popular (default) or trending. A language code can be specified but it does not affect the results.[citation needed ]


Example Request
GET https://api.scratch.mit.edu/search/projects?q=scratch%203.0&mode=popular&language=en
Example Response

Response

[
 {
 "id": 276660763,
 "title": "Scratch 3.0 is here!",
 "description": "...",
 "instructions": "...",
 "visibility": "notvisible",
 "public": false,
 "comments_allowed": false,
 "is_published": false,
 "author": {
 "id": 15883188,
 "username": "ScratchCat",
 "scratchteam": false,
 "history": {
 "joined": "2007-03-05T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/15883188_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/15883188_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/15883188_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/15883188_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/15883188_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/276660763_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/276660763_282x218.png?v=1546613339",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/276660763_216x163.png?v=1546613339",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/276660763_200x200.png?v=1546613339",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/276660763_144x108.png?v=1546613339",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/276660763_135x102.png?v=1546613339",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/276660763_100x80.png?v=1546613339"
 },
 "history": {
 "created": "2019-01-02T19:26:00.000Z",
 "modified": "2019-01-04T14:48:59.000Z",
 "shared": "2019-01-02T19:42:07.000Z"
 },
 "stats": {
 "views": 133580,
 "loves": 5269,
 "favorites": 4000,
 "remixes": 0
 },
 "remix": {
 "root": null
 }
 },
 {
 "id": 109686323,
 "title": "Shaper [Broken by Scratch 3.0, see desc.]",
 "description": "...",
 "instructions": "...",
 "visibility": "notvisible",
 "public": false,
 "comments_allowed": false,
 "is_published": false,
 "author": {
 "id": 2197903,
 "username": "Nitttram",
 "scratchteam": false,
 "history": {
 "joined": "2013-03-03T06:44:26.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/2197903_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/2197903_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/2197903_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/2197903_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/2197903_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/109686323_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/109686323_282x218.png?v=1602445178",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/109686323_216x163.png?v=1602445178",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/109686323_200x200.png?v=1602445178",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/109686323_144x108.png?v=1602445178",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/109686323_135x102.png?v=1602445178",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/109686323_100x80.png?v=1602445178"
 },
 "history": {
 "created": "2016-05-14T16:24:46.000Z",
 "modified": "2020-10-11T19:39:38.000Z",
 "shared": "2016-05-14T17:57:16.000Z"
 },
 "stats": {
 "views": 131980,
 "loves": 6455,
 "favorites": 5555,
 "remixes": 0
 },
 "remix": {
 "root": null
 }
 },
 ...
]


GET /search/studios?q=<query>&mode=<mode>&language=<language_code>

Searches for studios that match the query (q parameter). The mode can be popular (default) or trending. A language code can be specified but it does not affect the results.[citation needed ]


Example Request
GET https://api.scratch.mit.edu/search/studios?q=scratch%20welcoming%20committee&mode=popular&language=en
Example Response

Response

[
 {
 "id": 146521,
 "title": "Scratch Welcoming Committee!",
 "host": 11655,
 "description": "...",
 "visibility": "notvisible",
 "public": false,
 "open_to_all": false,
 "comments_allowed": true,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/146521_170x100.png",
 "history": {
 "created": "2011-12-07T14:42:45.000Z",
 "modified": "2019-11-20T19:30:02.000Z"
 },
 "stats": {}
 },
 ...
]


Studios

GET /studios/<studio_id>

Returns information about the studio.


Example Request
GET https://api.scratch.mit.edu/studios/31659696
Example Response

Response

{
 "id": 31659696,
 "title": "Silhouettes & Shadows",
 "host": 128878,
 "description": "...",
 "visibility": "visible",
 "public": true,
 "open_to_all": false,
 "comments_allowed": true,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/31659696_170x100.png",
 "history": {
 "created": "2022-05-23T14:36:18.000Z",
 "modified": "2022-06-02T13:59:01.000Z"
 },
 "stats": {
 "comments": 100,
 "followers": 2327,
 "managers": 18,
 "projects": 100
 }
}


GET /studios/<studio_id>/activity?dateLimit=<date>

Returns an array of events related to the studio's activity. The dateLimit is optional: if specified, the response will contain events at least as old as the limit.


Example Request
GET https://api.scratch.mit.edu/studios/31659696/activity?dateLimit=2022年07月09日T13:35:07.000Z
Example Response

Response

[
 {
 "datetime_created": "2022-07-09T13:35:07.000Z",
 "id": "removeprojectstudio-16068410",
 "actor_id": 79368904,
 "project_id": 699062641,
 "project_title": "THUNDER STORM || Platformer + Animation || @parthox|| #all #games #art ||",
 "type": "removeprojectstudio",
 "actor_username": "parthox"
 },
 {
 "datetime_created": "2022-07-09T07:00:25.000Z",
 "id": "addprojecttostudio-119328879",
 "actor_id": 78545638,
 "project_id": 711404463,
 "project_title": "⟪Shadow Climb⟫",
 "type": "addprojecttostudio",
 "actor_username": "sihan666666"
 },
 ...
]


GET /studios/<studio_id>/comments

Returns an array of comments posted in the studio. Replies are not included in the response, so a separate request needs to be made for each comment with a "reply_count" greater than 0.


Example Request
GET https://api.scratch.mit.edu/studios/5342/comments
Example Response

Response

[
 {
 "id": 180043907,
 "parent_id": null,
 "commentee_id": null,
 "content": "Hi",
 "datetime_created": "2022-03-28T04:21:41.000Z",
 "datetime_modified": "2022-03-28T04:21:41.000Z",
 "visibility": "visible",
 "author": {
 "id": 52550610,
 "username": "THEKINGTUCK",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/52550610_60x60.png"
 },
 "reply_count": 0
 },
 {
 "id": 169074717,
 "parent_id": null,
 "commentee_id": null,
 "content": "Welcome wiki users!",
 "datetime_created": "2021-12-13T16:37:27.000Z",
 "datetime_modified": "2021-12-13T16:37:27.000Z",
 "visibility": "visible",
 "author": {
 "id": 34254819,
 "username": "beanyboy512",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/34254819_60x60.png"
 },
 "reply_count": 0
 },
 ...
]


GET /studios/<studio_id>/comments/<comment_id>

Returns information about the studio comment.


Example Request
GET https://api.scratch.mit.edu/studios/5342/comments/121123167
Example Response

Response

{
 "id": 121123167,
 "parent_id": null,
 "commentee_id": null,
 "content": "Hello random person learning about the scratch api !",
 "datetime_created": "2021-01-11T15:27:40.000Z",
 "datetime_modified": "2021-01-11T15:27:40.000Z",
 "visibility": "visible",
 "author": {
 "id": 49759421,
 "username": "programminguy",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/49759421_60x60.png"
 },
 "reply_count": 5
}


GET /studios/<studio_id>/comments/<comment_id>/replies

Returns an array of replies to the specified studio comment.


Example Request
GET https://api.scratch.mit.edu/studios/5342/comments/121123167/replies
Example Response

Response

[
 {
 "id": 164453087,
 "parent_id": 121123167,
 "commentee_id": 49759421,
 "content": "ha I was doing that.",
 "datetime_created": "2021-10-22T21:29:23.000Z",
 "datetime_modified": "2021-10-22T21:29:23.000Z",
 "visibility": "visible",
 "author": {
 "id": 40018021,
 "username": "bluepig600",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/40018021_60x60.png"
 },
 "reply_count": 0
 },
 {
 "id": 168271657,
 "parent_id": 121123167,
 "commentee_id": 49759421,
 "content": "Hah same!",
 "datetime_created": "2021-12-04T07:30:10.000Z",
 "datetime_modified": "2021-12-04T07:30:10.000Z",
 "visibility": "visible",
 "author": {
 "id": 86337330,
 "username": "Le-Frog",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/86337330_60x60.png"
 },
 "reply_count": 0
 },
 ...
]


GET /studios/<studio_id>/curators

Returns an array of the studio's curators.


Example Request
GET https://api.scratch.mit.edu/studios/31659696/curators
Example Response

Response

[
 {
 "id": 74326749,
 "username": "Aloeheart6",
 "scratchteam": false,
 "history": {
 "joined": "2021-03-25T20:41:05.000Z"
 },
 "profile": {
 "id": 74326749,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/74326749_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/74326749_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/74326749_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/74326749_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/74326749_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "Antarctica"
 }
 },
 {
 "id": 68657543,
 "username": "Mirtillo_Strawberry",
 "scratchteam": false,
 "history": {
 "joined": "2020-12-08T18:51:49.000Z"
 },
 "profile": {
 "id": 68657543,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/68657543_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/68657543_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/68657543_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/68657543_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/68657543_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "United States"
 }
 },
 ...
]


GET /studios/<studio_id>/managers

Returns an array of the studio's managers.


Example Request
GET https://api.scratch.mit.edu/studios/31659696/managers
Example Response

Response

[
 {
 "id": 128878,
 "username": "ScratchDesignStudio",
 "scratchteam": false,
 "history": {
 "joined": "2008-06-20T12:21:46.000Z"
 },
 "profile": {
 "id": 128546,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/128878_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/128878_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/128878_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/128878_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/128878_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "United States"
 }
 },
 {
 "id": 2755634,
 "username": "ceebee",
 "scratchteam": true,
 "history": {
 "joined": "2013-09-21T14:57:20.000Z"
 },
 "profile": {
 "id": 2755634,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/2755634_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/2755634_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/2755634_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/2755634_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/2755634_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "United States"
 }
 },
 ...
]


GET /studios/<studio_id>/projects

Returns an array of projects in the studio.


Example Request
GET https://api.scratch.mit.edu/studios/31659696/projects
Example Response

Response

[
 {
 "id": 712482210,
 "title": "Siren head - point and click and shadows",
 "image": "https://cdn2.scratch.mit.edu/get_image/project/712482210_480x360.png",
 "creator_id": 80340175,
 "username": "karkulin123",
 "avatar": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/80340175_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/80340175_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/80340175_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/80340175_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/80340175_32x32.png?v="
 },
 "actor_id": 95464324
 },
 {
 "id": 712758811,
 "title": "Cool Shadow that does shadow thing",
 "image": "https://cdn2.scratch.mit.edu/get_image/project/712758811_480x360.png",
 "creator_id": 56350936,
 "username": "google-X",
 "avatar": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/56350936_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/56350936_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/56350936_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/56350936_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/56350936_32x32.png?v="
 },
 "actor_id": 67144386
 },
 ...
]


POST /studios/<studio_id>/project/<project_id>

Adds the project to the studio and returns information about the activity. Requires authentication.


Example Request
POST https://api.scratch.mit.edu/studios/31749150/project/142
Example Response

Response

{
 "actorId": 16426047,
 "projectId": "142",
 "datetimeCreated": "2023-12-16 14:57:55",
 "studioId": "31749150"
}


DELETE /studios/<studio_id>/project/<project_id>

Removes the project from the studio. Requires authentication.


Example Request
DELETE https://api.scratch.mit.edu/studios/31749150/project/142
Example Response

Response

[]


PUT /studios/<studio_id>/transfer/<username>

Makes the specified user the host of the studio.


Example Request
GET https://api.scratch.mit.edu/studios/31749150/transfer/__mm_test__
{
 "password": "..."
}
Example Response

Response

[]


GET /studios/<studio_id>/users/<username>

Returns information about the user's role in the studio. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/studios/31659696/users/Maximouse
Example Response

Response

{
 "manager": false,
 "curator": false,
 "invited": false,
 "following": false
}


Users

GET /users/<username>

Returns information about the specified user.


Example Request
GET https://api.scratch.mit.edu/users/mres
Example Response

Response

{
 "id":167,
 "username":"mres",
 "history":{
 "joined":"2007-03-07T03:50:14.000Z"
 },
 "profile":{
 "id":29,
 "images":{
 "90x90":"https://cdn2.scratch.mit.edu/get_image/user/167_90x90.png?v=",
 "60x60":"https://cdn2.scratch.mit.edu/get_image/user/167_60x60.png?v=",
 "55x55":"https://cdn2.scratch.mit.edu/get_image/user/167_55x55.png?v=",
 "50x50":"https://cdn2.scratch.mit.edu/get_image/user/167_50x50.png?v=",
 "32x32":"https://cdn2.scratch.mit.edu/get_image/user/167_32x32.png?v="
 },
 "status":"...",
 "bio":"...",
 "country":"United States"
 }
}


GET /users/<username>/favorites

Returns an array of details regarding the projects that a given user has favourited on the website.


Example Request
GET https://api.scratch.mit.edu/users/mres/favorites
Example Response

Response

[
 {
 "id": 938601234,
 "title": "Pastorela 2023",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 631974,
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/631974_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/631974_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/631974_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/631974_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/631974_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/938601234_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/938601234_282x218.png?v=1702484760",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/938601234_216x163.png?v=1702484760",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/938601234_200x200.png?v=1702484760",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/938601234_144x108.png?v=1702484760",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/938601234_135x102.png?v=1702484760",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/938601234_100x80.png?v=1702484760"
 },
 "history": {
 "created": "2023-12-11T19:59:22.000Z",
 "modified": "2023-12-13T16:26:00.000Z",
 "shared": "2023-12-12T00:48:45.000Z"
 },
 "stats": {
 "views": 46,
 "loves": 11,
 "favorites": 8,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
 {
 "id": 408019120,
 "title": "Sad Song - Lyric Video",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 12299062,
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/12299062_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/12299062_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/12299062_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/12299062_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/12299062_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/408019120_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/408019120_282x218.png?v=1702422242",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/408019120_216x163.png?v=1702422242",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/408019120_200x200.png?v=1702422242",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/408019120_144x108.png?v=1702422242",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/408019120_135x102.png?v=1702422242",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/408019120_100x80.png?v=1702422242"
 },
 "history": {
 "created": "2020-06-27T05:06:48.000Z",
 "modified": "2023-12-12T23:04:02.000Z",
 "shared": "2020-06-28T19:11:27.000Z"
 },
 "stats": {
 "views": 21672,
 "loves": 945,
 "favorites": 777,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
 ...
]


GET /users/<username>/followers

Returns a list of a user's most recent followers.


Example Request
GET https://api.scratch.mit.edu/users/mres/followers
Example Response

Response

[ 
 {
 "id": 36125817,
 "username": "HelloMrsChan",
 "scratchteam": false,
 "history": {
 "joined": "2018-10-04T14:20:28.000Z"
 },
 "profile": {
 "id": 36125817,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/36125817_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/36125817_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/36125817_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/36125817_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/36125817_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "Canada"
 }
 },
 {
 "id": 25494506,
 "username": "YokuManX99",
 "scratchteam": false,
 "history": {
 "joined": "2017-09-08T23:57:02.000Z"
 },
 "profile": {
 "id": 25494506,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/25494506_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/25494506_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/25494506_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/25494506_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/25494506_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "United States"
 }
 },
 ...
]


GET /users/<username>/following

Returns a list of the users that the specified user has most recently followed.


Example Request
GET https://api.scratch.mit.edu/users/mres/following
Example Response

Response

[ 
 {
 "id": 1197797,
 "username": "bubble103",
 "scratchteam": false,
 "history": {
 "joined": "2012-02-16T06:26:12.000Z"
 },
 "profile": {
 "id": 1197797,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/1197797_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/1197797_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/1197797_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/1197797_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/1197797_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "South Africa"
 }
 },
 {
 "id": 10707222,
 "username": "-MarzBarz-",
 "scratchteam": false,
 "history": {
 "joined": "2015-06-18T23:00:09.000Z"
 },
 "profile": {
 "id": 10707222,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/10707222_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/10707222_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/10707222_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/10707222_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/10707222_32x32.png?v="
 },
 "status": "...",
 "bio": "...",
 "country": "United States"
 }
 },
 ...
]


GET /users/<username>/following/studios/projects

Returns information regarding the Projects in Studios I'm Following row on the front page. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/following/studios/projects
Example Response

Response

[]


GET /users/<username>/following/users/activity

Returns information regarding the "What's Happening?" section of the homepage for a given user. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/following/users/activity
Example Response

Response

[
 {
 "id": 236958773,
 "datetime_created": "2023-12-16T07:55:17.000Z",
 "actor_username": "PutneyCat",
 "actor_id": 6777752,
 "project_id": 940466495,
 "title": "Spirograph ART",
 "type": "loveproject"
 },
 {
 "id": 195704050,
 "datetime_created": "2023-12-16T01:27:48.000Z",
 "actor_username": "Cloud-Multiplayer",
 "actor_id": 44458199,
 "project_id": 937252744,
 "project_title": "Multiplayer Monopoly Junior",
 "type": "favoriteproject"
 },
 ...
]


GET /users/<username>/following/users/loves

Returns information regarding the Projects Loved by Scratchers I'm Following row on the front page. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/following/users/loves
Example Response

Response

[
 {
 "id": 165031008,
 "title": "❤️ Planting a Garden of Love - Disability Pride ❤️",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 13654689,
 "username": "huagoose",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/13654689_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/13654689_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/13654689_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/13654689_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/13654689_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/165031008_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/165031008_282x218.png?v=1702496076",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/165031008_216x163.png?v=1702496076",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/165031008_200x200.png?v=1702496076",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/165031008_144x108.png?v=1702496076",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/165031008_135x102.png?v=1702496076",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/165031008_100x80.png?v=1702496076"
 },
 "history": {
 "created": "2017-06-07T12:33:23.000Z",
 "modified": "2023-12-13T19:34:36.000Z",
 "shared": "2023-07-07T15:59:07.000Z"
 },
 "stats": {
 "views": 18431,
 "loves": 1368,
 "favorites": 1039,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
 {
 "id": 230073978,
 "title": "サッカー / Soccer",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 16474466,
 "username": "pandakun",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/16474466_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/16474466_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/16474466_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/16474466_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/16474466_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/230073978_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/230073978_282x218.png?v=1530701237",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/230073978_216x163.png?v=1530701237",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/230073978_200x200.png?v=1530701237",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/230073978_144x108.png?v=1530701237",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/230073978_135x102.png?v=1530701237",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/230073978_100x80.png?v=1530701237"
 },
 "history": {
 "created": "2018-06-21T10:23:58.000Z",
 "modified": "2018-07-04T10:47:17.000Z",
 "shared": "2018-06-21T10:25:14.000Z"
 },
 "stats": {
 "views": 339544,
 "loves": 3052,
 "favorites": 2769,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
]


GET /users/<username>/following/users/projects

Returns information regarding the Projects by Scratchers I'm Following row on the front page. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/following/users/projects
Example Response

Response

[]


GET /users/<username>/invites

If the user is invited to become a Scratcher, returns details about the invitation. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/invites
Example Response

Response

{}


GET /users/<username>/messages?filter=<filter>

Returns an array of the user's messages. The filter can be comments, projects, studios, or forums. If it is omitted, the response will include all categories of messages. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/messages?filter=projects
Example Response

Response

[
 {
 "id": 195623839,
 "datetime_created": "2023-12-15T12:24:27.000Z",
 "actor_username": "Scratcher_John1234",
 "actor_id": 118412759,
 "project_id": 369597049,
 "project_title": "Pixel art editor (99% pen)",
 "type": "favoriteproject"
 },
 {
 "id": 236833319,
 "datetime_created": "2023-12-15T12:24:26.000Z",
 "actor_username": "Scratcher_John1234",
 "actor_id": 118412759,
 "project_id": 369597049,
 "title": "Pixel art editor (99% pen)",
 "type": "loveproject"
 },
 ...
]


GET /users/<username>/messages/admin

Returns an array of the user's unread alerts. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/messages/admin
Example Response

Response

[]


GET /users/<username>/messages/count

This returns the number of unread messages a user currently has. This is what the system looks for showing the message count.


Example Request
GET https://api.scratch.mit.edu/users/mres/messages/count
Example Response

Response

{
 "count":12
}


GET /users/<username>/projects

Returns an array with information regarding the projects that a given user has shared on the Scratch website.


Example Request
GET https://api.scratch.mit.edu/users/mres/projects
Example Response

Response

[
 {
 "id": 142,
 "title": "PlayWithYourFace",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 167,
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/167_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/167_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/167_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/167_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/167_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/142_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/142_282x218.png?v=1492110178",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/142_216x163.png?v=1492110178",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/142_200x200.png?v=1492110178",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/142_144x108.png?v=1492110178",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/142_135x102.png?v=1492110178",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/142_100x80.png?v=1492110178"
 },
 "history": {
 "created": "2007-03-07T14:48:22.000Z",
 "modified": "2017-04-13T19:02:58.000Z",
 "shared": "2007-03-07T14:48:22.000Z"
 },
 "stats": {
 "views": 6029,
 "loves": 329,
 "favorites": 272,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
 {
 "id": 864,
 "title": "OceanMusicBox",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 167,
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/167_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/167_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/167_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/167_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/167_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/864_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/864_282x218.png?v=1175090510",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/864_216x163.png?v=1175090510",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/864_200x200.png?v=1175090510",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/864_144x108.png?v=1175090510",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/864_135x102.png?v=1175090510",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/864_100x80.png?v=1175090510"
 },
 "history": {
 "created": "2007-03-28T14:01:50.000Z",
 "modified": "2007-03-28T14:01:50.000Z",
 "shared": "2007-03-28T14:01:50.000Z"
 },
 "stats": {
 "views": 421,
 "loves": 28,
 "favorites": 26,
 "remixes": 0
 },
 "remix": {
 "parent": 62849,
 "root": 62849
 }
 },
 ...
]


GET /users/<username>/projects/recentlyviewed

Returns an array of projects the user has recently viewed. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/projects/recentlyviewed
Example Response

Response

[
 {
 "id": 142,
 "title": "PlayWithYourFace",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 167,
 "username": "mres",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/167_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/167_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/167_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/167_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/167_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/142_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/142_282x218.png?v=1492110178",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/142_216x163.png?v=1492110178",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/142_200x200.png?v=1492110178",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/142_144x108.png?v=1492110178",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/142_135x102.png?v=1492110178",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/142_100x80.png?v=1492110178"
 },
 "history": {
 "created": "2007-03-07T14:48:22.000Z",
 "modified": "2017-04-13T19:02:58.000Z",
 "shared": "2007-03-07T14:48:22.000Z"
 },
 "stats": {
 "views": 6031,
 "loves": 329,
 "favorites": 272,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
 {
 "id": 10128407,
 "title": "Paper Minecraft v11.7 (Minecraft 2D)",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": false,
 "is_published": true,
 "author": {
 "id": 1882674,
 "username": "griffpatch",
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/1882674_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/1882674_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/1882674_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/1882674_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/1882674_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/10128407_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/10128407_282x218.png?v=1701011403",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/10128407_216x163.png?v=1701011403",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/10128407_200x200.png?v=1701011403",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/10128407_144x108.png?v=1701011403",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/10128407_135x102.png?v=1701011403",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/10128407_100x80.png?v=1701011403"
 },
 "history": {
 "created": "2013-05-04T19:56:50.000Z",
 "modified": "2023-11-26T15:10:03.000Z",
 "shared": "2014-12-01T12:55:01.000Z"
 },
 "stats": {
 "views": 57261666,
 "loves": 457489,
 "favorites": 406591,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
 },
 ...
]


GET /users/<username>/projects/<project_id>

Returns information relevant to the given project.


Example Request
GET https://api.scratch.mit.edu/users/mres/projects/142
Example Response

Response

{
 "id": 142,
 "title": "PlayWithYourFace",
 "description": "...",
 "instructions": "...",
 "visibility": "visible",
 "public": true,
 "comments_allowed": true,
 "is_published": true,
 "author": {
 "id": 167,
 "scratchteam": false,
 "history": {
 "joined": "1900-01-01T00:00:00.000Z"
 },
 "profile": {
 "id": null,
 "images": {
 "90x90": "https://cdn2.scratch.mit.edu/get_image/user/167_90x90.png?v=",
 "60x60": "https://cdn2.scratch.mit.edu/get_image/user/167_60x60.png?v=",
 "55x55": "https://cdn2.scratch.mit.edu/get_image/user/167_55x55.png?v=",
 "50x50": "https://cdn2.scratch.mit.edu/get_image/user/167_50x50.png?v=",
 "32x32": "https://cdn2.scratch.mit.edu/get_image/user/167_32x32.png?v="
 }
 }
 },
 "image": "https://cdn2.scratch.mit.edu/get_image/project/142_480x360.png",
 "images": {
 "282x218": "https://cdn2.scratch.mit.edu/get_image/project/142_282x218.png?v=1492110178",
 "216x163": "https://cdn2.scratch.mit.edu/get_image/project/142_216x163.png?v=1492110178",
 "200x200": "https://cdn2.scratch.mit.edu/get_image/project/142_200x200.png?v=1492110178",
 "144x108": "https://cdn2.scratch.mit.edu/get_image/project/142_144x108.png?v=1492110178",
 "135x102": "https://cdn2.scratch.mit.edu/get_image/project/142_135x102.png?v=1492110178",
 "100x80": "https://cdn2.scratch.mit.edu/get_image/project/142_100x80.png?v=1492110178"
 },
 "history": {
 "created": "2007-03-07T14:48:22.000Z",
 "modified": "2017-04-13T19:02:58.000Z",
 "shared": "2007-03-07T14:48:22.000Z"
 },
 "stats": {
 "views": 6029,
 "loves": 329,
 "favorites": 272,
 "remixes": 0
 },
 "remix": {
 "parent": null,
 "root": null
 }
}


GET /users/<username>/projects/<project_id>/comments

Returns an array of comments posted on the project. Replies are not included in the response, so a separate request needs to be made for each comment with a "reply_count" greater than 0.


Example Request
GET https://api.scratch.mit.edu/users/mres/projects/142/comments
Example Response

Response

[
 {
 "id": 276455882,
 "parent_id": null,
 "commentee_id": null,
 "content": "yas",
 "datetime_created": "2022-06-28T03:37:43.000Z",
 "datetime_modified": "2022-06-28T03:37:43.000Z",
 "visibility": "visible",
 "author": {
 "id": 97472616,
 "username": "AIYAHNA",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/97472616_60x60.png"
 },
 "reply_count": 0
 },
 {
 "id": 272303677,
 "parent_id": null,
 "commentee_id": null,
 "content": "Nice! And... erm... made before I was born...",
 "datetime_created": "2022-06-02T00:38:43.000Z",
 "datetime_modified": "2022-06-02T00:38:43.000Z",
 "visibility": "visible",
 "author": {
 "id": 63496063,
 "username": "WarriorsFan999",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/63496063_60x60.png"
 },
 "reply_count": 1
 },
 ...
]


GET /users/<username>/projects/<project_id>/comments/<comment_id>

Returns information about the project comment.


Example Request
GET https://api.scratch.mit.edu/users/mres/projects/142/comments/272303677
Example Response

Response

{
 "id": 272303677,
 "parent_id": null,
 "commentee_id": null,
 "content": "Nice! And... erm... made before I was born...",
 "datetime_created": "2022-06-02T00:38:43.000Z",
 "datetime_modified": "2022-06-02T00:38:43.000Z",
 "visibility": "visible",
 "author": {
 "id": 63496063,
 "username": "WarriorsFan999",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/63496063_60x60.png"
 },
 "reply_count": 1
}


GET /users/<username>/projects/<project_id>/comments/<comment_id>/replies

Returns an array of replies to the specified project comment.


Example Request
GET https://api.scratch.mit.edu/users/mres/projects/142/comments/272303677/replies
Example Response

Response

[
 {
 "id": 276870346,
 "parent_id": 272303677,
 "commentee_id": 63496063,
 "content": "meh too lol",
 "datetime_created": "2022-07-01T02:56:59.000Z",
 "datetime_modified": "2022-07-01T02:57:00.000Z",
 "visibility": "visible",
 "author": {
 "id": 66601246,
 "username": "HAPPY0412",
 "scratchteam": false,
 "image": "https://cdn2.scratch.mit.edu/get_image/user/66601246_60x60.png"
 },
 "reply_count": 0
 },
 ...
]


GET /users/<username>/projects/<project_id>/studios

Returns an array of studios the project is in.


Example Request
GET https://api.scratch.mit.edu/users/mres/projects/142/studios
Example Response

Response

[
 {
 "id": 5342,
 "title": "MAS714 - Intro Projects-5342",
 "host": 167,
 "description": "...",
 "visibility": "visible",
 "public": true,
 "open_to_all": false,
 "comments_allowed": true,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/5342_170x100.png",
 "history": {
 "created": "2008-05-03T17:01:39.000Z",
 "modified": "2012-05-11T18:17:00.000Z"
 },
 "stats": {}
 },
 {
 "id": 16617,
 "title": "All projects go here!",
 "host": 68887,
 "description": "...",
 "visibility": "visible",
 "public": true,
 "open_to_all": false,
 "comments_allowed": true,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/16617_170x100.png",
 "history": {
 "created": "2008-04-18T08:15:42.000Z",
 "modified": "2012-06-03T13:10:35.000Z"
 },
 "stats": {}
 },
 ...
]


POST /users/<username>/projects/<project_id>/views

Increments the project's view count. If the project has already been viewed by the same user, the request will fail with the error code 429 (Too Many Requests). Requires authentication.


Example Request
POST https://api.scratch.mit.edu/users/mres/projects/142/views
Example Response

Response

{}


GET /users/<username>/projects/<project_id>/visibility

Returns additional information about an unshared project. Requires authentication.


Example Request
GET https://api.scratch.mit.edu/users/Maximouse/projects/737565268/visibility
Example Response

Response

{
 "projectId": 737565268,
 "creatorId": 16426047,
 "deleted": false,
 "censored": false,
 "censoredByAdmin": false,
 "censoredByCommunity": false,
 "reshareable": true,
 "message": ""
}


GET /users/<username>/studios/curate

Returns an array of studios curated by the user.


Example Request
GET https://api.scratch.mit.edu/users/mres/studios/curate
Example Response

Response

[
 {
 "id": 5342,
 "title": "MAS714 - Intro Projects-5342",
 "host": 167,
 "description": "...",
 "visibility": "visible",
 "public": true,
 "open_to_all": false,
 "comments_allowed": true,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/5342_170x100.png",
 "history": {
 "created": "2008-05-03T17:01:39.000Z",
 "modified": "2012-05-11T18:17:00.000Z"
 },
 "stats": {}
 },
 {
 "id": 5889,
 "title": "MAS.714 Favorites",
 "host": 167,
 "description": "...",
 "visibility": "visible",
 "public": true,
 "open_to_all": false,
 "comments_allowed": true,
 "image": "https://cdn2.scratch.mit.edu/get_image/gallery/5889_170x100.png",
 "history": {
 "created": "2007-09-25T12:36:55.000Z",
 "modified": "2008-02-23T01:14:25.000Z"
 },
 "stats": {}
 },
 ...
]


Removed endpoints

GET /proxy/users/<user_id>/featured

Returned information regarding the Projects by Scratchers I'm Following, Projects Loved by Scratchers I'm Following and Projects in Studios I'm Following rows on the front page. Moved to /users/<username>/following/users/projects, /users/<username>/following/users/loves, and /users/<username>/following/studios/projects.


Example Request
GET https://api.scratch.mit.edu/proxy/users/167/featured
Example Response

Response

{ 
 "custom_projects_by_following":[ 
 { 
 "title":"Justify",
 "type":"project",
 "remixers_count":"0",
 "love_count":"17",
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/10012/2918.png",
 "creator":"NickyNouse",
 "id":"100122918"
 },
 { 
 "title":"Cosmic Narwhal ",
 "type":"project",
 "remixers_count":"0",
 "love_count":"10",
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/10090/1960.png",
 "creator":"petrichord",
 "id":"100901960"
 },
 ...
 ],
 "custom_projects_in_studios_following":[ 
 { 
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/10098/9479.png",
 "title":"Life",
 "creator":"Shoujo-ai",
 "type":"project",
 "id":"100989479",
 "love_count":"22"
 },
 ...
 ],
 "custom_projects_loved_by_following":[ 
 { 
 "creator":"Meap77",
 "remixers_count":"32",
 "love_count":"1099",
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/9530/1826.png",
 "title":"Can You Remember? (the game)",
 "type":"project",
 "id":"95301826"
 },
 ...
 ]
}


GET /proxy/users/<username>/activity

Returned information regarding the "What's Happening?" section of the homepage for a given user. Moved to /users/<username>/following/users/activity.


Example Request
GET https://api.scratch.mit.edu/proxy/users/mres/activity
Example Response

Response

[ 
 { 
 "obj_id":100736613,
 "datetime_created":"2016-03-14T12:09:49",
 "actor":{ 
 "username":"ceebee",
 "pk":2755634,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/users/avatars/275/5634.png",
 "admin":true
 },
 "pk":227790976,
 "message":"\nfavorited\n <a href=\"/projects/100736613/\">I'm A Cat AMV</a>",
 "extra_data":{ 
 "project_title":"I'm A Cat AMV"
 },
 "type":3
 },
 { 
 "obj_id":100736613,
 "datetime_created":"2016-03-14T12:09:49",
 "actor":{ 
 "username":"ceebee",
 "pk":2755634,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/users/avatars/275/5634.png",
 "admin":true
 },
 "pk":227790975,
 "message":"\nloved\n <a href=\"/projects/100736613/\">I'm A Cat AMV</a>",
 "extra_data":{ 
 "project_title":"I'm A Cat AMV"
 },
 "type":2
 },
 { 
 "obj_id":101537695,
 "datetime_created":"2016-03-14T07:13:36",
 "actor":{ 
 "username":"ericr",
 "pk":159,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/users/avatars/0/0159.png",
 "admin":false
 },
 "pk":227767012,
 "message":"\nshared the project \n <a href=\"/projects/101537695/\" data-tag=\"object\">a little band</a>",
 "extra_data":{ 
 "project_title":"a little band"
 },
 "type":10
 },
 { 
 "obj_id":13182467,
 "datetime_created":"2016-03-14T04:33:18",
 "actor":{ 
 "username":"ericr",
 "pk":159,
 "thumbnail_url":"//cdn.scratch.mit.edu/static/site/users/avatars/0/0159.png",
 "admin":false
 },
 "pk":227757062,
 "message":"\nis now following\n <a href=\"/users/juanneco/\">juanneco</a>",
 "extra_data":{ 
 "followee_username":"juanneco"
 },
 "type":0
 },
 ...
]


GET /proxy/users/<username>/activity/count

Was used to return the number of unread messages a user currently has. Moved to /users/<username>/messages/count .


Example Request
GET https://api.scratch.mit.edu/proxy/users/mres/activity/count
Example Response

Response

{
 "msg_count":12
}


April Fools' Day, 2018

As an easter egg for April Fools' Day 2018, a counter endpoint was added.

POST /surprise

Increments the counter and returns its current value.


Example Request
POST https://api.scratch.mit.edu/surprise
Example Response

Response

{ 
 "surprise":63064
}


GET /surprise

Returns the counter's current value. This is cached on the server, and so might return an earlier value.


Example Request
GET https://api.scratch.mit.edu/surprise
Example Response

Response

{ 
 "surprise":63064
}


site-api Interface (Deprecated)

The site-api is a legacy interface which was officially deprecated on 25 October 2015, as announced by Scratch Team member, thisandagain.[2] It is still available though, and is used by some parts of the Scratch website. This API can be accessed via the following URL:

https://scratch.mit.edu/site-api/

Users

GET /users/all/<username>/

Returns info on the user's featured project and the attached label.

Example Request
GET https://scratch.mit.edu/site-api/users/all/<username>/
Example Response

Response

{
 "featured_project_label_name": "Featured Project",
 "featured_project_data": {
 "creator": "TimMcCool",
 "thumbnail_url": "//uploads.scratch.mit.edu/projects/thumbnails/864001370.png",
 "id": 864001370,
 "datetime_modified": "2024-10-06T20:13:02",
 "title": "☁️ Audio Renderer (custom audio upload) ✦ plays any audio YOU upload"
 },
 "featured_project": 864001370,
 "thumbnail_url": "//uploads.scratch.mit.edu/users/avatars/42591968.png",
 "user": {
 "username": "TimMcCool",
 "pk": 42591968
 },
 "featured_project_label_id": null,
 "id": 41710459
}


PUT /users/followers/<target_username>/add/?usernames=<username>

Follows the user specified in the <target_username> using the account specified in the <actor_username> field. Requires authentication.

Example Request
PUT https://scratch.mit.edu/site-api/users/followers/<target_username>/add/?usernames=<actor_username>
Example Response

Response

(no response available)


PUT /users/followers/<target_username>/remove/?usernames=<username>

Unfollows the user specified in the <target_username> using the account specified in the <actor_username> field. Requires authentication.

Example Request
PUT https://scratch.mit.edu/site-api/users/followers/<target_username>/remove/?usernames=<actor_username>
Example Response

Response

(no response available)


Comments

GET /comments/gallery/<studio_id>/

Returns the comments on a studio in the form of raw HTML.


Example Request
GET https://scratch.mit.edu/site-api/comments/gallery/5342/
Example Response

Response

(no response available)


GET /comments/project/<project_id>/

Returns the comments on a project in the form of raw HTML.


Example Request
GET https://scratch.mit.edu/site-api/comments/project/142/
Example Response

Response

(no response available)


GET /comments/user/<username>/

Returns the comments on a given user's profile in the form of raw HTML.


Example Request
GET https://scratch.mit.edu/site-api/comments/user/mres/
Example Response

Response

(no response available)


Request Headers

These are the request headers which may be filled out.

Host:
User-Agent:
Accept:
Accept-Language:
Accept-Encoding:
Content-Type:
X-CSRFToken:
X-Requested-With:
Referer:
Content-Length:
Cookie:
Connection:

varserver Interface (Removed)

Archive.png This article or section documents something not included in the current version of Scratch (3.0). It is only useful from a historical perspective.


The varserver API could be utilised to request the values of cloud variables in projects. This API could be accessed via the following URL. It is no longer available, and future requests will return 404 errors.[3] [dead link ]

https://scratch.mit.edu/varserver/

GET /<project_id>

Returned information regarding the cloud data of a given project.


Example Request
GET https://scratch.mit.edu/varserver/10080213
Example Response

Response

{ 
 "variables":[ 
 { 
 "name":"☁ Scratch Cat",
 "value":"2"
 },
 { 
 "name":"☁ Tera",
 "value":"6"
 },
 { 
 "name":"☁ Gobo",
 "value":"1"
 }
 ],
 "lists":[ 
 ]
}


api/v1 Interface (Removed)

Archive.png This article or section documents something not included in the current version of Scratch (3.0). It is only useful from a historical perspective.

As of 23 April 2018, the API v1 interface no longer exists, and queries to this path are immediately met with HTTP 403 errors.

The API v1 interface is a legacy interface which was originally built during the development of Scratch 2.0. It was accessed via the following URL.

https://scratch.mit.edu/api/v1/

GET /

The root of the API v1 interface provides basic information regarding the API.


Example Request
GET https://scratch.mit.edu/api/v1/
Example Response

Response

{ 
 "project":{ 
 "list_endpoint":"/api/v1/project/",
 "schema":"/api/v1/project/schema/"
 },
 "projecttag":{ 
 "list_endpoint":"/api/v1/projecttag/",
 "schema":"/api/v1/projecttag/schema/"
 },
 "tag":{ 
 "list_endpoint":"/api/v1/tag/",
 "schema":"/api/v1/tag/schema/"
 },
 "user":{ 
 "list_endpoint":"/api/v1/user/",
 "schema":"/api/v1/user/schema/"
 }
}


Projects

GET /project/<project_id>/

Returns information regarding a project and its author.


Example Request
GET https://scratch.mit.edu/api/v1/project/142/
Example Response

Response

{ 
 "creator":{ 
 "username":"mres",
 "userprofile":{ 
 "bio":"...",
 "country":"United States",
 "status":"..."
 }
 },
 "datetime_shared":"2007-03-07T14:48:22",
 "description":"...",
 "favorite_count":"19",
 "id":142,
 "love_count":"19",
 "resource_uri":"/api/v1/project/142/",
 "thumbnail":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/0/0142.png",
 "title":"PlayWithYourFace",
 "view_count":"669"
}


GET /project/set/<project_ids>/

Returns information regarding a set of projects and their authors. Project IDs are separated with a semicolon.


Example Request
GET https://scratch.mit.edu/api/v1/project/set/142;864/
Example Response

Response

{ 
 "objects":[ 
 { 
 "creator":{ 
 "username":"mres",
 "userprofile":{ 
 "bio":"...",
 "country":"United States",
 "status":"..."
 }
 },
 "datetime_shared":"2007-03-07T14:48:22",
 "description":"...",
 "favorite_count":"19",
 "id":142,
 "love_count":"19",
 "resource_uri":"/api/v1/project/142/",
 "thumbnail":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/0/0142.png",
 "title":"PlayWithYourFace",
 "view_count":"669"
 },
 { 
 "creator":{ 
 "username":"mres",
 "userprofile":{ 
 "bio":"...",
 "country":"United States",
 "status":"..."
 }
 },
 "datetime_shared":"2007-03-28T14:01:50",
 "description":"...",
 "favorite_count":"18",
 "id":864,
 "love_count":"21",
 "resource_uri":"/api/v1/project/864/",
 "thumbnail":"//cdn.scratch.mit.edu/static/site/projects/thumbnails/0/0864.png",
 "title":"OceanMusicBox",
 "view_count":"239"
 }
 ]
}


Users

GET /user/<username>/

Returns information regarding the given user.


Example Request
GET https://scratch.mit.edu/api/v1/user/mres/
Example Response

Response

{ 
 "username":"mres",
 "userprofile":{ 
 "bio":"...",
 "country":"United States",
 "status":"..."
 }
}


GET /user/set/<usernames>/

Returns information regarding the given users. Names should be separated with semicolons. The "userprofile" value for each user object is currently empty making this feature of the API effectively useless. One should note that the single user feature remains functional.


Example Request
GET https://scratch.mit.edu/api/v1/user/set/mres;ScratchCat/
Example Response

Response

{ 
 "objects":[ 
 { 
 "username":"mres",
 "userprofile":""
 },
 { 
 "username":"ScratchCat",
 "userprofile":""
 }
 ]
}


See Also

External Links

SandCastleIcon.png This section has links to websites or programs outside of Scratch and Wikipedia. Remember to stay safe while using the internet as we cannot guarantee the safety of other websites.

References

  1. Paddle2See. (15/11/2021). "Accounts have most definitely been blocked for abusing the API." post:5784428
  2. thisandagain. (26/10/2015). "The "site-api" endpoints are all deprecated as of today." post:1552554
  3. thisandagain. (22/5/2018). "Yup. That legacy system has been removed." users:thisandagain/#comments-45728731
Cookies help us deliver our services. By using our services, you agree to our use of cookies.
The Wiki is working on a dark theme, and you're seeing it! Got feedback? Post on the Wiki Forum Topic.