Gyazo API

Overview

The Gyazo API can be used in a wide array of apps to upload new images, show a Gyazo user's images, and more. It provides a RESTful API for HTTP requests and returns a response in JSON. This should be familiar to anyone who has used major APIs before such as ChatGPT API and Perplexity API.

Preparation

To use the API, you need an access token. Follow these steps to obtain your access token:

  1. Go to the dashboard
  2. Create a new application
  3. Generate an access token for your application(this will be your API key)

HTTP Requests

Upload an image

const formData = new FormData();
formData.append('imagedata', fileInput.files[0]);

fetch('https://upload.gyazo.com/api/upload', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  },
  body: formData
})
.then(response => response.json())
.then(data => {
  console.log(data);
  // {
  //   "image_id": "8980c52421e452ac3355ca3e5cfe7a0c",
  //   "permalink_url": "http://gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c",
  //   "thumb_url": "https://i.gyazo.com/thumb/180/afaiefnaf.png",
  //   "url": "https://i.gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c.png",
  //   "type": "png"
  // }
});
import requests

files = {'imagedata': open('/home/gyazo/greatpicture.png', 'rb')}
headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}

response = requests.post('https://upload.gyazo.com/api/upload',
                       files=files, headers=headers)
print(response.json())
# {
#   "image_id": "8980c52421e452ac3355ca3e5cfe7a0c",
#   "permalink_url": "http://gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c",
#   "thumb_url": "https://i.gyazo.com/thumb/180/afaiefnaf.png",
#   "url": "https://i.gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c.png",
#   "type": "png"
# }
$ curl -i https://upload.gyazo.com/api/upload \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "imagedata=@/home/gyazo/greatpicture.png"

HTTP/1.1 200 OK

{
    "image_id" : "8980c52421e452ac3355ca3e5cfe7a0c",
    "permalink_url": "http://gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c",
    "thumb_url" : "https://i.gyazo.com/thumb/180/afaiefnaf.png",
    "url" : "https://i.gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c.png",
    "type": "png"
}

Search images by query

const params = new URLSearchParams({
  query: 'cat',
  page: '1',
  per: '10'
});

fetch(`https://api.gyazo.com/api/search?${params}`, {
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  }
})
.then(response => response.json())
.then(data => {
  console.log(data);
  // {
  //   "captures": [
  //     {
  //       "image_id": "8980c52421e452ac3355ca3e5cfe7a0c",
  //       "permalink_url": "http://gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c",
  //       "url": "https://i.gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c.png"
  //     }
  //   ],
  //   "number_of_captures": 1,
  //   "query": "cat"
  // }
});
import requests

params = {
  'query': 'cat',
  'page': '1',
  'per': '10'
}
headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}

response = requests.get('https://api.gyazo.com/api/search', params=params, headers=headers)
print(response.json())
# {
#   "captures": [
#     {
#       "image_id": "8980c52421e452ac3355ca3e5cfe7a0c",
#       "permalink_url": "http://gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c",
#       "url": "https://i.gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c.png"
#     }
#   ],
#   "number_of_captures": 1,
#   "query": "cat"
# }
$ curl -i "https://api.gyazo.com/api/search?query=cat&page=1&per=10" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

HTTP/1.1 200 OK

{
    "captures": [
        {
            "image_id": "8980c52421e452ac3355ca3e5cfe7a0c",
            "permalink_url": "http://gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c",
            "url": "https://i.gyazo.com/8980c52421e452ac3355ca3e5cfe7a0c.png"
        }
    ],
    "number_of_captures": 1,
    "query": "cat"
}

API Endpoint

API endpoint is below.

https://api.gyazo.com
https://upload.gyazo.com    (Upload API)

The endpoint has a different Upload API than the others.

Timestamp

Timestamp is in the following format:

YYYY-MM-DDTHH:MM:SSZ

Policy

If your app continuously uploads illegal or inappropriate images, or puts excessive strain on our servers we may be forced to block access.