Find an API

Search public APIs with auth details & Postman guides

← All APIs

Amazon CloudWatch Logs

amazonaws · Cloud

Cloud No Auth Free & Open cloud Sandbox

You can use Amazon CloudWatch Logs to monitor, store, and access your log files from EC2 instances, CloudTrail, and other sources. You can then retrieve the associated log data from CloudWatch Logs using the CloudWatch console. Alternatively, you can use CloudWatch Logs commands in the Amazon Web Services CLI, CloudWatch Logs API, or CloudWatch Logs SDK. You can use CloudWatch Logs to: Monitor logs from EC2 instances in real time : You can use CloudWatch Logs to

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

POST DescribeDestinations

Lists all your destinations. The results are ASCII-sorted by destination name.

https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations?limit=10&nextToken=example

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
X-Amz-Target Logs_20140328.DescribeDestinations
curl -X POST "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations?limit=10&nextToken=example" \
  -H "X-Amz-Target: Logs_20140328.DescribeDestinations"
import requests
params = {
    "limit": "10",
    "nextToken": "example"
}
headers = {
    "X-Amz-Target": "Logs_20140328.DescribeDestinations"
}
response = requests.post(
    "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations",
    params=params,
    headers=headers,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations');
url.searchParams.set('limit', '10');
url.searchParams.set('nextToken', 'example');

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'X-Amz-Target': 'Logs_20140328.DescribeDestinations'
  },
}); 
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/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations")
	q := baseURL.Query()
	q.Set("limit", "10")
	q.Set("nextToken", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("POST", targetURL, nil)
	req.Header.Set("X-Amz-Target", "Logs_20140328.DescribeDestinations")

	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/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations")
uri.query = URI.encode_www_form({
  "limit" => "10",
  "nextToken" => "example"
})

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

req = Net::HTTP::Post.new(uri)
req["X-Amz-Target"] = "Logs_20140328.DescribeDestinations"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeDestinations?" . http_build_query([
    "limit" => "10",
    "nextToken" => "example"
]);
$opts = ["http" => [
    "method" => "POST",
    "header" => implode("\r\n", [
        "X-Amz-Target: Logs_20140328.DescribeDestinations"
    ]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST DescribeLogGroups

Lists the specified log groups. You can list all your log groups or filter the results by prefix. The results are ASCII-sorted by log group name. CloudWatch Logs doesn’t support IAM policies that control access to the DescribeLogGroups action by using the aws:ResourceTag

https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups?limit=10&nextToken=example

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
X-Amz-Target Logs_20140328.DescribeLogGroups
curl -X POST "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups?limit=10&nextToken=example" \
  -H "X-Amz-Target: Logs_20140328.DescribeLogGroups"
import requests
params = {
    "limit": "10",
    "nextToken": "example"
}
headers = {
    "X-Amz-Target": "Logs_20140328.DescribeLogGroups"
}
response = requests.post(
    "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups",
    params=params,
    headers=headers,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups');
url.searchParams.set('limit', '10');
url.searchParams.set('nextToken', 'example');

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'X-Amz-Target': 'Logs_20140328.DescribeLogGroups'
  },
}); 
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/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups")
	q := baseURL.Query()
	q.Set("limit", "10")
	q.Set("nextToken", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("POST", targetURL, nil)
	req.Header.Set("X-Amz-Target", "Logs_20140328.DescribeLogGroups")

	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/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups")
uri.query = URI.encode_www_form({
  "limit" => "10",
  "nextToken" => "example"
})

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

req = Net::HTTP::Post.new(uri)
req["X-Amz-Target"] = "Logs_20140328.DescribeLogGroups"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogGroups?" . http_build_query([
    "limit" => "10",
    "nextToken" => "example"
]);
$opts = ["http" => [
    "method" => "POST",
    "header" => implode("\r\n", [
        "X-Amz-Target: Logs_20140328.DescribeLogGroups"
    ]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST DescribeLogStreams

Lists the log streams for the specified log group. You can list all the log streams or filter the results by prefix. You can also control how the results are ordered. You can specify the log group to search by using either logGroupIdentifier or logGroupName . You m

https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams?limit=10&nextToken=example

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
X-Amz-Target Logs_20140328.DescribeLogStreams
curl -X POST "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams?limit=10&nextToken=example" \
  -H "X-Amz-Target: Logs_20140328.DescribeLogStreams"
import requests
params = {
    "limit": "10",
    "nextToken": "example"
}
headers = {
    "X-Amz-Target": "Logs_20140328.DescribeLogStreams"
}
response = requests.post(
    "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams",
    params=params,
    headers=headers,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams');
url.searchParams.set('limit', '10');
url.searchParams.set('nextToken', 'example');

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'X-Amz-Target': 'Logs_20140328.DescribeLogStreams'
  },
}); 
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/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams")
	q := baseURL.Query()
	q.Set("limit", "10")
	q.Set("nextToken", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("POST", targetURL, nil)
	req.Header.Set("X-Amz-Target", "Logs_20140328.DescribeLogStreams")

	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/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams")
uri.query = URI.encode_www_form({
  "limit" => "10",
  "nextToken" => "example"
})

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

req = Net::HTTP::Post.new(uri)
req["X-Amz-Target"] = "Logs_20140328.DescribeLogStreams"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/logs/2014-03-28/#X-Amz-Target=Logs_20140328.DescribeLogStreams?" . http_build_query([
    "limit" => "10",
    "nextToken" => "example"
]);
$opts = ["http" => [
    "method" => "POST",
    "header" => implode("\r\n", [
        "X-Amz-Target: Logs_20140328.DescribeLogStreams"
    ]),
]];
$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 CloudWatch Logs?

Amazon CloudWatch Logs 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 CloudWatch Logs 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 ↗