NAV Navbar
shell python javascript

Introduction

Welcome to the Finimize API! You can use our API to access Finimize content.

You can view code examples in the dark area to the right, and you can switch the programming language with the tabs in the top right.

If you have any issues please email dev@finimize.com

Note: The API is for corporate partners/customers only.

Authentication

To authorize, use this code:

requests.get(
  "https://api.finimize.com/v2/",
  headers={"x-api-key": "[YOUR-API-KEY-HERE]"}
  )
# With shell, you can just pass the correct header with each request
curl -X GET
-H "x-api-key: [YOUR-API-KEY-HERE]"
-H "content-type: application/json"
fetch("https://api.finimize.com/v2/", {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json",
  },
});

Make sure to replace [INSERT-API-KEY-HERE] with your API key.

Finimize uses API keys to allow access to the API. You will receive an API key from your account manager.

The Finimize API expects for your API key to be included in all API requests to the server in a header that looks like the following:

x-api-key: [YOUR-API-KEY-HERE]

Rate limiting

The Finimize API allow's a maximum of 10,000 requests per day, up to 10 per second.

If you expect your application to have a high level of requests, you should aim to save the response to your own database and serve the content from there. There is also a batch API that can be used for getting new expiring audio URLs (more details below).

If you are having problems please contact your account manager who can help you with this.

Content

import requests

requests.get(
  "https://api.finimize.com/v2/content",
  headers={
    "x-api-key": "[YOUR-API-KEY-HERE]"
    "content-type": "application/json" 
  },
  params={
    "content-types-included[]": [
      "INSIGHT",
      "DAILY_BRIEF"
    ],
    "startDate": "2023-01-01T10:03:02.894Z",
    "limit": "3",
    "after": "WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNyIsNDUyM10"
  }
)
curl "https://api.finimize.com/v2/content" \
  -H "x-api-key: [YOUR-API-KEY-HERE]" \
  -H "content-type: application/json" \
  -d "content-types-included[]"=INSIGHT \
  -d "content-types-included[]"=DAILY_BRIEF \
  -d "start-date"=2023-03-21T10:47:39.894Z \
  -d "limit"=3 \
  -d "after"=WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNyIsNDUyM10 \
  -G
const fetch = require("fetch");

const params = new URLSearchParams();
params.append("content-types-included[]", "INSIGHT")
params.append("content-types-included[]", "DAILY_BRIEF")
params.append("start-date", "2023-03-21T10:47:39.894Z")
params.append("limit", 3)
params.append("after", "WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNyIsNDUyM10")


fetch(`https://api.finimize.com/v2/content?${params}`, {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json"
  }
})
.then((response) => response.json())
.then((data) => console.log(data));

This returns an object containing a list of content pieces, and pagination cursors in JSON like this:

{
  "result": "success",
  "data": {
    "pageInfo": {
      "hasNextPage": true,
      "hasPreviousPage": true,
      "startCursor": "WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNiIsNDUyMl0=",
      "endCursor": "WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNCIsNDUyMF0="
    },
    "contentPieces": [
      {
        "contentPieceId": "Q29udGVudFBpZWNlOjE6",
        "contentPieceTypeId": "DAILY_BRIEF",
        "title": "People Were Expecting A Soft Landing In 2007 And 2000 Too",
        "publishedAt": "2023-03-01T14:49:35.308Z",
        "subtitle": "And that didn’t really pan out either.",
        "summary": "And that didn’t really pan out either.",
        "headerImage": {
          "full": "https://finimize-img.imgix.net/https%3A%2F%2Fi.imgur.com%2F5hA3ruK.jpg?&s=6ffbefdffa9f3c639dea58560b7227d3",
          "default": "https://finimize-img.imgix.net/https%3A%2F%2Fi.imgur.com%2F5hA3ruK.jpg?fit=clip&h=768&w=768&s=a53d6c440b13430396af9b635b35d45d"
        },
        "hasAudio": true,
        "audioUrl": "http://d123.cloudfront.net/audio/Quicktakes/230301QuicktakesEP367StephaneRenevierMASTER.mp3?Expires=4070912461&Sig=SomeSig&KeyPairId=PK123",
        "canonicalLink": "https://finimize.com/content/Q29udGVudFBpZWNlOjU5MzQ=/people-were-expecting-soft-landing-2007-and-2000-too",
        "notificationTitleText": "🛬 Could Be A Rough Landing",
        "notificationBodyText": "Sure, people think we’ll get a soft landing. But that’s what they thought in 2007.",
        "blocks": [
          {
            "type": "text",
            "textHtml": "<p>If investors were betting on a hard landing...",
            "textMarkdown": "If investors were betting on a hard landing"
          },
          {
            "type": "quote",
            "quote": "The trade off for...",
            "caption": "trade off"
          },
          {
            "type": "image",
            "alt": "The performance of assets classes through the economic cycle",
            "caption": "asset class performance",
            "image": {
              "full": "https://finimize-img.imgix.net/https%3A%2F%2Fi.imgur.com%2F5hA3ruK.jpg?&s=6ffbefdffa9f3c639dea58560b7227d3",
              "default": "https://finimize-img.imgix.net/https%3A%2F%2Fi.imgur.com%2F5hA3ruK.jpg?fit=clip&h=768&w=768&s=a53d6c440b13430396af9b635b35d45d"
            },
          },
        ]
        "tags": [
          {
            "name": "fed",
            "slug": "fed"
          },
          {
            "name": "recession",
            "slug": "recession"
          },
          {
            "name": "Soft Landing",
            "slug": "soft-landing"
          }
        ],
        "assetClassTags": [
          {
            "name": "Stocks",
            "slug": "stocks"
          }
        ],
        "geographyTags": [
          {
            "name": "North America",
            "slug": "north-america"
          }
        ],
        "figis": []
      }
    },
    ...
  ]
}

The content endpoint gives access to content pieces created by Finimize. Responses are paginated, with a maximum page size of 20 content pieces, although can be reduced with the limit parameter. In order to find specific pieces of content there are a number filter parameters that can specified for this endpoint.

Request attributes

All of the attributes below, besides the pagination parameters will allow you to filter the content pieces returned. All of the parameters below are optional.

Attribute Type Description
content-types-included string You can specify one or multiple of the following: 'DAILY_BRIEF', 'WEEKLY_BRIEF', 'NEWS_STORY', 'INSIGHT', 'GUIDE', 'PODCAST', 'QUICK_TAKE', 'FINIMIZE_LABS'.
tags-included string slugs of the [regular] tags that must present
tags-excluded string slugs of the [regular] tags that must not be present
asset-class-tags-included string slugs of the asset class tags that must be present
asset-class-tags-excluded string slugs of the asset class tags that must not be present
geography-tags-included string slugs of the geography tags that must be present
geography-tags-excluded string slugs of the geography tags that must not be present
figis-included string Specify one or multiple OpenFIGI codes which must be mentioned
figis-excluded string Specify one or multiple OpenFIGI codes which must not be mentioned
start-date string Has published date after the specified(Inclusive). ISO 8601 format.
end-date string Has published date before the specified(Inclusive). ISO 8601 format.
after string A cursor based pagination reference that load content after the given startCursor
before string A cursor based pagination reference that load content before the given endCursor
limit number The maximum number of results per page (cannot exceed 20)

Note: All of the above exclude and include filters allow you to pass multiple values

Lists of items can be passed into the list filters either by specifying multiple "-attribute[]=value" query parameters, or a singular "attribute=value1,value2" comma-delimited list.

For example, to include multiple tags, you can use:

https://api.finimize.com/v2/content?tags-included[]=interest-rates&tags-included[]=inflation

Or, you can use a comma-delimited list:

https://api.finimize.com/v2/content?tags-included=recession,interest-rates,inflation

Response attributes

Attribute Type Required Description
data.pageInfo.hasNextPage boolean true Whether or not there's another page of results after this one
data.pageInfo.hasPreviousPage boolean true Whether or not there's another page of results before this one
data.pageInfo.startCursor string true A reference to the cursor for the first result in this page
data.pageInfo.endCursor string true A reference to the cursor for the last result in this page
contentPieces[x].contentPieceId string true A unique identifier for the content piece
contentPieces[x].contentPieceTypeId string true enum for the content piece type (possible values: 'DAILY_BRIEF', 'WEEKLY_BRIEF', 'NEWS_STORY', 'INSIGHT', 'GUIDE', 'PODCAST', 'QUICK_TAKE', 'FINIMIZE_LABS')
contentPieces[x].title string true The content piece title
contentPieces[x].publishedAt string true The date and time the content piece was first published
contentPieces[x].subtitle string true The subtitle for the content piece
contentPieces[x].summary string true An brief summary of the content piece
contentPieces[x].headerImage object true The primary image for a content piece
contentPieces[x].hasAudio boolean true Specifies if the content has audio
contentPieces[x].audioUrl string false An expiring audio url - will be valid for at least 6 hours
contentPieces[x].canonicalLink string true A hyperlink to the content piece on the Finimize website
contentPieces[x].notificationTitleText string false Title text for the push notification associated with the content piece
contentPieces[x].notificationBodyText string false The body of the push notification associated with the content piece
contentPieces[x].blocks object false See the content blocks section below to understand content blocks
contentPieces[x].tags object false A list of tag objects associated with the content piece
contentPieces[x].assetClassTags object false A list of asset class tag objects associated with the content piece
contentPieces[x].geographyTags object false A list of geography tag objects associated with the content piece
contentPieces[x].figis object false A list of OpenFIGI codes representing the securities mentioned

Content blocks

Content pieces are composed of various types of content blocks, which each have a different format. It's possible to build a UI based on these blocks elements.

Text block

A text block is the common block component, which returns text in HTML and Markdown format. These is no maximum text block size. In some cases one text block will span the entire content piece, in other cases we use multiple text blocks so that we can place images or quotes in between certain text content.

  {
    "type": "text",
    "textHtml": "<p>If investors were betting on a hard landing...",
    "textMarkdown": "If investors were betting on a hard landing...",
  }

Image block

These blocks simply return a content delivery network (CDN) hosted image, along with the alt and caption tags for web and mobile.

  {
    "type": "image",
    "alt": "The performance of assets classes through the economic cycle",
    "caption": "asset class performance",
    "image": {
      "full": "https://finimize-img.imgix.net/https%3A%2F%2Fi.imgur.com%2F5hA3ruK.jpg?&s=6ffbefdffa9f3c639dea58560b7227d3",
      "default": "https://finimize-img.imgix.net/https%3A%2F%2Fi.imgur.com%2F5hA3ruK.jpg?fit=clip&h=768&w=768&s=a53d6c440b13430396af9b635b35d45d"
    },
  }

Quote block

Quote blocks contain a quote, with an optional caption field.

  {
    "type": "quote",
    "quote": "The trade off for....",
    "caption": "The trade off for...",
  }

Tags

import requests

tag_type = "tags" # 'asset-classes' and 'geography' also valid

requests.get(
  f"https://api.finimize.com/v2/{tag_type}",
  headers={
    "x-api-key": "[YOUR-API-KEY-HERE]"
    "content-type": "application/json"
  }
)
TAG_TYPE=tags # 'asset-classes' and 'geography' also valid

curl "https://api.finimize.com/v2/$TAG_TYPE" \
  -H "x-api-key: [YOUR-API-KEY-HERE]" \
  -H "content-type: application/json" \
const fetch = require("fetch");

const tagType = 'tags' // 'asset-classes' and 'geography' also valid

fetch(`https://api.finimize.com/v2/${tagType}`, {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json"
  }
})
.then((response) => response.json())
.then((data) => console.log(data));

This returns an object containing a list of tags, and pagination cursors in JSON like this:

{
  "result": "success",
  "data": {
    "pageInfo": {
      "hasNextPage": true,
      "hasPreviousPage": true,
      "startCursor": "WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNiIsNDUyMl0=",
      "endCursor": "WyIyMDIzLTAzLTIyVDE0OjMyOjM1LjMwOFoiLCJRMjl1ZEdWdWRGQnBaV05sT2pFNCIsNDUyMF0="
    },
    "tags": [
      {
        "name": "Crypto",
        "slug": "crypto"
      },
      {
        "name": "Artificial Intelligence",
        "slug": "artificial-intelligence"
      },
      ...
    ]
  }
}

There are three separate endpoints you can access for the various types of tag ([regular] tags, asset classes and geography):

These endpoints expose the tags that have been applied to our content pieces. You can then use the slugs of the tags returned to construct requests to the /content endpoint, to either filter for content which has particular tags, or to exclude content with particular tags.

Response attributes

Attribute Type Required Description
data.pageInfo.hasNextPage boolean true Whether or not there's another page of results after this one
data.pageInfo.hasPreviousPage boolean true Whether or not there's another page of results before this one
data.pageInfo.startCursor string true A reference to the cursor for the first result in this page
data.pageInfo.endCursor string true A reference to the cursor for the last result in this page
tags[x] object true An object containing the tag name and slug. The name being the human readable representation, and the slug functioning as the identifier.

Audio refresh

import requests

requests.get(
  "https://api.finimize.com/v2/audio-refresh",
  headers={
    "x-api-key": "[YOUR-API-KEY-HERE]"
    "content-type": "application/json" 
  },
  params={"urls[]": [
    "http://d12345.cloudfront.net/sample.mp3",
    "http://d12345.cloudfront.net/sample2.mp3" 
  ]}
)
curl "https://api.finimize.com/v2/audio-refresh" \
  -H "x-api-key: [YOUR-API-KEY-HERE]" \
  -H "content-type: application/json" \
  -d "urls[]=http://d12345.cloudfront.net/sample.mp3" \
  -d "urls[]=http://d12345.cloudfront.net/sample2.mp3" \
  -G
const fetch = require("fetch");

const params = new URLSearchParams();
params.append("urls[]", "http://d12345.cloudfront.net/sample.mp3")
params.append("urls[]", "http://d12345.cloudfront.net/sample2.mp3")

fetch(`https://api.finimize.com/v2/audio-refresh?${params}`, {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json"
  }
})
.then((response) => response.json())
.then((data) => console.log(data));

This returns an array of updated Audio URLs (alongside their old URL) in JSON like this:

[
  {
    "oldUrl": "http://d12345.cloudfront.net/sample.mp3",
    "updatedUrl": "http://d12345.cloudfront.net/sample.mp3?Expires=1588707717&Signature=3pzkmqJNUrzf8NEJjNI%2Be18hhKU%3D&KeyPairId=FJGFJDAMDE"
  },
  ...
]

If you have the required permissions, the API response will include an audioUrl field which expires after six hours. To obtain a new audio url you'll need to make a request to the /audio-refresh endpoint with a list of urls.

Request attributes

Attribute Type Required Description
urls string The urls which the endpoint will refresh for another six hours

Response attributes

Attribute Type Required Description
oldUrl[x] string true The expired or soon to expire audio url
updatedUrl[x] string true the newly refreshed audio url (valid for another six hours)

Legacy API (V1)

Daily News

Get Latest News

import requests

requests.get(
  "https://api.finimize.com/v1/latest-news",
  headers={"x-api-key": "[YOUR-API-KEY-HERE]"}
  )

curl -X GET
-H "x-api-key: [YOUR-API-KEY-HERE]"
-H "content-type: application/json"
"https://api.finimize.com/v1/latest-news"

const fetch = require("fetch");

fetch("https://api.finimize.com/v1/latest-news", {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json",
  },
});

The above command returns an array of Daily News Articles in JSON like this:

[
  {
        "id": 123,
        "datePublished": "2020-04-16T17:26:41.000Z",
        "slug": "fancy-banks",
        "link": "https://www.finimize.com/wp/news/fancy-banks/",
        "title": "Fancy Banks",
        "content": {
            "html": [
                {
                    "title": "What's going on here?",
                    "content": "<p>Investors did a double-take as Bank of America (BoA), Goldman Sachs, and Citigroup all got dolled up to show off their first-quarter results on Wednesday.</p>\n"
                },
                {
                    "title": "What does this mean?",
                    "content": "<p>Investors responded to last quarter’s interest rate <a href=\"https://www.finimize.com/wp/news/hero-to-zero/\">cuts</a> and <a href=\"https://www.finimize.com/wp/news/ups-and-downs/\">rising volatility</a> by rejigging and rebalancing their portfolios, and all three banks were only too happy to accept their trading commissions, which gave that part of their business an expectation-busting boost. BoA and Goldman looked alike in another part of their business too: they both earned more than expected from advising companies on deals and fundraising last quarter – even as corporate clients focused more on battling a once-in-a-generation pandemic than on taking bankers’ advice.</p>\n"
                },
                {
                    "title": "Why should I care?",
                    "content": "<p><b><i>For markets: </i></b><i>Investment versus consumer banking.</i></p>\n<p><br class=\"“none”/\" />Unlike investment banks <a href=\"https://www.finimize.com/wp/news/winner-takes-all/\">JPMorgan</a> and Goldman Sachs – which rely on their trading and dealmaking segments for a lot of their income – BoA and Citigroup’s <i>consumer</i> businesses (think savings and loans) are a big part of both firms. That’s why it was notable to investors that BoA’s consumer business missed expectations. And with low rates and <a href=\"https://www.finimize.com/wp/news/job-nopening/\">rising unemployment</a> right now, things are probably going to get tougher for BoA, Citigroup, and similarly consumer-focused banking rivals.</p>\n<p><br class=\"“none”/\" /><br class=\"“none”/\" /><b><i>The bigger picture: </i></b><i>Preparing for the worst, hoping for the best.</i></p>\n<p><br class=\"“none”/\" />In anticipation of the tough period ahead, banks ramped up the cash they put aside in case of unpaid loans last quarter. BoA, for example, put $4 billion aside against potential <a href=\"https://www.finimize.com/wp/definition/default/\">defaults</a> on its credit cards, personal loans, and business loans, while <span class=\"ctt\">Citigroup – the world’s largest credit card provider – put $5 billion aside on top of the $2 billion hit the bank took from unpaid debts over the period. And it’ll probably need even more than that: credit card bills tend to be one of the first things people stop repaying when they’re struggling financially </span>(<a href=\"https://ctt.ac/ckj8c\">tweet this</a>). Goldman might be glad its consumer business is comparatively <a href=\"https://www.businessinsider.com/goldman-announces-consumer-growth-targets-at-investor-day-2020-1?r=US&amp;IR=T\">new</a>: the bank only put $1 billion aside.</p>\n"
                }
            ],
            "raw": [
                {
                    "title": "What's going on here?",
                    "content": "Investors did a double-take as Bank of America (BoA), Goldman Sachs, and Citigroup all got dolled up to show off their first-quarter results on Wednesday.\n"
                },
                {
                    "title": "What does this mean?",
                    "content": "Investors responded to last quarter’s interest rate cuts and rising volatility by rejigging and rebalancing their portfolios, and all three banks were only too happy to accept their trading commissions, which gave that part of their business an expectation-busting boost. BoA and Goldman looked alike in another part of their business too: they both earned more than expected from advising companies on deals and fundraising last quarter – even as corporate clients focused more on battling a once-in-a-generation pandemic than on taking bankers’ advice.\n"
                },
                {
                    "title": "Why should I care?",
                    "content": "For markets: Investment versus consumer banking.\nUnlike investment banks JPMorgan and Goldman Sachs – which rely on their trading and dealmaking segments for a lot of their income – BoA and Citigroup’s consumer businesses (think savings and loans) are a big part of both firms. That’s why it was notable to investors that BoA’s consumer business missed expectations. And with low rates and rising unemployment right now, things are probably going to get tougher for BoA, Citigroup, and similarly consumer-focused banking rivals.\nThe bigger picture: Preparing for the worst, hoping for the best.\nIn anticipation of the tough period ahead, banks ramped up the cash they put aside in case of unpaid loans last quarter. BoA, for example, put $4 billion aside against potential defaults on its credit cards, personal loans, and business loans, while Citigroup – the world’s largest credit card provider – put $5 billion aside on top of the $2 billion hit the bank took from unpaid debts over the period. And it’ll probably need even more than that: credit card bills tend to be one of the first things people stop repaying when they’re struggling financially (tweet this). Goldman might be glad its consumer business is comparatively new: the bank only put $1 billion aside.\n"
                }
            ]
        },
        "tags": [
            "Bank of America",
            "banks",
            "Citigroup",
            "Earnings",
            "Goldman Sachs",
            "interest rates",
            "JPMorgan",
            "unemployment",
            "US Earnings",
            "Volatility"
        ],
        "imageUrl": "https://www.finimize.com/wp/wp-content/uploads/2020/04/16042020-banks.jpg",
        "symbols": [
            "BAC",
            "C",
            "GS",
            "JPM"
        ]
    },
    ...
]

Daily News articles are published Mon-Fri by 1am UK time (GMT/BST).

This endpoint retrieves the 10 most recent articles.

HTTP Request

GET /latest-news

Weekly Reviews

Get Weekly Reviews

import requests

requests.get(
  "https://api.finimize.com/v1/weekly-reviews",
  headers={"x-api-key": "[YOUR-API-KEY-HERE]"}
  )

curl -X GET
-H "x-api-key: [YOUR-API-KEY-HERE]"
-H "content-type: application/json"
"https://api.finimize.com/v1/weekly-reviews"

const fetch = require("fetch");

fetch("https://api.finimize.com/v1/weekly-reviews", {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json",
  },
});

The above command returns an array of Weekly Reviews in JSON like this:

[
  {
        "id": 123,
        "title": "Saturday, April 4th",
        "datePublished": "2020-04-16T17:26:41.000Z",
        "slug": "20200425-weekly-review",
        "link": "https://www.finimize.com/wp/wsy74-pkh96-rmq44/20200425-weekly-review/",
        "imageUrl": "https://www.finimize.com/wp/wp-content/uploads/2020/04/ezgif.com-optimize-6-6-1.gif",
        "isAudioPublished": true,
        "expiringAudioUrl": "https://fmz-app-static.s3-eu-west-1.amazonaws.com/audio/Weekly-Brief/200418FWB.mp3?AWSAccessKeyId=FRT8762DDDREW778APLAD45&Expires=1589478587&Signature=ZDdAUxQF0gODAwomIw3j%2Bmqdnss%3D",
        "summary": {
            "title": "Marching Banks",
            "content": "Big US banks reported their first-quarter results this week, and while their trading businesses made all the right noises, their rising provisions against bad loans weren’t so easy on the ear.\n"
        },
        "content": {
            "html": [
                  {
                    "title": "🕰 Recap",
                    "content": "<ul>\n<li>On Tuesday, JPMorgan kicked off banks’ earnings with slightly lower first-quarter revenue than expected. <a href=\"https://www.finimize.com/wp/news/winner-takes-all/\">Read our story</a></li>\n<li>Goldman Sachs, Citigroup, and Bank of America followed up on Wednesday with a mixed bag of results. <a href=\"https://www.finimize.com/wp/news/fancy-banks/\">Read our story</a></li>\n<li>And on Thursday, Morgan Stanley and investment manager BlackRock brought up the rear of major US financials’ reporting. Read our story</li>\n</ul>\n"
                },
              {
                    "title": "✍️ Connecting The Dots",
                    "content": "<p>First the good news for banks. Last quarter was one for the ages: central banks in the US and UK cut interest rates to record lows as coronavirus circled the globe, and investors – worried about the economic shutdown’s effect on company earnings – presided over the fastest ever stock market slump into a “bear market”.<sup>1</sup> With all that volatility and uncertainty, investors chopped and changed their portfolios more than they otherwise might, which earned banks’ trading business more in commissions and led to higher-than-expected revenues.</p>\n<p><br class=\"“none”/\" />Now the bad news: it’s no secret there are even tougher times ahead, so, in preparation, banks ramped up the cash they put aside in case of unpaid loans. And that had a major impact on banks with big consumer businesses (think savings, loans, and credit cards). JPMorgan and Citigroup, for example, had to put $8 billion and $5 billion aside respectively last quarter. Goldman Sachs – whose consumer business, Marcus, is comparatively new – came out relatively lightly, only setting $1 billion aside.</p>\n<p><br class=\"“none”/\" />Last up, the frustrating news: a recent change in US financial accounting rules means banks had to squirrel away their loan loss provisions up front, rather than bit by bit over the life of a loan. And while the new rules led to lower bank profits than expected, investors didn’t pay those figures much attention. What investors <i>did</i> pay attention to was the risk that more conservative accounting might prevent banks from making loans when the economy needs it most – not to mention the warnings from a few banks that their previous profitability goals would now be harder to achieve.</p>\n"
                },
              {
                    "title": "🥡 Takeaways",
                    "content": "<p><strong>1. This time’s different. Honest.<br />\n</strong></p>\n<p>Since the global financial crisis, banks’ riskiest activities – like making direct bets on asset prices to line their own pockets – have been curtailed, and pose much less threat to their survival these days than they once did. Plus, banks now have much more emergency cash to cover losses in case of a downturn, and regulators check each year to make sure that’s still the case. So even if several borrowers do default on their debt repayments, it shouldn’t cause as much economic damage as it did last time.<sup>2</sup></p>\n<p><br class=\"“none”/\" /><strong>2. Time waits for no one.</strong></p>\n<p>Most economists reckon this quarter will be the economic low-point of the coronavirus crisis, and that things will start getting better in the second half of the year. In other words, they’re predicting a <a href=\"https://www.finimize.com/wp/news/cheer-up/\">V- or a U-shaped</a> recovery. But if things take longer to bounce back – or if there’s a second wave of infections that again cripples businesses and consumers – analyst estimates may prove too optimistic, and the currently safe dividends many banks have promised will come under threat.</p>\n"
                },
                  {
                    "title": "🎯 Also On Our Radar",
                    "content": "<p>Data out on Friday showed that European car sales (as measured by new registrations) fell by 50% last month – the most ever. With 80% of the global population in some form of lockdown, after all, splurging on a new set of wheels is a long way from most people’s minds. Among the hardest hit were Fiat-Chrysler and Peugot-maker PSA Group, whose sales fell around 70%. The world’s biggest carmaker Volkswagen, meanwhile, scrapped its earnings prediction for this year altogether.<sup>3</sup></p>\n"
                }
            ],
            "raw": [
                  {
                    "title": "🕰 Recap",
                    "content": "\nOn Tuesday, JPMorgan kicked off banks’ earnings with slightly lower first-quarter revenue than expected. Read our story\nGoldman Sachs, Citigroup, and Bank of America followed up on Wednesday with a mixed bag of results. Read our story\nAnd on Thursday, Morgan Stanley and investment manager BlackRock brought up the rear of major US financials’ reporting. Read our story\n\n"
                },
                {
                    "title": "✍️ Connecting The Dots",
                    "content": "First the good news for banks. Last quarter was one for the ages: central banks in the US and UK cut interest rates to record lows as coronavirus circled the globe, and investors – worried about the economic shutdown’s effect on company earnings – presided over the fastest ever stock market slump into a “bear market”.1 With all that volatility and uncertainty, investors chopped and changed their portfolios more than they otherwise might, which earned banks’ trading business more in commissions and led to higher-than-expected revenues.\nNow the bad news: it’s no secret there are even tougher times ahead, so, in preparation, banks ramped up the cash they put aside in case of unpaid loans. And that had a major impact on banks with big consumer businesses (think savings, loans, and credit cards). JPMorgan and Citigroup, for example, had to put $8 billion and $5 billion aside respectively last quarter. Goldman Sachs – whose consumer business, Marcus, is comparatively new – came out relatively lightly, only setting $1 billion aside.\nLast up, the frustrating news: a recent change in US financial accounting rules means banks had to squirrel away their loan loss provisions up front, rather than bit by bit over the life of a loan. And while the new rules led to lower bank profits than expected, investors didn’t pay those figures much attention. What investors did pay attention to was the risk that more conservative accounting might prevent banks from making loans when the economy needs it most – not to mention the warnings from a few banks that their previous profitability goals would now be harder to achieve.\n"
                },
                {
                    "title": "🥡 Takeaways",
                    "content": "1. This time’s different. Honest.\n\nSince the global financial crisis, banks’ riskiest activities – like making direct bets on asset prices to line their own pockets – have been curtailed, and pose much less threat to their survival these days than they once did. Plus, banks now have much more emergency cash to cover losses in case of a downturn, and regulators check each year to make sure that’s still the case. So even if several borrowers do default on their debt repayments, it shouldn’t cause as much economic damage as it did last time.2\n2. Time waits for no one.\nMost economists reckon this quarter will be the economic low-point of the coronavirus crisis, and that things will start getting better in the second half of the year. In other words, they’re predicting a V- or a U-shaped recovery. But if things take longer to bounce back – or if there’s a second wave of infections that again cripples businesses and consumers – analyst estimates may prove too optimistic, and the currently safe dividends many banks have promised will come under threat.\n"
                },
                {
                    "title": "🎯 Also On Our Radar",
                    "content": "Data out on Friday showed that European car sales (as measured by new registrations) fell by 50% last month – the most ever. With 80% of the global population in some form of lockdown, after all, splurging on a new set of wheels is a long way from most people’s minds. Among the hardest hit were Fiat-Chrysler and Peugot-maker PSA Group, whose sales fell around 70%. The world’s biggest carmaker Volkswagen, meanwhile, scrapped its earnings prediction for this year altogether.3\n"
                }
            ]
        }
    },
    ...
]

Weekly Reviews are published Saturdays by 1am UK time (GMT/BST). If you have access to weekly audio content, this will be available from 6am UK time (GMT/BST).

This endpoint retrieves the 5 most recent reviews.

HTTP Request

GET /weekly-reviews

Audio URLs

If you have the required permissions, the API response will include an expiringAudioUrl field which expires after six hours. To obtain a new audio url you'll need to make a request to the /refresh-audio-urls endpoint with a list of comma seperated urls.

Daily Briefs

Get Daily Briefs

import requests

requests.get(
  "https://api.finimize.com/v1/daily-briefs",
  headers={"x-api-key": "[YOUR-API-KEY-HERE]"}
  )

curl -X GET
-H "x-api-key: [YOUR-API-KEY-HERE]"
-H "content-type: application/json"
"https://api.finimize.com/v1/daily-briefs"

const fetch = require("fetch");

fetch("https://api.finimize.com/v1/daily-briefs", {
  headers: {
    "x-api-key": "[YOUR-API-KEY-HERE]",
    "content-type": "application/json",
  },
});

The above command returns an array of Daily Briefs in JSON like this:

[
    {
        "id": 23865,
        "title": "Thursday, May 7th",
        "datePublished": "2020-05-07T00:00:00.000Z",
        "slug": "0705-2",
        "isAudioPublished": true,
        "expiringAudioUrl": "https://fmz-app-static.s3-eu-west-1.amazonaws.com/audio/Daily-Brief/200508FDB.mp3?AWSAccessKeyId=FRT8762DDDREW778APLAD45&Expires=1589478587&Signature=ZDdAUxQF0gODAwomIw3j%2Bmqdnss%3D",
        "stories": [
            {
                "id": 23868,
                "title": "Mayday!",
                "datePublished": "2020-05-07T17:33:05.000Z",
                "slug": "mayday",
                "link": "https://www.finimize.com/wp/news/mayday/",
                "content": {
                    "html": [
                        {
                            "title": "What's going on here?",
                            "content": "<p>Swiss investment bank UBS has warned that the old <a href=\"https://www.cnbc.com/2019/04/30/sell-in-may-and-go-away-maybe-not-this-year.html\">adage</a>, “Sell in May and go away” until the fall is <i>not </i>the right strategy this year. Do you copy?</p>\n"
                        },
                        {
                            "title": "What does this mean?",
                            "content": "<p>Here’s the thing, investors who heeded the saying last year might’ve been right to do so: they’d have avoided the <a href=\"https://www.finimize.com/wp/news/another-day-another-tariff/\">second-worst</a> May for US stock markets since the 1960s, in which a record <a href=\"https://www.finimize.com/wp/news/cash-me-outside/\">$20 billion</a> was withdrawn from the American <a href=\"https://www.finimize.com/wp/definition/exchange-traded-fund\">exchange-traded funds</a> that track stocks. But the long-standing mantra isn’t watertight at the best of times. If, for instance, you’d sold in May and gone away until the last few months of 2018, you’d have seen the year’s stock market gains <a href=\"https://www.finimize.com/wp/news/2018-year-wasnt/\">evaporate</a> and then some. And let’s face it, these <i>aren’t </i>the best of times, so UBS prefers a new truism for the months ahead.</p>\n"
                        },
                        {
                            "title": "Why should I care?",
                            "content": "<p><b><i>For you personally: </i></b><i>Wise guys.</i></p>\n<p><br class=\"“none”/\" />“<i>Buy</i> in May and, er, keep a watchful eye on your investments,” reckons UBS Wealth. Its advisers think that with interest rates as low as they currently are, investors who do want to sell are better off buying bonds and stocks instead of sitting on low-returning cash. <span class=\"ctt\">They’ve also suggested you buy in installments (a.k.a. <a href=\"https://www.finimize.com/wtf/wtf-buy-stocks\">dollar-cost averaging</a>) and focus on trends likely to be boosted by coronavirus disruptions – ecommerce, fintech, automation, and robotics, to name a few – as well as stocks in more stable industries like <a href=\"https://www.finimize.com/wp/definition/consumer-staple\">consumer staples</a> </span><em>(<a href=\"https://ctt.ac/Kf005\">tweet this</a>)</em>.</p>\n<p><br class=\"“none”/\" /><br class=\"“none”/\" /><b><i>For markets: </i></b><i>While the cat’s away. </i></p>\n<p><br class=\"“none”/\" />There may be fewer investors around to buy and sell stocks, bonds, and other assets for the next few months in any case, which means those who <i>do </i>stick around will have a more significant effect on prices. Typically, that results in bigger swings in both directions as they respond to unexpected headlines and earnings updates – and try to pocket profits while the others aren’t paying close attention.</p>\n"
                        }
                    ],
                    "raw": [
                        {
                            "title": "What's going on here?",
                            "content": "Swiss investment bank UBS has warned that the old adage, “Sell in May and go away” until the fall is not the right strategy this year. Do you copy?\n"
                        },
                        {
                            "title": "What does this mean?",
                            "content": "Here’s the thing, investors who heeded the saying last year might’ve been right to do so: they’d have avoided the second-worst May for US stock markets since the 1960s, in which a record $20 billion was withdrawn from the American exchange-traded funds that track stocks. But the long-standing mantra isn’t watertight at the best of times. If, for instance, you’d sold in May and gone away until the last few months of 2018, you’d have seen the year’s stock market gains evaporate and then some. And let’s face it, these aren’t the best of times, so UBS prefers a new truism for the months ahead.\n"
                        },
                        {
                            "title": "Why should I care?",
                            "content": "For you personally: Wise guys.\n“Buy in May and, er, keep a watchful eye on your investments,” reckons UBS Wealth. Its advisers think that with interest rates as low as they currently are, investors who do want to sell are better off buying bonds and stocks instead of sitting on low-returning cash. They’ve also suggested you buy in installments (a.k.a. dollar-cost averaging) and focus on trends likely to be boosted by coronavirus disruptions – ecommerce, fintech, automation, and robotics, to name a few – as well as stocks in more stable industries like consumer staples (tweet this).\nFor markets: While the cat’s away. \nThere may be fewer investors around to buy and sell stocks, bonds, and other assets for the next few months in any case, which means those who do stick around will have a more significant effect on prices. Typically, that results in bigger swings in both directions as they respond to unexpected headlines and earnings updates – and try to pocket profits while the others aren’t paying close attention.\n"
                        }
                    ]
                },
                "imageUrl": "https://www.finimize.com/wp/wp-content/uploads/2020/05/07052020-ubs.jpg",
                "tags": [
                    "Consumer Staples",
                    "Dollar cost averaging",
                    "ecommerce",
                    "ETFs",
                    "Exchange traded funds",
                    "Personal finance",
                    "UBS",
                    "Volatility",
                    "Wealth Management"
                ],
                "symbols": []
          },
          {
                "id": 23867,
                "title": "Culture Shock",
                "datePublished": "2020-05-07T17:31:54.000Z",
                "slug": "culture-shock",
                "link": "https://www.finimize.com/wp/news/culture-shock/",
                "content": {
                    "html": [
                        {
                            "title": "What's going on here?",
                            "content": "<p>After spending trillions of dollars on limiting coronavirus’s economic impact, the US and Europe might find they have a lot more in common with Japan than they realized.</p>\n"
                        },
                        {
                            "title": "What does this mean?",
                            "content": "<p>The Bank of Japan (BoJ) has spent the last couple of decades buying up <a href=\"https://www.finimize.com/wp/definition/government-bonds\">government bonds</a> in an effort to boost both the country’s <a href=\"https://www.finimize.com/wp/definition/inflation/\">inflation</a> and its economic growth prospects – all without much success. And those continued purchases mean the Japanese debt owned by the BoJ is now <i>larger</i> than the current size of the country’s entire economy.<br class=\"“none”/\" /><br class=\"“none”/\" />Investors, then, might be getting déjà vu. There are record low <a href=\"https://www.finimize.com/wp/definition/target-interest-rate\">interest rates</a> in Europe and the US at the moment, and both countries have announced unprecedented amounts of mid-pandemic spending to support their economies. Europe’s <a href=\"https://www.finimize.com/wp/definition/central-bank\">central bank</a> now owns eurozone debt totaling 40% of its economy’s size, and America’s owns about 30%. And with more spending <a href=\"https://choice.npr.org/index.html?origin=https://www.npr.org/2020/05/04/850261945/u-s-treasury-to-borrow-3-trillion-in-3-months-to-pay-for-pandemic\">likely</a> – and an economic bounceback <a href=\"https://www.finimize.com/wp/news/always-day-away/\">less so</a> – the two of them might soon be in the same tight spot as their Eastern cousin.</p>\n"
                        },
                        {
                            "title": "Why should I care?",
                            "content": "<p><b><i>For markets: </i></b><i>You snooze, you lose.</i><br class=\"“none”/\" />Having continued to buy bonds without successfully stimulating its economy, the BoJ now owns about <a href=\"https://www.japanmacroadvisors.com/page/category/economic-indicators/financial-markets/jgbs-held-by-boj/\">half</a> the country’s total – making buying and selling them a less exciting prospect for investors. The risk is that the same thing happens to the US&#8217;s bonds: with its central bank ready to buy <a href=\"https://www.finimize.com/wp/news/unlimited-power/\">unlimited amounts</a>, bonds&#8217; volatility (i.e. their swings in prices) has <em>already</em> dropped to a one-year low. And as corporate bailouts arrive with <a href=\"https://www.finimize.com/wp/news/great-british-baking-woe/\">tough terms</a> and <a href=\"https://www.finimize.com/wp/news/holding-patterns/\">government-owned stakes</a>, that decline in investor interest could plague stock markets too.<br class=\"“none”/\" /><br class=\"“none”/\" /><b><i>The bigger picture: </i></b><i>Banks at the ready.</i><br class=\"“none”/\" />If central banks stop buying massive amounts of government bonds, the drop in demand is likely to send their prices down and <a href=\"https://www.finimize.com/wp/definition/yield\">yields</a> up (the two move inversely), in turn increasing borrowing costs for everyone else. And if <i>that</i> discourages spending, economic growth could falter – and central banks may need to step in again.</p>\n"
                        }
                    ],
                    "raw": [
                        {
                            "title": "What's going on here?",
                            "content": "After spending trillions of dollars on limiting coronavirus’s economic impact, the US and Europe might find they have a lot more in common with Japan than they realized.\n"
                        },
                        {
                            "title": "What does this mean?",
                            "content": "The Bank of Japan (BoJ) has spent the last couple of decades buying up government bonds in an effort to boost both the country’s inflation and its economic growth prospects – all without much success. And those continued purchases mean the Japanese debt owned by the BoJ is now larger than the current size of the country’s entire economy.Investors, then, might be getting déjà vu. There are record low interest rates in Europe and the US at the moment, and both countries have announced unprecedented amounts of mid-pandemic spending to support their economies. Europe’s central bank now owns eurozone debt totaling 40% of its economy’s size, and America’s owns about 30%. And with more spending likely – and an economic bounceback less so – the two of them might soon be in the same tight spot as their Eastern cousin.\n"
                        },
                        {
                            "title": "Why should I care?",
                            "content": "For markets: You snooze, you lose.Having continued to buy bonds without successfully stimulating its economy, the BoJ now owns about half the country’s total – making buying and selling them a less exciting prospect for investors. The risk is that the same thing happens to the US’s bonds: with its central bank ready to buy unlimited amounts, bonds’ volatility (i.e. their swings in prices) has already dropped to a one-year low. And as corporate bailouts arrive with tough terms and government-owned stakes, that decline in investor interest could plague stock markets too.The bigger picture: Banks at the ready.If central banks stop buying massive amounts of government bonds, the drop in demand is likely to send their prices down and yields up (the two move inversely), in turn increasing borrowing costs for everyone else. And if that discourages spending, economic growth could falter – and central banks may need to step in again.\n"
                        }
                    ]
                },
                "imageUrl": "https://www.finimize.com/wp/wp-content/uploads/2020/05/07052020-japan.jpg",
                "tags": [
                    "Bailouts",
                    "bonds",
                    "central banks",
                    "coronavirus",
                    "ECB",
                    "Europe",
                    "Eurozone",
                    "Federal Reserve",
                    "inflation",
                    "interest rates"
                ],
                "symbols": []
            }
        ]
    }
    ...
]

Daily Briefs are published Monday-Friday by 1am UK time (GMT/BST). If you have access to daily audio content, this will be available from 6am UK time (GMT/BST).

This endpoint retrieves the 10 most recent briefs.

HTTP Request

GET /daily-briefs

Audio URLs

If you have the required permissions, the API response will include an expiringAudioUrl field which expires after six hours. To obtain a new audio url you'll need to make a request to the /refresh-audio-urls endpoint with a list of comma seperated urls.

Refresh Audio Urls

Get Refreshed Audio URLs

If you have the access to Audio content, certain API endpoints will include an expiringAudioUrl field which expires after six hours. To obtain a new audio url you'll need to make a request to the /refresh-audio-urls endpoint with a list of comma seperated urls.

The URLs you pass in the urls GET parameter will need to be encoded.

import requests

requests.get(
  "https://api.finimize.com/v1/refresh-audio-urls/?urls=https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-One.mp3,https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Two.mp3,https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Three.mp3",
  headers={"x-api-key": "[YOUR-API-KEY-HERE]"}
  )

curl -X GET
-H "x-api-key: [YOUR-API-KEY-HERE]"
-H "content-type: application/json"
"https://api.finimize.com/v1/refresh-audio-urls/?urls=https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-One.mp3,https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Two.mp3,https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Three.mp3"

const fetch = require("fetch");

fetch(
  "https://api.finimize.com/v1/refresh-audio-urls/?urls=https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-One.mp3,https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Two.mp3,https%3A//s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Three.mp3",
  {
    headers: {
      "x-api-key": "[YOUR-API-KEY-HERE]",
      "content-type": "application/json",
    },
  }
);

The above command returns an array of updated Audio URLs (alongside their old URL) in JSON like this:

[
  {
    "oldUrl": "https://s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-One.mp3",
    "updatedUrl": "https://fmz-app-static.s3.eu-west-1.amazonaws.com/audio/Trade-Wars/Session-One.mp3?AWSAccessKeyId=FRT8762DDDREW778APLAD45Expires=1588707717&Signature=3pzkmqJNUrzf8NEJjNI%2Be18hhKU%3D"
  },
  {
    "oldUrl": "https://s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Two.mp3",
    "updatedUrl": "https://fmz-app-static.s3.eu-west-1.amazonaws.com/audio/Trade-Wars/Session-Two.mp3?AWSAccessKeyId=FRT8762DDDREW778APLAD45&Expires=1588707717&Signature=VKKVivDIq%2BK0xRZ%2FmDfONscj%2Fbs%3D"
  },
  {
    "oldUrl": "https://s3.eu-west-1.amazonaws.com/fmz-app-static/audio/Trade-Wars/Session-Three.mp3",
    "updatedUrl": "https://fmz-app-static.s3.eu-west-1.amazonaws.com/audio/Trade-Wars/Session-Three.mp3?AWSAccessKeyId=FRT8762DDDREW778APLAD45&Expires=1588707717&Signature=sUzXeT0xQrixzzlkwxJxdt%2FZP3U%3D"
  }
]

HTTP Request

GET /refresh-audio-urls?urls=URL1,URL2,URL3

Errors

The Finimize API uses the following error codes:

Error Code Meaning
206 Partial response -- Your API permissions have prevented you from accessing content defined in your filter parameters
400 Bad Request -- Your request is invalid.
401 Unauthorized -- You do not have access to the requested resource.
403 Forbidden -- Your API key is wrong or has not been included in the request.
404 Not Found -- The specific route could not be found. Check it is a valid endpoint.
413 Payload Too Large - Your request payload exceeds documented limits.
429 Limit Exceeded -- You are making too many requests. Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
💯 You're a Finimizer