Daisy API Docs

Complete documentation for the wonderful and powerful Daisy API. Connect your PSDs to the internet and do wonderful things... Daisy can save out JPEG and PNG files (even with transparency). If you'd like to save PDFs, let us know and we'll enable that for you. If we're missing something obvious, please let us know- we're happy to add new features.

Basics

Daisy accepts POST or GET requests. Binary data submitted via POST will be discarded, and keep in mind all requests should be URL encoded. The base URL for all Daisy API calls:

http://api.daisyapi.com/v1/

appid

Every Daisy API call must include at least 2 things. Your appid and a method. You will get your appid when you upload your PSD (it will also be emailed to you). We will also email you a copy for safekeeping. Treat your appid like a password. The appid is a reference to your Photoshop® file. It is a unique string that makes calls to your Photoshop® file unique.

http://api.daisyapi.com/v1/?appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e



Methods

In addition to your appid, every API call must also include a method. There is currently one: singleimage.

singleimage

motoimage makes a new image from your template PSD file. Daisy will create a file name for you if you don't specify one, and it will automatically be saved to our Amazon S3 storage. A URL of the image will be returned.

http://api.daisyapi.com/v1/?method=singleimage&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e




Daisy Outputs and Return values

By default Daisy will return a clickable link to preview your image. You can explicitly set this by setting the preview method to true. This is helpful if you're new to APIs and want to quickly try different API calls and see the results.

preview (Boolean true or false. Defaults to true)

Once you take your Daisy appid into production, you'll most likely want Daisy to return only the URL of the new image. If you'd like to get just the new image URL as a plain text string, set the preview method to false.

http://api.daisyapi.com/v1/?method=singleimage&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
&preview=true




Manipulating Text

One of the cool ways of putting Daisy to work is to replace text within your file. In order to replace text, you have to flag it as dynamic within your Photoshop® file by surrounding your text with *| |*. That text becomes a method in your api call. Check the Videos page under Support for a more thorough explanation. By the way, Daisy will look within smart objects for Text layers to change, so feel free to nest your smart layers. Even if the text is within 15 nested smart layers, Daisy will still be able to find it.

Dynamic Text (text in PSD surrounded by *| |*)

In this PSD, I have marked a text layer as dynamic by surrounding JERSEYNAME with *| |*.

jersey_before

I can now change that text like this:

http://api.daisyapi.com/v1/?method=singleimage
			&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&JERSEYNAME=CONRAD%20BAIN

Daisy will output a new image that looks like this:

jersey_after

The dynamic text fields are case-sensitive, and don't put the *| |* in the field name, just the text itself. The text can anywhere within a larger block of text, even on separate layers:

multiext_before

I can now change that text like this:

http://api.daisyapi.com/v1/?method=singleimage
			&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&name=Conrad&gender=him

Daisy will output a new image that looks like this:

multitext_after

As long as the type is live, i.e. not rasterized, Daisy can change the text and save a new image.

Dynamic Text Best Practices

When designing your Photoshop® file, it is best to draw a rectangle with the Text tool, specifying the exact bounds of the Text Box, rather than letting text extend off the end of an image. If you click the Canvas with the Type tool and start typing, Photoshop® will not know when to wrap your text. Text Boxes can have as many dynamic text elements as you wish- there is no limit there.


Text within Smart Layers?

Daisy will look within smart objects for Text layers to change, so feel free to nest your smart layers. Even if the text is within 15 nested smart layers, Daisy will still be able to find it.

About Fonts

Daisy has licenses for most common typefaces (over 1,200). Here is a list of fonts currently licensed and in our system. If your application uses a font that we do not support, please get in touch and I’ll try and work something out.





Replacing a layer with another image

Daisy makes it easy to change out a layer with another image (JPEG or PNG). In order to replace a layer with another image, you must convert that layer to a Smart Layer before saving the .PSD to Daisy. Within Photoshop®, you can add filters and transformations to the Smart Layer and Daisy will be able to replicate those edits onto the new, incoming image.

How it works

You specify the layername and a replace method, then a URL of the image you wish to insert. That image must be on the web and accessible by anyone.

Sample replace method

In this API call, Daisy will replace the contents of Layer1 (assuming it is a Smart Layer) with the image specified. Because the replace method is replace.scalewidth, Daisy will match the width of the incoming image with the contents of the Smart Layer. It will ignore whatever happens to the height. Here's the original PSD:

replace_before

The logo is on a Smart Layer called layer1, so here is the API call to replace that image with a new one.

http://api.daisyapi.com/v1/?method=singleimage
			&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&layer1.replace.scalewidth=http://www.mydomain.com/daisylogo.png.

Here is the image Daisy creates:

replace_after

replace.noscale (URL of publicly accessible JPEG or PNG, 2MB file size limit)

Name the layer, add the dot method and specify the URL of the file. Make sure it is accessible to anyone (paste the link in your browser and make sure you can see it). replace.noscale will not attempt to match the Smart Object layer size, but will use the incoming source image as is. See replace notes above for a more thorough explanation.

http://api.daisyapi.com/v1/?method=singleimage&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&layername.replace.noscale=http://www.mydomain.com/sampleimage.jpg


replace.scaleheight (URL of publicly accessible JPEG or PNG, 2MB file size limit)

Name the layer, add the dot method and specify the URL of the file. Make sure it is accessible to anyone (paste the link in your browser and make sure you can see it). replace.scaleheight will scale the height of the incoming image to match the specified smart object layer. The width will be scaled proportionally so that no stretching occurs. See replace notes above for a more thorough explanation.

http://api.daisyapi.com/v1/?method=singleimage&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&layername.replace.scaleheight=http://www.mydomain.com/sampleimage.jpg


replace.scalewidth (URL of publicly accessible JPEG or PNG, 2MB file size limit)

Name the layer, add the dot method and specify the URL of the file. Make sure it is accessible to anyone (paste the link in your browser and make sure you can see it). replace.scalewidth will scale the width of the incoming image to match the specified smart object layer. The height will be scaled proportionally so that no stretching occurs. See replace notes above for a more thorough explanation.

http://api.daisyapi.com/v1/?method=singleimage&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&layername.replace.scalewidth=http://www.mydomain.com/sampleimage.jpg


replace.scaleboth (URL of publicly accessible JPEG or PNG, 2MB file size limit)

Name the layer, add the dot method and specify the URL of the file. Make sure it is accessible to anyone (paste the link in your browser and make sure you can see it). replace.scaleboth will scale the both the width and height of the incoming image to match the specified smart object layer. If the height to width ratio of the two images are different, stretching will occur. In other words, make sure the images are similar aspect ratios before using scaleboth. See replace notes above for a more thorough explanation.

http://api.daisyapi.com/v1/?method=singleimage&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
			&layername.replace.scaleboth=http://www.mydomain.com/sampleimage.jpg


Replace Best Practices and Tips

There are four replace methods, all of which you must specify a publicly accessible JPEG or PNG file: replace.noscale, replace.scaleheight, replace.scalewidth, and replace.scaleboth. Anything in your SmartObject will be replaced by the JPEG or PNG you specify, so make sure you don't have text or any other artwork within the SmartObject you will be replacing. Keep in mind, you can nest SmartObjects inside of other SmartObjects. That should help keep things organized.



Replace a layer with Google Charts

You can use images created by the Google Image Charts API directly in your Daisy Apps. Rather than supplying the URL of an image in a replace API call, simply supply the API call to Google Charts of the image you wish to create. Daisy will create the image, download the image, and use it as the source file for the Smart Ojbect Layer in your PSD. Like all other Daisy parameters, it must be URL encoded.

replace.googlechartsapi (URL-encoded Google charts API call)

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
	&layername.replace.scaleboth=https%3A%2F%2Fchart.googleapis.com%2Fchart%3Fcht%3Dp3%26chd%3Dt%3A60%2C40%26chs%3D250x100%26chl%3DHello%7CWorld%0A

Daisy will look for chart.apis.google.com or chart.googleapis.com within your replace parameter. If your Google URL doesn't contain a URL-encoded version of one of these, it won't work.


Colorizing layers

Daisy makes it easy to colorize layers and you have two choices: A Solid Color Fill layer (what I recommend), or a Color Overlay layer effect.

Colorizing with Solid Color Fill Layers

Often times, a Solid Color Fill Layer makes colorizing things more easy than the color overlay. Daisy makes it easy to change the color of a Solid Color Fill Layer. All you do is name the layer and add the .solidcolorfill operator. You can not add a Solid Color Fill Layer to a layer with Daisy. You need to create this layer in advance, before saving the PSD into Daisy. You can change the opacity of the color effect by adjusting the layer opacity as if it were a normal art layer.

solidcolorfill (URL encoded hex color)

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
	&layername.solidcolorfill=%23FF00FF

Colorizing using Color Overlay layer effects

When you specify .coloroverlay for a layer, it has the effect of adding a Color Overlay Layer Effect. This is different from the Solid Color Fill, where you have to create the layer in advance. All you need to do is specify the color (in hex). Many people have trouble using a color overlay to colorize things in Photoshop® because they neglect to turn the Fill Opacity of the layer to 0%. Without that step, you are combining essentially two layers together, though in the Layers Palette they appear as one. When the Fill Opacity of the layer is set to 0%, the Blending Mode of that layer becomes meaningless. Consequently, the blend mode of the Color Overlay property becomes more important. Given that, sometimes the Solid Color Fill Layer is an easier choice.

coloroverlay.color (URL encoded hex color, must also include coloroverlay.opacity)


http://api.daisyapi.com/v1/?method=singleimage
  &appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e

&layername.coloroverlay.color=%23FF00FF &layername.coloroverlay.opacity=100
In the above example, %23 is the HTML encode for the # symbol, so don't let that throw you.

coloroverlay.opacity (number between 0 and 100, always included with coloroverlay.color)


http://api.daisyapi.com/v1/?method=singleimage
  &appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
  &layername.coloroverlay.color=%23FF00FF
  &layername.coloroverlay.opacity=35
      

 

Manipulating the image

You can change the output size of your image by setting it's width and/or height properties. If you only set one, Daisy will adjust the other proportionally. You can set the quality of the output, if it's a .jpg. You can also name the outputfile if you like. Otherwise Daisy will name it for you.

height (number between 1 and 2000)

Height allows you to resize the height of the image in pixels. If you set only this, Daisy will adjust the width proportionally.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
	&height=400 

width (number between 1 and 2000)

Width allows you to resize the width of the image in pixels. If you set only width, Daisy will adjust the height proportionally.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
	&width=400&height=200

quality (number between 1 and 12)

Daisy automatically saves your output as .jpg with a quality setting of 7. If you want to save at a higher or lower quality setting, use the quality method to set this value.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
	&quality=12&width=400&height=200

outputfilename (string ending with either ".jpg" or ".png", 240 chars max)

Daisy automatically names your output with a GUID, or a unique name. If you'd like to name the output yourself, you can specify it with this method. Also, if you'd like to save your output as a .png, set your outputfilename to include a .png extension, and Daisy will save it as a .png. Daisy will save over any image with the same name.

http://api.daisyapi.com/v1/?method=singleimage
      &appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
      &width=400&height=200&outputfilename=myuniqueimagename.png

Manipulating layers

With Daisy, you can manipulate layers to help customize your new image. Reference a layer by it's name, so be sure layer names are unique. Then add a dot and operator after the layername.

opacity (number between 1 and 100)

Specify the layername with .opacity and you can set the opacity of that layer.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4  -e79fd112cf2e
&layername.opacity=57

visible (boolean true or false)

Specify the layername with .visible and you can set the visibility of that layer.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
&layername.visible=false

resize (number between 0 and 1000)

Specify the layername with .resize and you can change the scale of that layer. 100 would not change the layer size, 200 would double the size and 50 halve the size.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
&layername.resize=300

rotate (number between -6400 and 6400)

Specify the layername with .rorate and you can change the rotation of that layer, in degrees.

http://api.daisyapi.com/v1/?method=singleimage
	&appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
&layername.rotate=180

Saving to your own S3 Account

Images are saved to Daisy's Amazon S3 storage. You can save them to your own Amazon S3 account by specifying your Amazon Web Services ID, secret key and bucket name. If you don't specify your own S3 account, I will save the images to our own account.

Keep in mind, you can set your S3 credentials here and avoid sending them through the API.

s3awsid (The Amazon Web Services ID for your account)

s3awssecretkey (The Amazon Web Services Secret Key for your account)

s3bucketname (The name of your S3 bucket you want these files written to)

&s3awsid=111111
&s3awssecretkey=11111
&s3bucketname=daisypics

URL encode your AWS credentials

Some AWS credentials, especially the Secret Access Key contain the '+' character. This character must be encoded with the %2B character instead. Web browsers and other web-based technologies interpret the '+' character as a space and it will cause your API request to fail.

Saving to a particular folder

If you'd like to save them to a particular folder within your S3 bucket, add the folder name to the outputfilename argument and Daisy will create a new folder if there's not already one there, or save the image into that folder:

http://api.daisyapi.com/v1/?method=singleimage
 &appid=3c65f904-0c4d-49b6-b3d4-e79fd112cf2e
&outputfilename=MyDaisyImages/newimage001.jpg
 &3awsid=111111 &s3awssecretkey=11111 &s3bucketname=daisypics

Periods or dots in bucket names are bad.

Your bucket names can not contain '.' or periods in them. Amazon has a security limitation when writing to buckets from different regions than they were created that will prevent Daisy from accessing those buckets.

Working with Email Marketing Vendors

Daisy has integrations with a couple of email marketing vendors, namely MailChimp and Campaign Monitor. These tools allow you to connect your appid with an email marketing database and create personalized images for each person on your email lists. Once Daisy has created the images, it writes the new URL of each image back into the database, so that when you create your email campaign, each person will get the image Daisy created just for them.

Though each email marketing platform is slightly different, the process in Daisy works the same for both vendors:

Dynamic Text Fields and Email Databases

In Photoshop®, you mark fields as being dynamic by wrapping text with *| |*. When working with email marketing vendors, Daisy will look for certain dynamic text fields and match them with the data found on your email database:

*|email|*, *|firstname|*, *|lastname|*, and *|fullname|*

These are the 4 dynamic text fields Daisy will attempt to match against your email database. These are case-sensitive fields, and in your Photoshop® file must be wrapped by *| |* for Daisy to recognize them as dynamic text. For each person on your mailing list, Daisy will create a new image, just for them. It will look for a match between your .PSD and your database. If you have a text layer containing *|firstname|*, Daisy will replace that text with the first name of each person on your mailing list.

Smart Ojbect Layers and Email Databases

YoYou can replace Smart Object Layer sources in your PSD from URLs in your email marketing database. All you have to do is name the Smart Object Layer the same thing as database column/field/mergetag.

For instance, I might have a custom field called customerpicture, , which contains URLs of each customer.

mc_customfield

cm_customfield

If I name a Smart Object layer customerpicture, Daisy will attempt to replace that layer with the URL specified in the database.Converting a Layer to Smart Object

Renaming the Smart Object Layer

Renaming the Smart Object layer

Now that we have a Custom Field in our email database called customerpicture, and a Smart Object Layer in our .PSD called customerpicture, Daisy will replace the contents of the Smart Object with the URL listed in the customerpicture field (assuming it contains valid, publicy accesible URLs of jpegs or pngs.


Optimizing your PSD for Speed

You can affect the speed at which Daisy is able to work with your PSD by doing a couple of things:

1. Delete any layers that aren't needed.
2. Flatten or merge anything you can.
3. Rasterize any text that doesn't need to be dynamic.

Doing these things can reduce your file size from 10MB to 800k, which will give you much greater performance with your PSD.


Proposed features

This is a list of features proposed by the Daisy community. If you can think of one, add it at the form towards the bottom of this page.

(flipimage) horizontal or vertical

This will allow you to flip an entire image either vertically or horizontally. Not application to layers.

http://www.daisyapi.com/api/v1/?method=singleimage&appid=21341234

(rotateimage) 90, 180 or 270

This allows you to spin your image in increments of 90 degrees

http://www.daisyapi.com/api/v1/?method=singleimage&appid=21341234

(scaledown) number between 1 and 400

This allows you to scale and go crazy

http://www.daisyapi.com/api/v1/

(iceberg) number between 5 and 10

This is a short description of how the feature should work.

http://www.daisyapi.com/api/v1/?method=singleimage&appid=35234509324589


Add a feature to the Docs:

Click here to write the documentation for a feature you'd like to see. You'll need the method name, the parameters needed, a description of how it works, and an example of how the relevant parts of the API call might appear

What's the method called? (one or two words, no spaces)

What arguments does it take? Are they optional?

Give a description as to how the feature should work. Be thorough.

Write a sample API Request using your feature.

For validation, paste one of your appids here.