Find an API

Search public APIs with auth details & Postman guides

← All APIs

Amazon Elastic Block Store

amazonaws · Cloud

Cloud No Auth Free & Open cloud

You can use the Amazon Elastic Block Store (Amazon EBS) direct APIs to create Amazon EBS snapshots, write data directly to your snapshots, read data on your snapshots, and identify the differences or changes between two snapshots. If you’re an independent software vendor (ISV) who offers backup services for Amazon EBS, the EBS direct APIs make it more efficient and cost-effective to track incremental changes on your Amazon EBS volumes through snapshots. This can be done without having to crea

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET ListChangedBlocks

Returns information about the blocks that are different between two Amazon Elastic Block Store snapshots of the same volume/snapshot lineage.

https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks?NextToken=example&pageToken=example&MaxResults=example&maxResults=1&firstSnapshotId=example&startingBlockIndex=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks?NextToken=example&pageToken=example&MaxResults=example&maxResults=1&firstSnapshotId=example&startingBlockIndex=1"
import requests
params = {
    "NextToken": "example",
    "pageToken": "example",
    "MaxResults": "example",
    "maxResults": "1",
    "firstSnapshotId": "example",
    "startingBlockIndex": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks');
url.searchParams.set('NextToken', 'example');
url.searchParams.set('pageToken', 'example');
url.searchParams.set('MaxResults', 'example');
url.searchParams.set('maxResults', '1');
url.searchParams.set('firstSnapshotId', 'example');
url.searchParams.set('startingBlockIndex', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks")
	q := baseURL.Query()
	q.Set("NextToken", "example")
	q.Set("pageToken", "example")
	q.Set("MaxResults", "example")
	q.Set("maxResults", "1")
	q.Set("firstSnapshotId", "example")
	q.Set("startingBlockIndex", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks")
uri.query = URI.encode_www_form({
  "NextToken" => "example",
  "pageToken" => "example",
  "MaxResults" => "example",
  "maxResults" => "1",
  "firstSnapshotId" => "example",
  "startingBlockIndex" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{secondSnapshotId}/changedblocks?" . http_build_query([
    "NextToken" => "example",
    "pageToken" => "example",
    "MaxResults" => "example",
    "maxResults" => "1",
    "firstSnapshotId" => "example",
    "startingBlockIndex" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET ListSnapshotBlocks

Returns information about the blocks in an Amazon Elastic Block Store snapshot.

https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks?NextToken=example&pageToken=example&MaxResults=example&maxResults=1&startingBlockIndex=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks?NextToken=example&pageToken=example&MaxResults=example&maxResults=1&startingBlockIndex=1"
import requests
params = {
    "NextToken": "example",
    "pageToken": "example",
    "MaxResults": "example",
    "maxResults": "1",
    "startingBlockIndex": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks');
url.searchParams.set('NextToken', 'example');
url.searchParams.set('pageToken', 'example');
url.searchParams.set('MaxResults', 'example');
url.searchParams.set('maxResults', '1');
url.searchParams.set('startingBlockIndex', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks")
	q := baseURL.Query()
	q.Set("NextToken", "example")
	q.Set("pageToken", "example")
	q.Set("MaxResults", "example")
	q.Set("maxResults", "1")
	q.Set("startingBlockIndex", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks")
uri.query = URI.encode_www_form({
  "NextToken" => "example",
  "pageToken" => "example",
  "MaxResults" => "example",
  "maxResults" => "1",
  "startingBlockIndex" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks?" . http_build_query([
    "NextToken" => "example",
    "pageToken" => "example",
    "MaxResults" => "example",
    "maxResults" => "1",
    "startingBlockIndex" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET GetSnapshotBlock

Returns the data in a block in an Amazon Elastic Block Store snapshot.

https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken?blockToken=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken?blockToken=example"
import requests
params = {
    "blockToken": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken');
url.searchParams.set('blockToken', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken")
	q := baseURL.Query()
	q.Set("blockToken", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken")
uri.query = URI.encode_www_form({
  "blockToken" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/ebs/2019-11-02/snapshots/{snapshotId}/blocks/{blockIndex}#blockToken?" . http_build_query([
    "blockToken" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Amazon Elastic Block Store?

Amazon Elastic Block Store is a Cloud API. Developers commonly use cloud APIs for:

  • provisioning and managing cloud infrastructure
  • automating deployments and container orchestration
  • monitoring uptime and performance metrics
  • managing storage buckets and databases
  • setting up auto-scaling and load balancing

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Amazon Elastic Block Store is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗