You need Flash 8!


You can download the latest version (released 19th March 2007) of Flashr below:


The download of Flashr above includes some other open source classes:


You can also get the cutting edge version of Flashr using Subversion. Just point your svn client to the Flashr repository. You can use the Flashr trac site to keep track of changes that have been made to the subversion copy of the sourcecode and to submit any bugs you find.


Flashr is released under a creative commons Attribution-NonCommercial-ShareAlike 2.5 licence. In simple terms, you are welcome to use this library to build any non-commercial app you like as long as you mention that you are using Flashr. The prefered way to do this is using one of the badges available below. If you are interested in using Flashr for a commercial project then please contact me to discuss possible licencing arrangments.


Below are a selection of different badges you can add to the apps you build with Flashr:

The Flashr logo was designed by Michael Fuchs and generously donated.

older versions

Flashr went through a radical rewrite between versions 0.4 and 0.5. It was decided after some discussion on the mailing list to forget about backwards compatibility for the sake of a more sensible and robust API in 0.5. If you wrote an app with version 0.4 then you can either download it here or from the relevant branch of the subversion repository. However, I'm not planning on supporting 0.4 and it is relatively easy to update your scripts to work with 0.5 and you will get heaps of extra advantages if you do this (automatic queueing and caching of requests for starters) so I recommend you do that.


  • Moved everything into flashr.core ready for the 0.5 release. [r19]
  • Removed the photos array where it was unnecessarily being passed along with a ResultsSet. [r20]
  • Added FlashrRequest and made all methods use queueRequest to call flickr.com. [r21]
  • Implemented FlashrRequestQueue? and made it so that requests to flickr.com can be queued and will be executed sequentially. [r22]
  • Changed internals to use a FlashrResponseEvent rather than an anonymous object. [r23]
  • Implemented caching when Flashr.cacheQueries is set to true. [r24]
  • Fixed Flashr.as to reflect the earlier change of a method name in FlashrCache. [r25]
  • Implemented priority for the FlashrRequestQueue. [r26]
  • Added query throttling so that no more than one query per second is sent to the API (rate configurable by changing Flashr.queryMaxFrequency). [r27]
  • Added FlashrRequest.clone method. [r28]
  • Added support for FlashrRequest.completed to indicate when a request has been responded to. [r28]
  • Changed Person.getFavorites to return an Array rather than an Object. [r30]
  • Added FlashrResponseHistory? to store a history of completed Flashr requests when Flashr.saveHistory is set to true. [r31]
  • Changed id's from Numbers to Strings where appropriate (as flickr changed the format to deal with the massive amount of photos etc). [r32]
  • Refactored some common code out from all the Photo URL methods into a new Photo._urlStart method. [r35]
  • Added support for flickr.photos.comments.getList and so for comments in general. [r36]
  • Change so that the params passed to photosSearch are cloned. This prevents problems when triggering lots of searches in a loop and altering the passed params object. [r38]
  • Added Photo.getLargestAvailableSize - a utility method that can be called after photosGetSizes to get the largest sized image available (optionally within a certain max size limit). [r39]
  • Removed the undocumented (and thanks to caching unnecessary) Photo.getInfoCalled. [r39]
  • Cleaned up the way photosGetLargestSize works and made it return a PhotoSize? object. [r40]
  • Added Flashr.cancelCurrentRequest. [r41]
  • Added Flashr.SUBVERSION_ID [r42][r43]
  • Added Tag.getRelatedTags and Tag.getRelatedTagStrings [r44]
  • Fixed a log statement that wasn't updated in the move to the com.kelvinluck.flashr package [r45]
  • Fix so that Photo.getLargestAvailableSize will compile under MTASC. [r46]
  • Added Flashr.executeAtPriority. [r47]
  • Added Person.buddyIcon to easily get the URL to someone's buddy icon. [r48]
  • Fixed an obscure bug caused by the fact that Flash is sometimes multithreaded (apparently!). [r49]
  • Added a Person.isFavorite function which can be used to easily check if a given Photo is a favorite of a given Person. [r50]
  • Added a return type to Person.isFavorite. [r51]
  • Changed FlashrResponse.onError to receive a FlashrRequest object rather than a method string. [r52]
  • Added FlashrCache.setCachable to give you fine grained control over which flickr methods are cached. [r53]
  • Changes to API endpoint in response to the change at flickr.com. [r54]
  • Update to photosSearch documentation to reflect the change to enable searches for multiple licenses at flickr.com. [r54]
  • Added support for flickr.photos.recentlyUpdated. [r55]
  • Fix to handle it gracefully when flickr returns XML with empty photo nodes. [r57]
  • Bugfix - queue was locked when logging in, added code to allow queue to continue executing. [r58]
  • Added support for new flickr.photos.comments.* methods. [r59]
  • Major re factoring to avoid Flash's "32K bytecode per class" limit - moved the XML parsing functionality into the new FlashrApiResponse class. [r60]
  • Added in support for new privacy_filter argument. [r61]
  • Added a way to get the 100px on the longest side image from flickr.com. [r62]
  • Added support for flickr.photos.getWithGeoData and flickr.photos.getWithoutGeoData. [r63]
  • Added support for last_update parameter to be passed to "extras". [r65]
  • Added support for the "geo" argument which is passed via the "extras" parameter. [r66]
  • Fix so that all extras returned in a call to flickr.photosets.getPhotos are correctly captured. [r67]
  • Added support for the location information returned in a call to flickr.photos.getInfo [r68]
  • Added support for flickr.photos.geo.getLocation, flickr.photos.geo.removeLocation and flickr.photos.geo.setLocation. [r69]
  • Added support for flickr.photos.geo.getPerms and flickr.photos.geo.setPerms [r70]
  • Updated the default cached methods to reflect all newly added methods. [r71]
  • Massive changes to make the documentation accurate and consistent. [r72]
  • Added support for flickr.photos.delete. [r73]
  • Added support for flickr.photos.licenses.* methods. [r74]
  • Added support for the totally pointless flickr.test.null. [r75]
  • Added the LuminicBox log classes to the distribution. [r76]
  • Added support for flickr.photos.notes.* methods. [r77]
  • Added support for flickr.photosets.comments.* methods. [r78]
  • Refactoring to make it clear which methods are internal ones used by Flashr itself and which methods should be used by people building apps with Flashr. [r79]
  • Added support for passing "tags" to the "extras" parameter. [r80]
  • Added support for the owner information now returned on a call to flickr.photosets.getPhotos. [r81]
  • Added commands to make it easier to set the priority of a given FlashrRequest? from the queue. [r82]
  • Fixed bugs introduced when refactoring to make the distinction between internal and external methods clearer. [r83]
  • Added support for farm attribute which identifies which server farm an image is located on. [r84]