# Source: https://docs.datadoghq.com/api/latest/snapshots/

# Snapshots
Take graph snapshots using the API.
## [Take graph snapshots](https://docs.datadoghq.com/api/latest/snapshots/#take-graph-snapshots)
  * [v1 (latest)](https://docs.datadoghq.com/api/latest/snapshots/#take-graph-snapshots-v1)


GET https://api.ap1.datadoghq.com/api/v1/graph/snapshothttps://api.ap2.datadoghq.com/api/v1/graph/snapshothttps://api.datadoghq.eu/api/v1/graph/snapshothttps://api.ddog-gov.com/api/v1/graph/snapshothttps://api.datadoghq.com/api/v1/graph/snapshothttps://api.us3.datadoghq.com/api/v1/graph/snapshothttps://api.us5.datadoghq.com/api/v1/graph/snapshot
### Overview
Take graph snapshots. Snapshots are PNG images generated by rendering a specified widget in a web page and capturing it once the data is available. The image is then uploaded to cloud storage.
**Note** : When a snapshot is created, there is some delay before it is available.
### Arguments
#### Query Strings
Name
Type
Description
metric_query
string
The metric query.
start [_required_]
integer
The POSIX timestamp of the start of the query in seconds.
end [_required_]
integer
The POSIX timestamp of the end of the query in seconds.
event_query
string
A query that adds event bands to the graph.
graph_def
string
A JSON document defining the graph. `graph_def` can be used instead of `metric_query`. The JSON document uses the [grammar defined here](https://docs.datadoghq.com/graphing/graphing_json/#grammar) and should be formatted to a single line then URL encoded.
title
string
A title for the graph. If no title is specified, the graph does not have a title.
height
integer
The height of the graph. If no height is specified, the graph’s original height is used.
width
integer
The width of the graph. If no width is specified, the graph’s original width is used.
### Response
  * [200](https://docs.datadoghq.com/api/latest/snapshots/#GetGraphSnapshot-200-v1)
  * [400](https://docs.datadoghq.com/api/latest/snapshots/#GetGraphSnapshot-400-v1)
  * [403](https://docs.datadoghq.com/api/latest/snapshots/#GetGraphSnapshot-403-v1)
  * [429](https://docs.datadoghq.com/api/latest/snapshots/#GetGraphSnapshot-429-v1)


OK
  * [Model](https://docs.datadoghq.com/api/latest/snapshots/)
  * [Example](https://docs.datadoghq.com/api/latest/snapshots/)


Object representing a graph snapshot.
Expand All
Field
Type
Description
graph_def
string
A JSON document defining the graph. `graph_def` can be used instead of `metric_query`. The JSON document uses the [grammar defined here](https://docs.datadoghq.com/graphing/graphing_json/#grammar) and should be formatted to a single line then URL encoded.
metric_query
string
The metric query. One of `metric_query` or `graph_def` is required.
snapshot_url
string
URL of your [graph snapshot](https://docs.datadoghq.com/metrics/explorer/#snapshot).
```
{
  "graph_def": "string",
  "metric_query": "string",
  "snapshot_url": "https://app.datadoghq.com/s/f12345678/aaa-bbb-ccc"
}
```

Copy
Bad Request
  * [Model](https://docs.datadoghq.com/api/latest/snapshots/)
  * [Example](https://docs.datadoghq.com/api/latest/snapshots/)


Error response object.
Expand All
Field
Type
Description
errors [_required_]
[string]
Array of errors returned by the API.
```
{
  "errors": [
    "Bad Request"
  ]
}
```

Copy
Forbidden
  * [Model](https://docs.datadoghq.com/api/latest/snapshots/)
  * [Example](https://docs.datadoghq.com/api/latest/snapshots/)


Error response object.
Expand All
Field
Type
Description
errors [_required_]
[string]
Array of errors returned by the API.
```
{
  "errors": [
    "Bad Request"
  ]
}
```

Copy
Too many requests
  * [Model](https://docs.datadoghq.com/api/latest/snapshots/)
  * [Example](https://docs.datadoghq.com/api/latest/snapshots/)


Error response object.
Expand All
Field
Type
Description
errors [_required_]
[string]
Array of errors returned by the API.
```
{
  "errors": [
    "Bad Request"
  ]
}
```

Copy
### Code Example
  * [Curl](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=curl)
  * [Python](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=python)
  * [Ruby](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=ruby)
  * [Go](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=go)
  * [Java](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=java)
  * [Rust](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=rust)
  * [Typescript](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=typescript)
  * [Ruby [legacy]](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=ruby-legacy)
  * [Python [legacy]](https://docs.datadoghq.com/api/latest/snapshots/?code-lang=python-legacy)


#####  Take graph snapshots
Copy
```
                  # Required query arguments  
export metric_query="CHANGE_ME"  
export start="CHANGE_ME"  
export end="CHANGE_ME"  
# Curl command  
curl -X GET "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v1/graph/snapshot?metric_query=${metric_query}&start=${start}&end=${end}" \
-H "Accept: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}"  

                
```

#####  Take graph snapshots
```
"""
Take graph snapshots returns "OK" response
"""

from datetime import datetime
from dateutil.relativedelta import relativedelta
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.snapshots_api import SnapshotsApi

configuration = Configuration()
with ApiClient(configuration) as api_client:
    api_instance = SnapshotsApi(api_client)
    response = api_instance.get_graph_snapshot(
        metric_query="avg:system.load.1{*}",
        start=int((datetime.now() + relativedelta(days=-1)).timestamp()),
        end=int(datetime.now().timestamp()),
        title="System load",
        height=400,
        width=600,
    )

    print(response)

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=python) and then save the example to `example.py` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"


```

#####  Take graph snapshots
```
# Take graph snapshots returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V1::SnapshotsAPI.new
opts = {
  metric_query: "avg:system.load.1{*}",
  title: "System load",
  height: 400,
  width: 600,
}
p api_instance.get_graph_snapshot((Time.now + -1 * 86400).to_i, Time.now.to_i, opts)

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=ruby) and then save the example to `example.rb` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"


```

#####  Take graph snapshots
```
require 'rubygems'
require 'dogapi'

api_key = '<DATADOG_API_KEY>'
app_key = '<DATADOG_APPLICATION_KEY>'

dog = Dogapi::Client.new(api_key, app_key)

end_ts = Time.now().to_i
start_ts = end_ts - (60 * 60)
dog.graph_snapshot("system.load.1{*}", start_ts, end_ts)
```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=ruby-legacy) and then save the example to `example.rb` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"


```

#####  Take graph snapshots
```
// Take graph snapshots returns "OK" response

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"
	"time"

	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
)

func main() {
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV1.NewSnapshotsApi(apiClient)
	resp, r, err := api.GetGraphSnapshot(ctx, time.Now().AddDate(0, 0, -1).Unix(), time.Now().Unix(), *datadogV1.NewGetGraphSnapshotOptionalParameters().WithMetricQuery("avg:system.load.1{*}").WithTitle("System load").WithHeight(400).WithWidth(600))

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `SnapshotsApi.GetGraphSnapshot`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `SnapshotsApi.GetGraphSnapshot`:\n%s\n", responseContent)
}

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=go) and then save the example to `main.go` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"


```

#####  Take graph snapshots
```
// Take graph snapshots returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.SnapshotsApi;
import com.datadog.api.client.v1.api.SnapshotsApi.GetGraphSnapshotOptionalParameters;
import com.datadog.api.client.v1.model.GraphSnapshot;
import java.time.OffsetDateTime;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    SnapshotsApi apiInstance = new SnapshotsApi(defaultClient);

    try {
      GraphSnapshot result =
          apiInstance.getGraphSnapshot(
              OffsetDateTime.now().plusDays(-1).toInstant().getEpochSecond(),
              OffsetDateTime.now().toInstant().getEpochSecond(),
              new GetGraphSnapshotOptionalParameters()
                  .metricQuery("avg:system.load.1{*}")
                  .title("System load")
                  .height(400L)
                  .width(600L));
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling SnapshotsApi#getGraphSnapshot");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=java) and then save the example to `Example.java` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"


```

#####  Take graph snapshots
```
from datadog import initialize, api
import time

options = {
    'api_key': '<DATADOG_API_KEY>',
    'app_key': '<DATADOG_APPLICATION_KEY>'
}

initialize(**options)

# Take a graph snapshot
end = int(time.time())
start = end - (60 * 60)
api.Graph.create(
    graph_def='{\
    "viz": "timeseries", \
    "requests": [ \
      {"q": "avg:system.load.1{*}", "conditional_formats": [], "type": "line"},\
      {"q": "avg:system.load.5{*}", "type": "line"}, \
      {"q": "avg:system.load.15{*}", "type": "line"}\
      ], \
    "events": [\
      {"q": "hosts:* ", "tags_execution": "and"}\
      ]}',
    start=start,
    end=end
)

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=python-legacy) and then save the example to `example.py` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python "example.py"


```

#####  Take graph snapshots
```
// Take graph snapshots returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV1::api_snapshots::GetGraphSnapshotOptionalParams;
use datadog_api_client::datadogV1::api_snapshots::SnapshotsAPI;

#[tokio::main]
async fn main() {
    let configuration = datadog::Configuration::new();
    let api = SnapshotsAPI::with_config(configuration);
    let resp = api
        .get_graph_snapshot(
            1636542671,
            1636629071,
            GetGraphSnapshotOptionalParams::default()
                .metric_query("avg:system.load.1{*}".to_string())
                .title("System load".to_string())
                .height(400)
                .width(600),
        )
        .await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=rust) and then save the example to `src/main.rs` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run


```

#####  Take graph snapshots
```
/**
 * Take graph snapshots returns "OK" response
 */

import { client, v1 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
const apiInstance = new v1.SnapshotsApi(configuration);

const params: v1.SnapshotsApiGetGraphSnapshotRequest = {
  metricQuery: "avg:system.load.1{*}",
  start: Math.round(
    new Date(new Date().getTime() + -1 * 86400 * 1000).getTime() / 1000
  ),
  end: Math.round(new Date().getTime() / 1000),
  title: "System load",
  height: 400,
  width: 600,
};

apiInstance
  .getGraphSnapshot(params)
  .then((data: v1.GraphSnapshot) => {
    console.log(
      "API called successfully. Returned data: " + JSON.stringify(data)
    );
  })
  .catch((error: any) => console.error(error));

```

Copy
#### Instructions
First [install the library and its dependencies](https://docs.datadoghq.com/api/latest/?code-lang=typescript) and then save the example to `example.ts` and run following commands:
```
    

DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"


```

* * *
![](https://t.co/1/i/adsct?bci=4&dv=UTC%26en-US%26Google%20Inc.%26Linux%20x86_64%26255%261080%26600%264%2624%261080%26600%260%26na&eci=3&event=%7B%7D&event_id=8c7dd1a2-c228-492a-8e69-eb7d4bc02698&integration=gtm&p_id=Twitter&p_user_id=0&pl_id=8607fbf3-4de8-46cb-8238-56eec475dded&pt=Snapshots&tw_document_href=https%3A%2F%2Fdocs.datadoghq.com%2Fapi%2Flatest%2Fsnapshots%2F&tw_iframe_status=0&txn_id=nui23&type=javascript&version=2.3.35)![](https://analytics.twitter.com/1/i/adsct?bci=4&dv=UTC%26en-US%26Google%20Inc.%26Linux%20x86_64%26255%261080%26600%264%2624%261080%26600%260%26na&eci=3&event=%7B%7D&event_id=8c7dd1a2-c228-492a-8e69-eb7d4bc02698&integration=gtm&p_id=Twitter&p_user_id=0&pl_id=8607fbf3-4de8-46cb-8238-56eec475dded&pt=Snapshots&tw_document_href=https%3A%2F%2Fdocs.datadoghq.com%2Fapi%2Flatest%2Fsnapshots%2F&tw_iframe_status=0&txn_id=nui23&type=javascript&version=2.3.35)![](https://id.rlcdn.com/464526.gif)
![](https://bat.bing.com/action/0?ti=4061438&Ver=2&mid=81023550-3fb1-44e1-93b7-cae595a03133&bo=2&sid=ba46b8a0f0bf11f08761a3199a385bde&vid=ba46dde0f0bf11f0b26b6ba9935020b6&vids=0&msclkid=N&pi=918639831&lg=en-US&sw=1080&sh=600&sc=24&tl=Snapshots&p=https%3A%2F%2Fdocs.datadoghq.com%2Fapi%2Flatest%2Fsnapshots%2F&r=&lt=1002&evt=pageLoad&sv=2&asc=G&cdb=AQAS&rn=226282)