Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Embedly library for node.js
branch: master

This branch is 25 commits behind embedly:master



Embedly node client library. To find out what Embedly is all about, please visit To see our api documentation, visit


  • nodejs - Available in most package managers
  • npm - If you have no idea how to install it for a dev environment, feel free to check about my blog about it. I'm not trying to self-promote, I just really couldn't find any simple instructions.


To install the official latest stable version, please use npm:

npm install embedly

If you would like cutting edge, then you can clone and install HEAD:

git clone
cd embedly-node
npm install

Getting Started

Here are some examples hint replace xxxxxxxxxxx with real key:

var EMBEDLY_KEY = 'xxxxxxxxxxxxxx'

var embedly = require('embedly')
  , require_either = embedly.utils.require_either
  , util = require_either('util', 'utils')
  , Api = embedly.Api
  , api = new Api({user_agent: 'Mozilla/5.0 (compatible; myapp/1.0;', key: EMBEDLY_KEY})

// call single url
api.oembed({url: ''}).on('complete', function(objs) {
  console.log('1. ')
}).on('error', function(e) {
  console.error('request #1 failed')

// call multiple urls with parameters
  { urls: ['', '']
  , maxWidth: 450
  , wmode: 'transparent'
  , method: 'after'
).on('complete', function(objs) {
  console.log('2. ')
}).on('error', function(e) {
  console.error('request #2 failed')

api = new Api({key: EMBEDLY_KEY, user_agent: 'Mozilla/5.0 (compatible; myapp/1.0;'})
api.preview({url: ''}).
  on('complete', function(objs) {
    console.log('3. ')
  }).on('error', function(e) {
    console.error('request #2 failed')


If log library is used for logging, then logging can be configured via environmental variables. Log levels are described on the visionmedia/log.js website and are defined with the EMBEDLY_LOG_LEVEL variable:

export EMBEDLY_LOG_LEVEL="debug"
npm test

By default, logging will happen on stdout out. To get it to a file, use the EMBEDLY_LOG_FILE variable. Make sure the path to the file exists and permissions are correct:

export EMBEDLY_LOG_LEVEL="debug"
export EMBEDLY_LOG_FILE="embedly.log"
npm test
cat embedly.log

node-syslog is also supported, although I've had bad luck with it. Try version 0.6.0. Check /var/log/messages on most systems.

Here is a simple configuration that I use on my dev box (syslog-ng):

# doki_pen is my username
destination messages { file("/var/log/messages"); };
destination embedly { file("/var/log/embedly-node" owner(doki_pen) group(doki_pen)); };
filter f_embedly { program(embedly); };
filter f_not_embedly { not program(embedly); };
log { source(src); filter(f_embedly); destination(embedly); };
log { source(src); filter(f_not_embedly); destination(messages); };
log { source(src); filter(f_not_embedly); destination(console_all); };

This puts embedly logs in /var/log/embedly-node with good permissions and keeps them out of /var/log/messages. I'm no master of syslog-ng, so buyer beware.


We have provided some commandline tools to test the Embedly interface.

  • embedly_oembed.js
  • embedly_objectify.js
  • embedly_preview.js

Using --help with the commands should give you a good idea of how to use them.


Run link:

npm link

Run tests:

npm test

Some tests will fail due to missing api key. Set the EMBEDLY_KEY environmental variable with your key to get them to pass:

EMBEDLY_KEY=xxxxxxxxxxxxx npm test

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2011, Inc. See MIT-LICENSE for details.

Something went wrong with that request. Please try again.