NAV Navbar
shell java csharp python
  • Introduction
  • Authentication
  • /CONTENT/{CONTENT-ID}
  • /PDF/{CONTENT-ID}
  • /CONTENT/LENS
  • /CONTENT/THREAT_SCORE
  • /CONTENT/COUNTRY_STATS
  • /CONTENT/HIGHLIGHTED_CONTENT
  • /CONTENT/MAPS_CONTENT
  • /CONTENT/RELATED_CONTENT
  • /CONTENT/COUNTRY_SYNOPSIS
  • /CONTENT/LENS_LIBRARY
  • /SEARCH/PARAM
  • Introduction

    Stratfor provides global awareness and guidance to individuals, governments and businesses around the world. We use a unique, intel-based approach to analyze world affairs.

    Version: 3.0.0

    Authentication

    Stratfor utilizes API keys to allow access to the API. You may register a new API key at our developer portal.

    The API expects for the API key to be included in all API requests to the server in either:

    1) A header that takes the following format:

    apiKey: YOUR_API_KEY

    2) A querystring parameter that takes the following format:

    ?apiKey=YOUR_API_KEY

    /CONTENT/{CONTENT-ID}

    GET

    Summary: Full Content

    Description: The Content endpoint returns information about the Stratfor products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.

    curl \
      -XGET \
      -H 'Accept: */*' \
      'https://api.stratfor.com/api/v3/content/199545?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/199545";
    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Accept", "application/json")
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/199545"),
        Method = HttpMethod.Get
    };
    request.Headers.Accept.Add(acceptType);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/199545'
    headers = {
        'apiKey': api_key,
        'Accept': 'application/json'
    }
    r = requests.get(url, headers=headers)
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    
    {
      "status": "1",
      "lens_type": [],
      "path_alias": "analysis/spain-and-italy-corruption-scandals-threaten-stability",
      "pdf_file": "",
      "pov": "",
      "taxonomy": [
        {
          "tid": "259",
          "path_alias": "/taxonomy/term/259",
          "v_name": "topics",
          "name": "Economics and Finance",
          "vid": "8"
        },
        {
          "tid": "284",
          "path_alias": "/taxonomy/term/284",
          "v_name": "topics",
          "name": "Europes Economic Crisis",
          "vid": "8"
        },
        {
          "tid": "262",
          "path_alias": "/taxonomy/term/262",
          "v_name": "topics",
          "name": "Politics",
          "vid": "8"
        },
        {
          "vid": "5",
          "code": "ES",
          "name": "Spain",
          "path_alias": "/region/europe/spain",
          "tid": "97",
          "v_name": "countries"
        },
        {
          "vid": "5",
          "code": "IT",
          "name": "Italy",
          "path_alias": "/region/europe/italy",
          "tid": "80",
          "v_name": "countries"
        }
      ],
      "forecast_child_nodes": [],
      "analysis_type": "",
      "brightcove_video_id": "",
      "uuid": "115b11c4-f83c-40a6-8218-e9feb9df9778",
      "title": "In Spain and Italy, Corruption Scandals Threaten Stability",
      "forecast": "",
      "crisis_update_nodes": [],
      "source": "",
      "thumbnail_url": "https://www.stratfor.com:443/sites/default/files/styles/stratfor_large__s_/public/main/images/173961686.jpg?itok=cKhGA90w",
      "location": "",
      "type": "stratfor_analysis",
      "body": "<p>In Spain,&nbsp;the scandal involving the conservative Popular Party has been ongoing <a href=\"https://worldview.stratfor.com/article/corruption-claims-weaken-european-elite\">since early 2013</a>, when Spanish media revealed that former party treasurer Luis Barcenas kept informal accounting books, in which he registered secret payments from businessmen and companies to members of the ruling party, including Rajoy, between 1990 and 2009. Barcenas&#39; initial reaction to the reports was to deny their veracity, but he later admitted that the books were indeed real.</p><div class=\"embed\"><div class=\"inline-embed node-embed node-embed--video paragraph\"><div class=\"video-content\"><iframe src=\"//players.brightcove.net/1160327040001/default_default/index.html?videoId=2548693058001\" allowfullscreen=\"true\" width=\"100%\" height=\"100%\"></iframe></div></div></div><p>Until recently, Rajoy&#39;s strategy was to avoid mentioning the case in public, minimizing his government&#39;s links with the former treasurer, who was dismissed in 2009 after a separate corruption scandal. But after Spanish newspaper El Mundo obtained a series of text messages between Rajoy and Barcenas from early 2013, pressure from the Spanish opposition grew, eventually forcing Rajoy to address the scandal before the Spanish parliament, where he denied any wrongdoing and said he would not resign.</p><p>The issue has divided the Spanish opposition. While the center-left Socialist Workers&#39; Party, which controls the second-largest number of seats in parliament, is demanding Rajoy&#39;s resignation, the party says it would allow his replacement to be another member of the ruling Popular Party. By comparison, smaller parties on the left are demanding early elections. The split highlights the current political dynamic in Spain: Mainstream parties are wary of elections, since the crisis has eroded their popular support, while <a href=\"https://worldview.stratfor.com/article/eurozone-periphery-left-wing-parties-gain-strength\">smaller, usually left-wing parties</a> see an opportunity to capitalize on their growing popularity at the polls.</p><p>Meanwhile, the Spanish population has also been questioning the legitimacy of other state institutions. In early July, for example, Spanish media revealed that the president of the Spanish Constitutional Court, Francisco Perez de los Cobos, was a former member of the Popular Party &mdash; a fact that he did not disclose when he was elected by parliament in June, casting doubt on his impartiality as a magistrate. According to a recent opinion poll, around 70 percent of Spaniards believe Perez de los Cobos should resign. The issue is particularly sensitive for the government of Catalonia, because&nbsp;the autonomous region is <a href=\"https://worldview.stratfor.com/article/spain-implications-catalan-elections\">pushing for independence</a> &mdash; a move that could eventually be blocked by the Constitutional Court. On&nbsp;July 31, the Catalan government announced that it would ask Perez de los Cobos to resign.</p><h3><strong>Persistent Political Chaos in Italy</strong></h3><p>Italy is also in the midst of a delicate situation caused by corruption scandals. For the past month, the country&#39;s political world has <a href=\"https://worldview.stratfor.com/article/beyond-berlusconi-italys-underlying-political-instability\">revolved around&nbsp;the legal woes of Berlusconi</a>, whose People of Freedom party is a key supporter of current Prime Minister Enrico Letta&#39;s government. Prosecutors allege that Berlusconi&#39;s Mediaset network inflated the price for the rights of some 3,000 films, and an appeals court in Milan found him guilty. In the weeks leading up to the Supreme Court&#39;s ruling, Berlusconi suggested that he could withdraw parliamentary support for Letta if the sentence against him was confirmed, thus making the government fall.</p><p>The court&#39;s ruling, however, will buy time for Letta&#39;s government. Though Berlusconi was found guilty, three of the four years of his prison sentence have been commuted under an amnesty, and he will likely be allowed to serve the remainder of his term either under house arrest or by doing community service (this will be decided in October). Moreover, the Supreme Court ordered the lower court to review the five-year ban from public office it included in the original sentence, and a decision on the sanction will likely not be made until later this year.</p><p>Ultimately, Berlusconi&#39;s political future will be determined by the Italian Senate, which could decide to pardon the former prime minister in a secret vote expected to be held in early September. This would create serious tensions between Italy&#39;s main political parties. Berlusconi&#39;s People of Freedom would naturally support its leader, but Letta&#39;s center-left Democratic Party would have to choose between expelling Berlusconi, thus collapsing the government, or pardoning him and angering the party&#39;s base.</p><p>This latest round of political turmoil has erupted at a time when the Italian Parliament is debating <a href=\"https://worldview.stratfor.com/article/italys-political-uncertainty\">several key economic and political issues</a>. Lawmakers will need to decide what to do with Italy&#39;s value-added tax, which is scheduled to increase Oct. 1, as well as the country&#39;s controversial real estate tax, which affects most households. Over the longer term, the Italian Parliament will begin discussions to reform the country&#39;s electoral law and Constitution.</p><h3><strong>Fragile Alliances</strong></h3><p>Despite the turmoil, the Spanish and Italian governments will both survive for the time being. In Spain, the Popular Party holds a comfortable majority in parliament, enabling it to block no-confidence votes from the opposition, and most in the party still strongly support Rajoy. This makes early elections unlikely at this point in Spain. However, prolonged political scandals will continue weakening popular support for the government, consuming time and political resources needed to address the country&#39;s economic issues, <a href=\"https://worldview.stratfor.com/article/geopolitical-journey-empty-highway-spain\">especially unemployment</a>.</p><div class=\"embed\"><div class=\"inline-embed node-embed node-embed--image paragraph\"><div class=\"pattern__node-image\"><a href=\"https://www.stratfor.com:443/sites/default/files/main/images/Unemployment_Youth_EU_0.jpg\" title=\"Europe's Youth Unemployment Problem\" class=\"full-image-modal\"><img class=\"inline-copy-image\" src=\"https://www.stratfor.com:443/sites/default/files/styles/wv_small/public/main/images/Unemployment_Youth_EU_0.jpg?itok=yKXQNBN7\" srcset=\"https://www.stratfor.com:443/sites/default/files/main/images/Unemployment_Youth_EU_0.jpg 1920w, https://www.stratfor.com:443/sites/default/files/styles/wv_large/public/main/images/Unemployment_Youth_EU_0.jpg?itok=pyOTZpMY 1480w, https://www.stratfor.com:443/sites/default/files/styles/wv_medium/public/main/images/Unemployment_Youth_EU_0.jpg?itok=U2S8xTc5 1024w, https://www.stratfor.com:443/sites/default/files/styles/wv_small/public/main/images/Unemployment_Youth_EU_0.jpg?itok=yKXQNBN7 784w, https://www.stratfor.com:443/sites/default/files/styles/wv_tiny/public/main/images/Unemployment_Youth_EU_0.jpg?itok=kWoh-Pvn 320w\" sizes=\"(min-width: 1024px) 48vw, (min-width: 768px) 60vw, 90vw\"alt=\"Europe's Youth Unemployment Problem\"title=\"Europe's Youth Unemployment Problem\"/></a></div><div class=\"node-embed__image-meta\"><h3 class=\"node-embed__image-title\" itemprop=\"name\">Europe's Youth Unemployment Problem<h3><p class=\"node-embed__image-caption\"></p><p class=\"node-embed__image-copyright\"></p></div></div></div><p>The situation facing the government is considerably more tenuous in Italy, where Berlusconi will continue his threats if Parliament does not help resolve his legal problems. Letta&#39;s government will also probably survive the next few months, and early elections are unlikely to take place before the end of the year. However, Berlusconi&#39;s perpetual legal problems (he currently has six other issues making their way through the judicial system), and the complicity of the center-left in his political survival, will erode popular support for Italy&#39;s mainstream parties. As in Spain, Italy&#39;s political controversies will undermine government efforts to deal with pressing issues.&nbsp; &nbsp;</p><p>Europe&#39;s economic crisis has led to unusual political alliances around the Continent, with beleaguered mainstream parties cooperating with one another due to fears of the emerging fringe parties. In Greece, for example, the country&#39;s traditional political adversaries &mdash; the center-right New Democracy Party and the center-left Panhellenic Socialist Movement &mdash; have managed to form a fragile coalition government. This dynamic exists in Italy, where Berlusconi and his center-left adversaries jointly supported former Prime Minister Mario Monti&#39;s government in 2012 and Letta&#39;s government in 2013. In Spain, the Socialist Worker&#39;s Party does not directly support the Popular Party, but its decision not to push strongly for new elections is striking.<strong> </strong>For traditional elites in both Italy and Spain, reluctant collaboration is the political reality while Europe is in crisis.</p>",
      "thumbnail_caption": "",
      "premium": "1",
      "content_reference": [],
      "nid": "199545",
      "alert": false,
      "lens_sections": [],
      "field_teaser_body": "Loss of voter trust in mainstream political parties and state institutions is hindering each country's efforts to rebound from the recession. ",
      "created_formatted": "August 2, 2013 | 10:16 GMT",
      "promo_image": "",
      "organizations": [
        {
          "tid": "238",
          "name": "EU",
          "vid": "7"
        },
        {
          "tid": "239",
          "name": "Eurozone",
          "vid": "7"
        }
      ],
      "custom_portal_terms": [],
      "created": "1375438560",
      "changed": "1488997028",
      "summary": "<p>Corruption scandals are weakening the governments of Italy and Spain &mdash; home to the third- and fourth-largest economies in the eurozone, respectively. On&nbsp;Aug. 1, Spanish Prime Minister Mariano Rajoy was forced to go before Spain&#39;s parliament to defend his role in a growing scandal involving irregular financing of his ruling Popular Party. The same day, Italy&#39;s Supreme Court upheld the prison sentence handed down in October to former Prime Minister Silvio Berlusconi over his conviction for tax fraud.</p><p>The controversies have unfolded at a time when both countries are struggling to exit Europe&#39;s recession and are beset with record-high levels of unemployment. While the current Italian and Spanish governments will remain in power for the time being, the resulting loss of voter trust in mainstream political parties and state institutions will continue to hinder each country&#39;s efforts to revive economic growth.</p>",
      "thumbnail_credit": "(DOMINIQUE FAGET/AFP/Getty Images)",
      "forecast_type": ""
    }
    

    HTTP Request

    GET /content/{content-id}

    Parameters

    Name Located in Description Required Type
    content-id path Content ID. Yes number (integer)

    Responses

    Code Description
    200 success

    /PDF/{CONTENT-ID}

    GET

    Summary: PDF Content

    curl \
      -XGET \
      -H 'Accept: */*' \
      'https://api.stratfor.com/api/v3/pdf/199545?apikey=YOUR_API_KEY'
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/pdf/199545";
    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .build();
    Response response = client.newCall(request).execute();
    if (response.isSuccessful()) {
        FileOutputStream fos = new FileOutputStream("d:/example.pdf");
        fos.write(response.body().bytes());
        fos.close();
    }
    
    using System;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/pdf/199545"),
        Method = HttpMethod.Get
    };
    var result = client.SendAsync(request).Result;
    if (result.IsSuccessStatusCode) {
        result.Content.LoadIntoBufferAsync();
        var fileStream = new FileStream("d:/example.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
        result.Content.CopyToAsync(fileStream).ContinueWith(
            (task) => {
                fileStream.Close();
            }
        );
    }
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/pdf/199545'
    headers = {
        'apiKey': api_key
    }
    r = requests.get(url, headers=headers, stream=True)
    r.raise_for_status()
    with open('d:\example.pdf', 'wb') as f:
        for chunk in r:
            f.write(chunk)
    

    HTTP Request

    GET /pdf/{content-id}

    Parameters

    Name Located in Description Required Type
    content-id path Content ID. Yes number (integer)

    Responses

    Code Description
    200 success

    /CONTENT/LENS

    POST

    Summary: Lens Feed

    Description: Lens Feed API

    curl \
      -XPOST \
      -H 'Accept: */*' \
      -H 'Content-Type: application/json' \
      -d '{"taxonomy": {}, "lens_type": "Threat", "limit": 10, "page": 0}' \
      'https://api.stratfor.com/api/v3/content/lens?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    
    import okhttp3.*;
    import org.json.JSONObject;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/lens";
    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("application/json");
    String jsonInput = "{\n" +
            "\"taxonomy\": {},\n" +
            "\"lens_type\": \"Threat\",\n" +
            "\"page\": 0,\n" +
            "\"limit\": 10\n" +
            "}";
    RequestBody requestBody = RequestBody.create(mediaType, jsonInput);
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/json")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/lens"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    request.Content = new StringContent("{\n" +
        "\"taxonomy\": {},\n" +
        "\"lens_type\": \"Threat\",\n" +
        "\"page\": 0,\n" +
        "\"limit\": 10\n" +
        "}", Encoding.UTF8, "application/json");
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    import json
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/lens'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/json'
    }
    payload = {
        "taxonomy": {},
        "lens_type": "Threat",
        "page": 0,
        "limit": 10
    }
    r = requests.post(url, headers=headers, data=json.dumps(payload))
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    
    {
      "total_count": "4397",
      "nodes": [
        {
          "brightcove_video_id": "",
          "taxonomy": [
            {
              "vid": "5",
              "code": "RU",
              "name": "Russia",
              "path_alias": "/region/eurasia/russia",
              "tid": "110",
              "v_name": "countries"
            },
            {
              "tid": "421",
              "path_alias": "/taxonomy/term/421",
              "v_name": "threat_type",
              "name": "Terrorism and Insurgency",
              "vid": "21"
            },
            {
              "tid": "434",
              "path_alias": "/taxonomy/term/434",
              "v_name": "incident_type",
              "name": "Bombing",
              "vid": "22"
            },
            {
              "tid": "453",
              "path_alias": "/taxonomy/term/453",
              "v_name": "incident_target",
              "name": "Business/Corporate",
              "vid": "23"
            },
            {
              "tid": "469",
              "path_alias": "/taxonomy/term/469",
              "v_name": "weapon",
              "name": "Explosives",
              "vid": "24"
            }
          ],
          "path_alias": "content/russia-psychiatric-patient-confesses-st-petersburg-bombing",
          "title": "Russia: Psychiatric Patient Confesses to St. Petersburg Bombing",
          "created_formatted": "January 2, 2018 | 17:53 GMT",
          "type": "lens_item_of_interest",
          "created": "1514915588",
          "nid": "286401",
          "alert": false,
          "source": {
            "url": "",
            "title": "BBC"
          },
          "field_teaser_body": "<p><strong>Nothing indicates the suspect has ties to jihadist groups or ideology, even though the Islamic State had claimed the attack.</strong></p><p>Thirty-five-year-old Dmitry Lukyanenko has been arrested for the Dec. 27, 2017,&nbsp;<a class=\"connectedContentTrigger\" href=\"https://threatlens.stratfor.com/content/286312\" data-nid=\"286312\" type=\"Lens: Item of Interest\" title=\"Russia: Explosion in St. Petersburg Supermarket Injures at Least Four\" data-timestamp=\"1514397396\">bombing of a St. Petersburg supermarket</a> that injured 13 people,<strong>&nbsp;</strong>the BBC reported Jan. 2, citing a Dec. 31, 2017, statement from a Russian investigative committee. Lukyanenko reportedly had concealed two USB drives containing his manifesto and diagrams of the explosive device in a sausage left at the scene. Lukyanenko has confessed to the bombing, which he said he carried out due to his hatred of psychiatric treatment; he reportedly has been under psychiatric care since the age of 19. Reports state that while Lukyanenko has been linked to fringe nationalist groups, nothing indicates he has ties to jihadist groups or ideology even though the Islamic State had claimed the attack. If in fact <a class=\"connectedContentTrigger\" href=\"https://threatlens.stratfor.com/content/279382\" data-nid=\"279382\" type=\"Lens: Analysis\" title=\"Raqqa, We Have a Problem: Dubious claims raise questions about the state of the Islamic State\" data-timestamp=\"1493063228\">the Islamic State claim was false,</a>&nbsp;this highlights its diminished ability to carry out attacks.</p>",
          "promo_image": ""
        }
        ]
        "total_count": "9",
        "title": "Lens: Library Highlights"
      }
    }
    

    HTTP Request

    POST /content/lens

    Parameters

    Name Located in Description Required Type
    apikey query API Key Yes string

    Responses

    Code Description
    200 success

    /CONTENT/THREAT_SCORE

    POST

    Summary: Threat Score

    Description: Threat Score API

    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/threat_score";
    OkHttpClient client = new OkHttpClient();
    RequestBody requestBody = new FormBody.Builder()
            .add("timestamp", "1479103200")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/threat_score"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    var requestBody = new Dictionary<string, string>();
    requestBody.Add("timestamp", "1479103200");
    request.Content =  new FormUrlEncodedContent(requestBody);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/threat_score'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    payload = {
        'timestamp': '1479103200'
    }
    r = requests.post(url, headers=headers, data=payload)
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    

    HTTP Request

    POST /content/threat_score

    Responses

    Code Description
    200 success

    /CONTENT/COUNTRY_STATS

    POST

    Summary: Country Stats

    Description: Country Stats API

    curl \
      -XPOST \
      -H 'Accept: */*' \
      -d 'country%5Bcode%5D=EC&lens_type=Threat&timestamp=1500526800' \
      'https://api.stratfor.com/api/v3/content/country_stats?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/country_stats";
    OkHttpClient client = new OkHttpClient();
    RequestBody requestBody = new FormBody.Builder()
            .add("country[code]", "EC")
            .add("lens_type", "Threat")
            .add("timestamp", "1500526800")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/country_stats"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    var requestBody = new Dictionary<string, string>();
    requestBody.Add("country[code]", "EC");
    requestBody.Add("lens_type", "Threat");
    requestBody.Add("timestamp", "1500526800");
    request.Content =  new FormUrlEncodedContent(requestBody);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/country_stats'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    payload = {
        'country[code]': 'EC',
        'lens_type': 'Threat',
        'timestamp': '1500526800'
    }
    r = requests.post(url, headers=headers, data=payload)
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    
    {
      "country": {
        "tid": "42",
        "name": "Ecuador"
      },
      "lens_type": "Threat",
      "stats": {
        "lens_video": 0,
        "lens_report": 0,
        "lens_item_of_interest": 1,
        "lens_analysis": 0,
        "lens_forecast": 0,
        "lens_perspective": 0,
        "lens_section": 0,
        "lens_incident_report": 0
      }
    }
    

    HTTP Request

    POST /content/country_stats

    Responses

    Code Description
    200 success

    /CONTENT/HIGHLIGHTED_CONTENT

    POST

    Summary: Highlighted Content

    Description: Highlighted Content API

    curl \
      -XPOST \
      -H 'Accept: */*' \
      -d 'lens_type=Threat' \
      'https://api.stratfor.com/api/v3/content/highlighted_content?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/highlighted_content";
    OkHttpClient client = new OkHttpClient();
    RequestBody requestBody = new FormBody.Builder()
            .add("lens_type", "Threat")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/highlighted_content"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    var requestBody = new Dictionary<string, string>();
    requestBody.Add("lens_type", "Threat");
    request.Content =  new FormUrlEncodedContent(requestBody);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/highlighted_content'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    payload = {
        'lens_type': 'Threat'
    }
    r = requests.post(url, headers=headers, data=payload)
    r.raise_for_status()
    body = r.text
    
    {
      "total_count": 1,
      "nodes": [
        {
          "brightcove_video_id": "",
          "taxonomy": [
            {
              "vid": "5",
              "code": "US",
              "name": "United States",
              "path_alias": "/region/americas/united-states",
              "tid": "59",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "CN",
              "name": "China",
              "path_alias": "/region/asia-pacific/china",
              "tid": "195",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "KP",
              "name": "North Korea",
              "path_alias": "/region/asia-pacific/north-korea",
              "tid": "209",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "KR",
              "name": "South Korea",
              "path_alias": "/region/asia-pacific/south-korea",
              "tid": "215",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "FR",
              "name": "France",
              "path_alias": "/region/europe/france",
              "tid": "73",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "DE",
              "name": "Germany",
              "path_alias": "/region/europe/germany",
              "tid": "74",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "GR",
              "name": "Greece",
              "path_alias": "/region/europe/greece",
              "tid": "75",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "GB",
              "name": "United Kingdom",
              "path_alias": "/region/europe/united-kingdom",
              "tid": "102",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "CH",
              "name": "Switzerland",
              "path_alias": "/region/europe/switzerland",
              "tid": "99",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "IT",
              "name": "Italy",
              "path_alias": "/region/europe/italy",
              "tid": "80",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "HU",
              "name": "Hungary",
              "path_alias": "/region/europe/hungary",
              "tid": "77",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "RU",
              "name": "Russia",
              "path_alias": "/region/eurasia/russia",
              "tid": "110",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "IQ",
              "name": "Iraq",
              "path_alias": "/region/middle-east-and-north-africa/iraq",
              "tid": "126",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "SY",
              "name": "Syria",
              "path_alias": "/region/middle-east-and-north-africa/syria",
              "tid": "136",
              "v_name": "countries"
            },
            {
              "vid": "5",
              "code": "TR",
              "name": "Turkey",
              "path_alias": "/region/middle-east-and-north-africa/turkey",
              "tid": "137",
              "v_name": "countries"
            },
            {
              "tid": "421",
              "path_alias": "/taxonomy/term/421",
              "v_name": "threat_type",
              "name": "Terrorism and Insurgency",
              "vid": "21"
            },
            {
              "tid": "422",
              "path_alias": "/taxonomy/term/422",
              "v_name": "threat_type",
              "name": "Criminal Activity",
              "vid": "21"
            },
            {
              "tid": "423",
              "path_alias": "/taxonomy/term/423",
              "v_name": "threat_type",
              "name": "Business Continuity",
              "vid": "21"
            },
            {
              "tid": "424",
              "path_alias": "/taxonomy/term/424",
              "v_name": "threat_type",
              "name": "Industrial Espionage",
              "vid": "21"
            }
          ],
          "path_alias": "content/threat-lens-2018-annual-forecast",
          "title": "Threat Lens 2018 Annual Forecast",
          "created_formatted": "December 26, 2017 | 17:08 GMT",
          "type": "lens_forecast",
          "created": "1514308123",
          "nid": "286185",
          "alert": false,
          "source": "",
          "field_teaser_body": "This is our second Threat Lens Annual Forecast, our effort to predict the changes that matter the most to security professionals. This forecast represents our hypothesis for 2018. The calendar year ahead is the experiment that will test it.",
          "promo_image": {
            "caption": "",
            "alt": "",
            "sizes": {
              "large": "https://www.stratfor.com:443/sites/default/files/styles/large_1504x470/public/main-display.jpg?itok=c9dOEZT0",
              "medium": "https://www.stratfor.com:443/sites/default/files/styles/medium_640x200/public/main-display.jpg?itok=Qs0a0V0m",
              "9x6": "https://www.stratfor.com:443/sites/default/files/styles/9x6_720x480/public/main-display.jpg?itok=0gTNX8yW",
              "thumbnail_notification": "https://www.stratfor.com:443/sites/default/files/styles/thumbnail_192x108/public/main-display.jpg?itok=eILBfi8x",
              "full": "https://www.stratfor.com:443/sites/default/files/main-display.jpg",
              "16x9": "https://www.stratfor.com:443/sites/default/files/styles/16x9_640x360/public/main-display.jpg?itok=sTwIltaO",
              "thumbnail": "https://www.stratfor.com:443/sites/default/files/styles/9x6_280x187/public/main-display.jpg?itok=lPF9GQZh"
            },
            "title": ""
          }
        }
      ]
    }
    

    HTTP Request

    POST /content/highlighted_content

    Responses

    Code Description
    200 success

    /CONTENT/MAPS_CONTENT

    POST

    Summary: Map Content

    Description: Map Content API

    curl \
      -XPOST \
      -H 'Accept: */*' \
      -H 'Content-Type: application/json' \
      -d '{"date_range": {"start": 1476511200, "end": 1484373600}, "taxonomy": {"threat_type": {"tid": 421}}, "lens_type": "Threat", "location": [0, 0, 0, 0]}' \
      'https://api.stratfor.com/api/v3/content/maps_content?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/maps_content";
    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("application/json");
    String jsonInput = "{\n" +
            "  \"lens_type\": \"Threat\",\n" +
            "  \"location\": [0, 0, 0, 0],\n" +
            "  \"date_range\": {\n" +
            "    \"start\": 1476511200,\n" +
            "    \"end\": 1484373600\n" +
            "  },\n" +
            "  \"taxonomy\": {\n" +
            "    \"threat_type\": {\n" +
            "      \"tid\": 421\n" +
            "    }\n" +
            "  }\n" +
            "}";
    RequestBody requestBody = RequestBody.create(mediaType, jsonInput);
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/json")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/maps_content"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    request.Content = new StringContent("{\n" +
        "  \"lens_type\": \"Threat\",\n" +
        "  \"location\": [0, 0, 0, 0],\n" +
        "  \"date_range\": {\n" +
        "    \"start\": 1476511200,\n" +
        "    \"end\": 1484373600\n" +
        "  },\n" +
        "  \"taxonomy\": {\n" +
        "    \"threat_type\": {\n" +
        "      \"tid\": 421\n" +
        "    }\n" +
        "  }\n" +
        "}", Encoding.UTF8, "application/json");
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    import json
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/maps_content'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/json'
    }
    payload = {
        "lens_type": "Threat",
        "location": [
            0,
            0,
            0,
            0
        ],
        "date_range": {
            "start": 1476511200,
            "end": 1484373600
        },
        "taxonomy": {
            "threat_type": "tid"
        }
    }
    r = requests.post(url, headers=headers, data=json.dumps(payload))
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    
    {
      "total_count": 221,
      "nodes": [
        {
          "created": "1484335915",
          "countries": [
            {
              "tid": "97",
              "code": "ES",
              "name": "Spain",
              "vid": "5"
            }
          ],
          "nid": "233553",
          "location": {
            "right": "-2.618927300000",
            "bottom": "42.989624800000",
            "top": "42.989624800000",
            "lon": "-2.618927300000",
            "geom": "POINT (-2.6189273 42.9896248)",
            "lat": "42.989624800000",
            "geohash": "ezwhs6hbwwfkb",
            "geo_type": "point",
            "left": "-2.618927300000"
          },
          "title": "Spain: Authorities Arrest Five Suspects In Basque Country For Weapons Trafficking",
          "type": "lens_incident_report"
        },
        {
          "created": "1484335405",
          "countries": [
            {
              "tid": "137",
              "code": "TR",
              "name": "Turkey",
              "vid": "5"
            }
          ],
          "nid": "233552",
          "location": {
            "right": "35.482597000000",
            "bottom": "38.720489000000",
            "top": "38.720489000000",
            "lon": "35.482597000000",
            "geom": "POINT (35.482597 38.720489)",
            "lat": "38.720489000000",
            "geohash": "sychr2vehqmc",
            "geo_type": "point",
            "left": "35.482597000000"
          },
          "title": "Turkey: Soldiers Among 20 Suspects Arrested In Connection To TAK Attack",
          "type": "lens_item_of_interest"
        },
        {
          "created": "1484333721",
          "countries": [],
          "nid": "233550",
          "location": "",
          "title": "The Global Jihadist Movement In 2017: The Threat Lens Forecast",
          "type": "lens_report"
        },
        {
          "created": "1484251753",
          "countries": [
            {
              "tid": "127",
              "code": "IL",
              "name": "Israel",
              "vid": "5"
            }
          ],
          "nid": "233513",
          "location": {
            "right": "34.851612000000",
            "bottom": "31.046051000000",
            "top": "31.046051000000",
            "lon": "34.851612000000",
            "geom": "POINT (34.851612 31.046051)",
            "lat": "31.046051000000",
            "geohash": "sv8b95f0m7m7",
            "geo_type": "point",
            "left": "34.851612000000"
          },
          "title": "Israel: Soldiers Targeted By Hamas In \"Digital Honey Trap\"",
          "type": "lens_incident_report"
          }
        }
      ]
    }
    

    HTTP Request

    POST /content/maps_content

    Responses

    Code Description
    200 success

    /CONTENT/RELATED_CONTENT

    POST

    Summary: Releated Content

    Description: Releated Content API

    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/related_content/199545";
    OkHttpClient client = new OkHttpClient();
    RequestBody requestBody = new FormBody.Builder()
            .add("lens_type", "Threat")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/related_content/199545"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    var requestBody = new Dictionary<string, string>();
    requestBody.Add("lens_type", "Threat");
    request.Content =  new FormUrlEncodedContent(requestBody);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/related_content/199545'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    payload = {
        'lens_type': 'Threat'
    }
    r = requests.post(url, headers=headers, data=payload)
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    

    HTTP Request

    POST /content/related_content

    Responses

    Code Description
    200 success

    /CONTENT/COUNTRY_SYNOPSIS

    POST

    Summary: Country Synopsis

    Description: Country Synopsis API

    curl \
      -XPOST \
      -H 'Accept: */*' \
      -d 'country_code=EC' \
      'https://api.stratfor.com/api/v3/content/country_synopsis?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/country_synopsis";
    OkHttpClient client = new OkHttpClient();
    RequestBody requestBody = new FormBody.Builder()
            .add("country_code", "EC")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/country_synopsis"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    var requestBody = new Dictionary<string, string>();
    requestBody.Add("country_code", "EC");
    request.Content =  new FormUrlEncodedContent(requestBody);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/country_synopsis'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    payload = {
        'country_code': 'EC'
    }
    r = requests.post(url, headers=headers, data=payload)
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    
    {
      "tid": "42",
      "synopsis": "Criminal Activity - Medium\r\nPetty crimes -- such as mugging and pocket-picking -- are frequent in Ecuador. Criminals often work in groups and use distraction techniques to exploit victims, and transportation terminals (such as for buses and taxis) particularly risky. Ransom kidnappings and express kidnappings -- in which someone is abducted until the kidnappers drain his bank account -- sometimes target foreigners and expats, mostly in larger cities such as Quito and Guayaquil. Armed robberies are also a concern in cities.\r\n\r\nTerrorism and Insurgency - Low\r\nThere are no known domestic terrorist groups present in Ecuador, but government officials have recently received bomb threats from unidentified (and presumably domestic) actors. Ecuador has sporadically dealt with Colombian guerrilla groups, which have been known to use Ecuadorian territory near the border as a haven. The threat of violence is low, however, and, given that the FARC and ELN are dismantling, getting lower still.\r\n\r\nIndustrial Espionage - Low\r\nEcuador hasn\u2019t shown the intent or capability to conduct espionage activities for commercial purposes.\r\n\r\nBusiness Continuity - Medium\r\nThe Ecuadorian government is stable and domestic politics aren\u2019t typically violent. The most notable risks to business operations are corruption and a mercurial regulatory environment. The most notable recent instance of corruption is a scandal involving Brazilian construction company Odebrecht, which paid millions of dollars in bribes to secure public works contracts in the country. Local, regional and national government officials have been known to demand bribes to grant operational access and permits. Though infrequent, earthquakes and volcanic eruptions are a risk worth noting. The April 2016 earthquake that struck Esmeraldas province caused extensive damage to roads and public utilities and disrupted business activity along the northwestern coast. The underfunded government still hasn\u2019t fixed most of the damage.",
      "name": "Ecuador",
      "vid": "5"
    }
    

    HTTP Request

    POST /content/country_synopsis

    Responses

    Code Description
    200 success

    /CONTENT/LENS_LIBRARY

    POST

    Summary: Lens Library

    Description: Lens Library API

    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/content/lens_library";
    OkHttpClient client = new OkHttpClient();
    RequestBody requestBody = new FormBody.Builder()
            .add("lens_type", "Threat")
            .add("page", "0")
            .add("limit", "10")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/content/lens_library"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    var requestBody = new Dictionary<string, string>();
    requestBody.Add("lens_type", "Threat");
    requestBody.Add("page", "0");
    requestBody.Add("limit", "0");
    request.Content =  new FormUrlEncodedContent(requestBody);
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/content/lens_library'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    payload = {
        'lens_type': 'Threat',
        'page': '0',
        'limit': '10'
    }
    r = requests.post(url, headers=headers, data=payload)
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    

    HTTP Request

    POST /content/lens_library

    Responses

    Code Description
    200 success

    /SEARCH/PARAM

    POST

    Summary: Parametric Search API

    Description: The search API accepts parameterized search query and returns all the items that match.

    curl \
      -XPOST \
      -H 'Accept: */*' \
      -H 'Content-Type: application/json' \
      -d '{"lens_type": "Threat", "sort_by": ["changed", "desc"], "keywords_include": "congo", "page": 0}' \
      'https://api.stratfor.com/api/v3/search/param?apikey=YOUR_API_KEY'
    
    import java.io.IOException;
    import okhttp3.*;
    
    String apiKey = "YOUR_API_KEY";
    String url = "https://api.stratfor.com/api/v3/search/param";
    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("application/json");
    String jsonInput = "{\n" +
            "  \"lens_type\": \"Threat\",\n" +
            "  \"keywords_include\": \"congo\",\n" +
            "  \"page\": 0,\n" +
            "  \"sort_by\": [\n" +
            "    \"changed\",\n" +
            "    \"desc\"\n" +
            "  ]\n" +
            "}";
    RequestBody requestBody = RequestBody.create(mediaType, jsonInput);
    Request request = new Request.Builder()
            .url(url)
            .addHeader("apiKey", apiKey)
            .addHeader("Content-Type", "application/json")
            .post(requestBody)
            .build();
    Response response = client.newCall(request).execute();
    String body = response.body().string();
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    String apiKey = "YOUR_API_KEY";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("apiKey", apiKey);
    var acceptType = new MediaTypeWithQualityHeaderValue("application/json");
    var request = new HttpRequestMessage() {
        RequestUri = new Uri("https://api.stratfor.com/api/v3/search/param"),
        Method = HttpMethod.Post,
    
    };
    request.Headers.Accept.Add(acceptType);
    request.Content = new StringContent("{\n" +
        "  \"lens_type\": \"Threat\",\n" +
        "  \"keywords_include\": \"congo\",\n" +
        "  \"page\": 0,\n" +
        "  \"sort_by\": [\n" +
        "    \"changed\",\n" +
        "    \"desc\"\n" +
        "  ]\n" +
        "}", Encoding.UTF8, "application/json");
    var result = client.SendAsync(request).Result;
    String body = result.Content.ReadAsStringAsync().Result;
    
    import requests
    import json
    
    api_key = 'YOUR_API_KEY'
    url = 'https://api.stratfor.com/api/v3/search/param'
    headers = {
        'apiKey': api_key,
        'Content-Type': 'application/json'
    }
    payload = {
        "lens_type": "Threat",
        "keywords_include": "congo",
        "page": 0,
        "sort_by": [
            "changed",
            "desc"
        ]
    }
    r = requests.post(url, headers=headers, data=json.dumps(payload))
    r.raise_for_status()
    body = r.text
    json_body = r.json()
    

    Example Response

    {
      "total_count": 19,
      "nodes": [
        {
          "entity_type": "node",
          "ds_changed": "2017-08-02T20:29:28Z",
          "ds_created": "2017-08-02T20:29:28Z",
          "bundle": "lens_item_of_interest",
          "label": "Congo: Pro-Democracy Protests Turn Violent; Scores Arrested",
          "teaser": " Tensions in the Democratic Republic of the Congo over President Joseph Kabila\u2019s rule will continue to escalate, and opposition protests will continue to be met with force. Pro-democracy protests demanding Kabila&#039;s ouster turned violent in several cities across the Democratic Republic of the Congo, underscoring the country&#039;s high potential for political unrest. Al-Jazeera reported Aug. 1 that scores of arrests in several cities followed the outlawed demonstrations. Two dozen of the arrests were reported in the capital, Kinshasa, and protesters in Goma who reportedly threw projectiles at security forces were met with tear gas in return. The violence serves as a good reminder for those in country to avoid demonstrations of any sort.\u00a0 ",
          "score": 1.1170713,
          "nid": 282531,
          "is_uid": 200393,
          "id": "hak4nf/node/282531"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-07-15T17:01:47Z",
          "ds_created": "2017-07-15T16:55:02Z",
          "bundle": "lens_report",
          "label": "Geography and the Successful Militant Hideout",
          "teaser": "What is it that has allowed militant groups like the Taliban to evade destruction at the hands of vastly stronger forces? This report examines the interplay of physical and human geography in eight locations where militant groups have established hideouts, or havens where they have been able to retreat under pressure and manage to survive.",
          "score": 0.42108586,
          "nid": 282065,
          "is_uid": 46,
          "id": "hak4nf/node/282065"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-07-10T19:51:33Z",
          "ds_created": "2017-07-03T18:56:14Z",
          "bundle": "lens_item_of_interest",
          "label": "Congo: 21 Truck Drivers Abducted",
          "teaser": " Twenty-one truck drivers for the Alistair Cargo Transport Company were kidnapped in Lulimba after their police escort was overpowered by rebels in the Democratic Republic of the Congo (DRC), All Africa reported July 2. The drivers were predominantly Tanzanian, while three were from Uganda. All reportedly remain in good condition, but they have been taken to a small village deep in the DRC while their release is negotiated. Similar incidents have occurred in the DRC, such as in September 2016, when MaiMai rebels attacked and burned four transport trucks passing through the area. The security situation in the DRC continues to be volatile, and foreigners in the country, or those needing cargo to pass through, should be aware of the heightened risk. ",
          "score": 1.0314838,
          "nid": 281738,
          "is_uid": 46,
          "id": "hak4nf/node/281738"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-06-07T20:42:15Z",
          "ds_created": "2017-06-07T20:42:15Z",
          "bundle": "lens_item_of_interest",
          "label": "Turkey: Maritime Authorities Seize Heroin Shipment",
          "teaser": " Security forces acting on a tip seized a ship June 7 bearing the flag of the Democratic Republic of Congo in international waters, World Maritime News reported. Onboard were 40 sacks containing about a metric ton of heroin, with a street value of $57 million. Authorities arrested nine of the ship&#039;s crew and are continuing their investigation. Turkey&#039;s geographic position makes it an ideal nexus for smuggling into Europe and Western Russia. ",
          "score": 0.39546373,
          "nid": 280923,
          "is_uid": 216726,
          "id": "hak4nf/node/280923"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-05-08T16:02:24Z",
          "ds_created": "2017-05-08T16:02:24Z",
          "bundle": "lens_item_of_interest",
          "label": "Angola-DRC: 16,000 Refugees Flee DRC Violence, UN Says",
          "teaser": " The United Nations has estimated that the conflict in the neighboring Democratic Republic of Congo (DRC) has pushed at least 16,000 refugees into Angola, a count that could double over the next few months, All Africa Global Media reported May 7. The refugees are mostly arriving in Dundo, along the Angola-DRC border, and fleeing violence in the DRC\u2019s Kasai region, where militant elements have recently targeted humanitarian workers. ",
          "score": 0.71036303,
          "nid": 279871,
          "is_uid": 216726,
          "id": "hak4nf/node/279871"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-03-28T18:20:33Z",
          "ds_created": "2017-03-28T18:20:33Z",
          "bundle": "lens_item_of_interest",
          "label": "Democratic Republic of the Congo: Bodies Of Abducted UN Workers Found",
          "teaser": " Three bodies found in a shallow grave in Central Kasai province have been confirmed as the two U.N. workers abducted March 12-- one a U.S. citizen and the other Swedish-- and their Congolese translator, France24 reported March 28. One of the three bodies had been decapitated. The U.N. workers-- the first ever abducted in the Congo-- were conducting investigations on human rights abuses in the province. Three other Congolese were abducted with them-- a driver and two people providing a motorbike escort-- but there has reportedly been no sign of them. ",
          "score": 1.0728091,
          "nid": 278358,
          "is_uid": 216726,
          "id": "hak4nf/node/278358"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-03-15T14:24:28Z",
          "ds_created": "2017-03-13T16:12:13Z",
          "bundle": "lens_item_of_interest",
          "label": "DRC: American, Swedish UN Officials Kidnapped",
          "teaser": " The government announced March 13 that two U.N. officials-- an American man and a Swedish woman-- were taken hostage along with four Congolese nationals in the town of Ngombe, in Kasai-Central province, Reuters reported. The government described the kidnappers as \u201cnegative forces not yet identified.\u201d The U.N. said peacekeepers were searching for the captives. The security situation in the Democratic Republic of the Congo, while always shambolic, has further deteriorated since December 2016, when President Joseph Kabila refused to abdicate at the end of his term. ",
          "score": 0.6690377,
          "nid": 277690,
          "is_uid": 216726,
          "id": "hak4nf/node/277690"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-03-02T23:28:53Z",
          "ds_created": "2017-03-02T23:28:53Z",
          "bundle": "lens_item_of_interest",
          "label": "Democratic Republic of the Congo-France: France Confirms Kidnapped Gold Mine Employee Is A French National",
          "teaser": " France\u2019s Foreign Ministry confirmed that one of the five gold mine workers kidnapped March 1 in Maniema province is a French national, France 24 reported March 2. The victims also included one Tanzanian national and three Congolese, all employees of Banro, a Canadian gold mining outfit with two mines in the country. ",
          "score": 0.82485723,
          "nid": 236698,
          "is_uid": 216726,
          "id": "hak4nf/node/236698"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-03-02T15:32:47Z",
          "ds_created": "2017-03-01T16:53:11Z",
          "bundle": "lens_analysis",
          "label": "Non-Terrorist Threats To The Air Traveler",
          "teaser": "A variety of threats coalesce around airports, not all of them terrorist in nature.",
          "score": 0.4746712,
          "nid": 234831,
          "is_uid": 46,
          "id": "hak4nf/node/234831"
        },
        {
          "entity_type": "node",
          "ds_changed": "2017-01-27T14:00:02Z",
          "ds_created": "2016-12-21T16:21:35Z",
          "bundle": "lens_item_of_interest",
          "label": "Democratic Republic of Congo: UN Says At Least 20 Killed In Kinshasa Protests",
          "teaser": " The United Nations believes about 20 civilians were likely killed overnight during anti-Kabila protests in Kinshasa, The Daily Star reported Dec. 20. Opposition leaders, including senior leader Etienne Tshikedi, issued a nighttime call for peaceful resistance-- stopping short of a call for a general strike-- after President Joseph Kabila failed to step down at midnight on Monday. Reportedly, government troops spent much of the night in neighborhoods occupied by opposition members, rounding up protesters and engaging some with gunfire. The death count is very likely to rise, according to humanitarian organizations quoted by the Guardian. Hospitals have reportedly been ordered not to release casualty figures, and in some cases bodies are reportedly spirited away in secret by soldiers. The most recent reports say the Kinshasa streets are empty, the city for all intents and purposes shut down. Violence-- not further described-- also occurred in Lubumbashi to the south. ",
          "score": 0.8248573,
          "nid": 232955,
          "is_uid": 216726,
          "id": "hak4nf/node/232955"
        }
      ]
    }