Skip to content

POST/sites/$site/media/new

Upload a new piece of media.

Resource Information

   
Method POST
URL https://public-api.wordpress.com/rest/v1.1/sites/$site/media/new
Requires authentication? Yes

Method Parameters

Parameter Type Description
$site (int|string) Site ID or domain

Query Parameters

Parameter Type Description
context (string)
display:
(default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..
edit:
Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..
http_envelope (bool)
false:
(default)
true:
Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.
pretty (bool)
false:
(default)
true:
Output pretty JSON
meta (string) Optional. Loads data from the endpoints found in the 'meta' part of the response. Comma-separated list. Example: meta=site,likes
fields (string) Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title
callback (string) An optional JSONP callback function.

Request Parameters

Parameter Type Description
media (media) An array of media to attach to the post. To upload media, the entire request should be multipart/form-data encoded. Accepts jpg, jpeg, png, gif, pdf, doc, ppt, odt, pptx, docx, pps, ppsx, xls, xlsx, key. Audio and Video may also be available. See allowed_file_types in the options response of the site endpoint.

Example:
curl \
--form 'media[]=@/path/to/file.jpg' \
-H 'Authorization: BEARER your-token' \
'https://public-api.wordpress.com/rest/v1/sites/123/media/new'
media_urls (array) An array of URLs to upload to the post. Errors produced by media uploads, if any, will be in `media_errors` in the response.
attrs (array) An array of attributes (`title`, `description`, `caption` `alt` for images, `artist` for audio, `album` for audio, and `parent_id`) are supported to assign to the media uploaded via the `media` or `media_urls` properties. You must use a numeric index for the keys of `attrs` which follows the same sequence as `media` and `media_urls`.

Example:
curl \
--form 'media[]=@/path/to/file1.jpg' \
--form 'media_urls[]=http://example.com/file2.jpg' \
\
--form 'attrs[0][caption]=This will be the caption for file1.jpg' \
--form 'attrs[1][title]=This will be the title for file2.jpg' \
-H 'Authorization: BEARER your-token' \
'https://public-api.wordpress.com/rest/v1/sites/123/media/new'

Response Parameters

Parameter Type Description
media (array) Array of uploaded media objects
errors (array) Array of error messages of uploading media failures

Resource Errors

This endpoint does not return any errors.

Example

curl \
 -H 'authorization: Bearer YOUR_API_TOKEN' \
 --data-urlencode 'media_urls=https://s.w.org/about/images/logos/codeispoetry-rgb.png' \
 'https://public-api.wordpress.com/rest/v1.1/sites/82974409/media/new'
<?php
$options  = array (
  'http' => 
  array (
    'ignore_errors' => true,
    'method' => 'POST',
    'header' => 
    array (
      0 => 'authorization: Bearer YOUR_API_TOKEN',
      1 => 'Content-Type: application/x-www-form-urlencoded',
    ),
    'content' => 
     http_build_query(  array (
        'media_urls' => 'https://s.w.org/about/images/logos/codeispoetry-rgb.png',
      )),
  ),
);

$context  = stream_context_create( $options );
$response = file_get_contents(
	'https://public-api.wordpress.com/rest/v1.1/sites/82974409/media/new',
	false,
	$context
);
$response = json_decode( $response );
?>