This is a simple file based registry of know oEmbed endpoints.
If you know endpoints that aren't listed here please fork this project, add the endpoints
to endpoints.json
and send me a pull request.
This file lists all oEmbed endpoints I could find. It does not contain oEmbed proxies like embed.ly or endpoints that need some kind of API key like wordpress.com. The completness of this list, the supported URL patterns for each endpoint or whether the endpoints actually work is not guaranteed.
This file contains the same data as endpoints.json
, but the URL patterns are converted
to JavaScript compatible regular expressions. It is auto-generated with make.js
.
This file contains mostly the same data as endpoints.json
, but the URL patterns are
converted to the URL pattern syntax specified on oembed.com. Because
there is no way to reference certain proportions of the matched URL in this syntax it
does not contain the endpoints that require this (endpoints that don't actually take the
url
parameter). It is auto-generated with make.js
.
The endpoints listed in this file return broken responses.
http://www.schooltube.com/oembed.json returns JSON that does
not parse and on.aol.com sets every field to null
or 0
.
http://video.pbs.org/oembed/ is announced in the page
source but doesn't actually work. It returns a HTML 404 page.
The wordpress oEmbed endpoint needs the extra parmeter for
through which the consumer
must identify itself.
{
"ENDPOINT-URL": [
"URL-PATTERN-1",
"URL-PATTERN-2",
...
],
...
}
The endpoint URL may contain several patterns.
There are named patterns that reference standard oEmbed parameters: {format}
, {url}
,
{maxwidth}
, {maxheight}
, {callback}
. {callback}
is not strictly standard but it's
commonly used if the endpoint supports JSONP. Currently only {format}
is used in
endpoints.json
.
And then there are patterns that reference match groups in the URL patterns, e.g. {1}
for the first matched group, {2}
for the second etc.
There are several named patterns:
{protocol}
is any valid protocol, without:
{domain}
is any valid domain name, without.
{path}
is any URI path string (no query string or anchor){path-component}
is any URI path string that does not contain/
{query}
is any query string, starting with?
{anchor}
is any anchor, starting with#
{any}
is any non-zero length string
The meaning of the *
placeholder depends on where it occurs. In the protocol part
of an URL it expands to {protocol}
, in the hostname part it expands to {domain}
in the rest it expands to {path-component}
unless if it is at the very end. Then
it expands to {any}
.
You can define a match group by enclosing a part of the URL pattern by parenthesis (...)
.
This can be used to reference the matched string in the endpoint URL.
You can define an optional part by enclosing it with square brackets [...]
.
If you wonder why I didn't just use regular expressions: It's because the regular expression
syntax is different in every programming language. However, this pattern language should
be easy to convert to regular expressions. In fact I do this for JavaScript compatible
regular expressions. See make.js
, oembedregistry.js
and endpoints-regexp.json
.
Sources used to compile this list where amongst others (I'm still working through these sources):
- oohEmbed: endpoints.json
- embedr: providers.rb
- iframely: providers.json
- Foswiki OEmbed Extension:
lib/Foswiki/Plugins/OembedPlugin/Config.spec
- CKEditor-oEmbed-Plugin: jquery.oembed.js and starfishmod's fork thereof
- embed.ly: services
The files endpoints.json
, broken-endpoints.json
, wordpress-endpoints.json
,
endpoints-regexp.json
and endpoints-simple.json
are in the public domain.