Photopea API

Passing data to Photopea

Photopea can be configured using a single GET parameter p having a string value.

https://www.photopea.com?p=STRING_VALUE

String value is encoded into the URL using classic encoding of query parameters (space as %20 etc.). It corresponds to encodeURI() in Javascript or urlencode() in PHP. This string contains a JSON object.

JSON configuration object

JSON object must have the following structure:

{
	"files" : [
		"https://www.mysite.com/images/design.psd",
		"https://www.mysite.com/images/button.png",
		"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAA\
		AAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
	],
	"resources" : [
		"https://www.xyz.com/brushes/Nature.ABR",
		"https://www.xyz.com/grads/Gradients.GRD",
		"https://www.xyz.com/fonts/NewFont.otf"
	],
	"server" : {
		"url" : "https://www.myserver.com/saveImage.php",
		"formats" : [ "psd", "png", "jpg:0.5" ]
	},
	"environment" : {
		"fcolor" : "0xff0000",   "bcolor" : "0x000000",     "rulers"  : true, 
		"theme"  : 2,            "lang"   : "es",   
		
		"localsave" : false,     "showbranding": false,     "compact" : true,
		"hidemenus" : [4,5,6],   "hidetools"   : [5,6,7]
	}
}

Data URIs can be used - file can be passed inside request (test).

Parameters

Saving to server

When server parameter is specified in a request to Photopea.com, your project will get the File - Save (To Server) option. After a user clicks it, project data are sent to your server in HTTP request using POST method. It will contain a single string parameter p. The string contains a JSON object with the following structure:

{
	"source" : "https://www.mysite.com/images/button.png",
	"versions" : [
		{"format":"psd", "data": "..."},
		{"format":"jpg", "data": "..."},
		...
	]
}

Parameters

Here is a short PHP example, which accepts files from Photopea.

$p = json_decode( $_POST["p"] );	// parse JSON
// getting file name from "source";
$fname = substr ($p->source, strrpos($p->source,"/")+1);	
file_put_contents("images/".$fname, base64_decode( $p->versions[0]->data ));

Live demo

Cross-Origin Resource Sharing

For security reasons, webapps can access only files from the same domain. In order to let Photopea load your file, the response of your server must contain

Access-Control-Allow-Origin: *

in its HTTP header. Find out more at CORS specification or at enable-cors.org.

Prices

Usage of Photopea API is completely free. Keep in mind, that PP is in early stages of development and there may be critical bugs. We do not take any responsibility for projects edited or generated by Photopea.

Please, let us know in advance (support@photopea.com), when you expect to have a large regular traffic (thousands of visitors per day).

Discussion