Context: This is a reference document for the NPR API and is based on information from the NPR web interface and my own use of the API. I have used tables to reformat and reorganize the information found on the NPR site following the principles of Peter Gruenbaum’s Udemy courses. The Getting Started Guide is published separately.—Gale Naylor

National Public Radio API

API Reference


List Endpoint

Used to return lists of content by type. (Content lists with ids are also available from the NPR Mapping Index.)

URL

GET http://api.npr.org/list 

The GET method is not required when using a browser to retrieve lists.

An apiKey is not required to use the list resource.

Basic Query Parameters

Parameter

Description

Type

Required

Notes

id

ID of the list to return

Integer

Required

This is the listId. See table of allowed values.

typeId

type ID of the list to return (blogs only)

Integer

Optional

Only used to retrieve categories for a specific blog.

Allowed values for id and typeId

See Response for content collection structure.

listId

typeId

List Title

List Description

3002

3002

All topics

Collection of all topics.

3003

3003

All columns

Collection of opinion and perspective columns.

3004

3004

All programs

Collection of all NPR programs.

3006

3006

All recent series

Collection of series (stories on a topic) by category.

3007

3007

All personalities

Collection of all NPR personalities. Sorted by last name.

3008

3008

All recently featured music artists

Collection of music artists featured in the last TBD period. Sorted by artist’s last name or first letter of group name.

3009

3009

All music artists

Collection of all music artists.

3013

3013

All blogs

Collection of all blogs.

3018

3018

All musical genres

Collection of all musical genres.

3024

3024

All tags

Collection of all short descriptions relating to blog posts.

3028

3028

All topics and musical genres

Collection of all topics (News) and musical genres (Music) in the database. Includes topic and genre IDs.

{blogId}

3132

All categories for a particular blog

Collection of all categories associated with a specific blog. Requires a blogId, found using 3013, above.

Advanced Query Parameters

Data Parameters

Parameter

Description

Type

Req’d

Notes

storyCountAll

Returns all. items with at least this many associated stories

Integer

Optional

Available for all lists.

storyCountMonth

Returns list items published in the last month with at least this many associated stories

Integer

Optional

Available for all lists. 

storyCountToday

Returns list items published today with at least this many associated stories

Integer

Optional

Available for all lists.

childrenOf

Returns list items assigned to the given topic ID

Integer

Optional

Only available for lists 3002 (All Topics) and 3006 (Recent Series).

hideChildren

When set = 1, returns topics which are not subtopics of another topic

Integer

Optional

Valid values: 1. Only available for list 3002 (All Topics).

Output Parameters

Parameter

Description

Type

Req’d

Notes

output

Type of response output

String

Optional

Valid values: json and xml. Default is xml. Available for all lists.

callback

Wraps JSON-object in callback function. JSON only

String

Optional

Default is no wrapping. Available for all lists. See below.

If callback is specified, JSON-object is wrapped in callback function named with parameter value. Wrapping allows user to define their code response and works around Javascript same-domain origination policy.

Sample Request

http://api.npr.org/list?id=3004&output=json

Special Use Case Examples

http://api.npr.org/list?typeId=3132&id=91000411

where {typeId} is the code for retrieving category types and {id} is the blog ID. (Use List API to retrieve blog ID.)

http://api.npr.org/list?id=3002&output=json&callback=userFunction

Returns the following:

&quotuserFunction&quot({"id": "3004", "typeid": "3004", "title": {"$text": "All Programs"}, "item": [{"id": "2", "num": "1", "type": "program", "title": {"$text": "All Things Considered"},

...

Response Format – with subcategory (NPRML)

Element

Description

Type

Notes

list

Top-level XML element; includes all query results. XML only

List data object

XML attributes:

  • id: Integer
  • typeID: Integer

➢ title

List title

String

➢ subcategory

Subcategory title

String

XML attribute:

  • name: String

See below.

◦ item

Array of list item data elements

item data object

XML attributes:

  • id: Integer
  • num: Integer
  • type: String

■ title

Item title

String

■ additionalInfo

Additional information about list item

String

Not all list items have additional info.

Subcategory and subcategory.name elements are only used with lists that return multiple categories. (Subcategories are used to group results, for example, to group names by letter.) For lists without subcategories, see table Response Format – without subcategory.

Response Format – without subcategory (NPRML)

Element

Description

Type

Notes

list

Top-level XML element; includes all results returned by query. XML only

list data object

XML attributes:

  • id: Integer
  • typeID: Integer

➢ title

List title

String

➢ item

Array of list item data elements

item data object

XML attributes:

  • id: Integer
  • num: Integer
  • type: String

■ title

Item title

String

■ additionalInfo

Additional information about list item

String

Not all list items have additional info.

Sample Response – with subcategory

http://api.npr.org/list?id=3006

<list id=3006" typeid="3006">

<title>Recent Series</title>

<subcategory name="Around the Nation">

<item id="429056277" num="1" type="series">

<title>

Hurricane Katrina: 10 Years Of Recovery And Reflection

</title>

<additionalInfo>

All this month we'll be looking at how New Orleans and the Gulf Coast are doing 10 years after hurricane Katrina.

</additionalInfo>

</item>

<item id="4692815" num="2" type="series">

<title>Youth Radio</title>

<additionalInfo>

Youth Radio offers stories from young essayists and reporters about their experiences. From single moms to kids avoiding the wrong track — or getting back on the right one — their stories open up a new world to NPR listeners.

</additionalInfo>

</item>

</subcategory>

 ...

<subcategory name="U.S.">

<item id="363340041" num="55" type="series">

<title>Back At Base</title>

<additionalInfo>

NPR — along with seven public radio stations around the country — is chronicling the lives of America's troops, where they live.

</additionalInfo>

</item>

</subcategory>

</list>

Sample Response – without subcategory

http://apr.npr.org/list?id=3002&output=json

The following JSON output has been formatted to improve readability. The NPR List AP JSON output is a single line of text.

{

        "id": "3002",

        "typeid": "3002",

        "title": {"$text": "All Topics"},

        "item": [

                                {

                                        "id": "1149",

                                        "num": "1",

                                        "type": "topic",

                                        "title": {"$text": "Afghanistan"},

                                        "additionalInfo": {"$text": "Afghanistan"}

                                },

                                {

                                        "id": "1126",

                                        "num": "2",

                                        "type": "topic",

                                        "title": {"$text": "Africa"},

                                        "additionalInfo": {"$text": "Africa"}

                                },

                                ...

                                {

                                        "id": "1018",

                                        "num": "124",

                                        "type": "topic",

                                        "title": {"$text": "Your Money"},

                                        "additionalInfo": {"$text": "NPR coverage

 of personal finance, money, investing,

 taxes, retirement, mortgages and housing

 markets, wealth management, and stock

 market news. Download NPR podcasts and RSS

 feeds."}

                                }

                        ]

}


Query Endpoint

Retrieves digital content from the NPR archives based on specified parameters.

URL

GET http://api.npr.org/query

NOTE: GET method is not required when using browser to retrieve transcripts.

Query Parameters

There are five categories of query parameters: Access Parameters, Data Parameters, Output Parameters, Control Parameters, and Other Parameters.

Access Parameters

Parameter

Description

Type

Required

Notes

apiKey

Your personal NPR API key.

String

Required

To get a key, you must register. See below.

Once registered, you can get and/or change your apiKey from your Account Manager. Upon registration, your apiKey will be saved to a cookie that will enable the Query Generator to apply your apiKey to your queries.

Data Parameters

Parameter

Description

Type

Required

Notes

id

Returns stories belonging to provided IDs.

Integer

Required

Lists of IDs must be comma-delimited (e.g., 1001, 2). At least one ID is required for all queries, unless searchTerm is being used. See also: action control parameter and [1] below.

date

Returns stories with specified date.

date/ string

Optional

Format is YYYY-MM-DD. Default value is all dates. Special value current is also allowed. Cannot be used with startDate or endDate.

startDate

Returns stories with date of startDate or later.

date

Optional

Format is YYYY-MM-DD. Can be used with endDate to return a date range. See also: dateType control parameter.

endDate

Returns stories with date of endDate or earlier.

date

Optional

Format is YYYY-MM-DD. Can be used with startDate to return a date range. See also: dateType control parameter.

orgId

Returns stories provided by selected organization.

Integer

Optional

Owner organizations primarily include NPR and NPR member stations.

searchTerm

Returns stories matching searchTerm (based on NPR’s search engine).

String

Optional

Can be used with searchType to determine which fields are searched.

searchType

Determines which fields are searched

String

Optional

Valid values: mainText, and fullContent. Default is fullContent. Must be used with searchTerm.

See [2] below.

[1] Individual topics, programs, blogs, bios, music artists, and series each have an ID. Use the List API to retrieve the list of topics and the corresponding id numbers.

[2] Use searchTerm=fullContent to search the full text, transcripts, etc. For a more targeted search, use searchTerm=mainText, which searches only the title and teaser fields for the story.

Output Parameters

Parameter

Description

Type

Required

Notes

meta

Controls meta information for API call.

String

Optional

Valid values: none, inherit, or default. Default behavior returns title, teaser, and miniTeaser in addition to other output fields. See Output Reference.

output

Type of output format.

String

Optional

Valid values: NPRML, RSS, MediaRSS, Podcast, Atom, JSON, HTML, or JS.

Default is NPRML  

See Valid Output Values and Output Reference.

fields

List of story fields to return, comma-delimited.

String

Optional

Valid values: all,none, summary, titles, teasers, dates, and individual fields.

See NOTE and Valid Fields Values.

callback

Wraps JSON-object in callback function. Only for JSON output.

String

Optional

Default is JSON-object, with no wrapping. Available for all lists. See [1] below..

For NPRML output, select any combination of:  title, teaser, storyDate, show, byline, text, audio, image, textWithHtml, listText, pullQuote, parent, relatedLink, album, artist, product, transcript, and correction. For other formats, standard fields will be returned, although you can extend namespace beyond the standard by selecting other fields.

[1] If callback is specified, JSON-object is wrapped in callback function named with parameter value. Wrapping allows user to define their code response and works around Javascript same-domain origination policy.

Valid Output Types

Value

Description

Notes

NPRML

NPR’s native XML structure.

See Output Reference.

RSS

Standard RSS 2.0 format.

See RSS 2.0 Specification

MediaRSS

Standard RSS 2.0 format with MediaRSS extensions.

Extended for audio and image assets. Video is not supported. See Media RSS Specification

Podcast

Standard RSS 2.0 format with Podcast extensions, including MP3 audio enclosure.

Only stories for which NPR has audio rights will be listed.

ATOM

Standard Atom format.

See Atom Enabled.

JSON

NPRML results in JSON format.

See JSON Specification.

HTML

Limited HTML formatted block.

See below..

JS

Limited HTML formatted block wrapped around a JavaScript write statement.

See below.

HTML and JS fields are not configurable. Will only return title, date, teaser, link to story, and links to MP3, Real Audio and Windows Media audio (to the extent that they are available).        


Valid Fields to Display

Value

What will be included

Applies to

Notes

title

Title of story

All

teaser

Teaser for story

All

storyDate

Date of story

All

show

Associated programs

Some

byline

Names of all credited contributors

Some

text

Full text no markup; pure text

Some

audio

All distributable audio assets

Most

image

All distributable image assets

Most

textWithHtml

Full story text with all editorially applied HTML

Some

Includes bold text and embedded URLs.

listText

Story lists or text extensions

Some

Enriches story by providing timelines, story summaries, extended information, etc.

pullQuote

Isolated quotes

Some

parent

Story relationships to lists

Some

relatedLink

Story relationships to other NPR.org stories or other web pages

Some

album

Associated albums

Some

artist

Associated musical artists

Some

product

Related purchasable products

Some

transcript

Link to transcript

Some

correction

Story correction information

Some

For example (possibly empty) title, text, and date. Only stories with corrections.

all

Every available field

All

Default for NPRML format.

none

ID and associated links only

All

Excludes all content fields.

summary

A subset of summary fields

All

See below.

titles

All titles, including title, subtitle, shortTitle, and slug

All

teasers

All teasers, including teaser and miniTeaser

All

dates

All dates, including storyDate, pubDate, lastModifiedDate

All

Summary fields returned are: title, subtitle, shortTitle, teaser, miniTeaser, slug, thumbnail, toenail, storyDate, pubDate, lastModifiedDate, keywords, and priorityKeywords. (Parameters in italics are only available using summary or all.) 

Control Parameters

Parameter

Description

Type

Required

Notes

sort

Determines the order in which the stories will be returned.

String

Optional

Valid values: dateAsc, dateDesc, assigned (by editor), featured, or relevance. Default is dateDesc. See below.

startNum

The starting index of stories to return.

Integer

Optional

One is the first story in the list. Used for pagination of results.

numResults

The number of stories to return.

Integer

Optional

Default is 20.

action

Determines processing of queries with multiple IDs.

String

Optional

Valid values: or, and, and union. Default is and. See below.

requiredAssets

Limits the result set to contain only stories with a particular type of asset.

String

Optional

Valid values: audio, image, text, and correction.

Default is all assets.

Specify multiple assets by using comma-separated list.

dateType

Controls the meaning of startDate and endDate.

String

Optional

Valid values: story and correction. Default is story. See below..

Assigned sort order is chosen by NPR editors. Featured sort order puts featured stories for a show at top of result list. (Only useful if program ID is included in query.)

If action=or, stories appearing in any ID are returned. If action=and, only stories appearing in all IDs are returned. action=union returns results as if from separate queries for each ID.

If dateType is story, date parameters refer to story date. If dateType is correction, date parameters refer to correction date. Implies requiredAssets=correction. 

Other Parameters

Parameter

Description

Type

Required

Notes

title

Changes feed title at list level.

String

Optional

Default is system-generated feed title.

Simple Sample Request

http://api.npr.org/query?id=1126&orgId=1&output=JSON&apiKey={apiKey}

where id=1126 refers to the topic Africa, orgID=1 refers to stories only from National Public Radio, and the response is requested in JSON format.

Selected Use Cases

http://api.npr.org/query?id=1135,2&fields=title,teaser,storyDate&output=Podcast&apiKey={apiKey}

http://api.npr.org/query?id=1047&orgId=1&requiredAssets=audio&startDate=2015-01-01&searchTerm=sculpture&output=JSON&searchType=fullContent&apiKey={apiKey}

Response Format (NPRML)

Top-level list elements

Element

Description

Type

Notes

list

Top-level element; includes all results returned by query

List data object

➢ title

List title

String

.

➢ teaser

Brief query description

String

➢ link

Links to query results

URL

XML attribute type: string

Type can equal html or api. See below and Sample Response.

➢ story

Array of story links

Array

XML attribute id: Integer

Typical story elements

Only the most commonly used elements are shown. See NPR Output Reference for more elements.

Element

Description

Type

Notes

story

Array of story links

Array

XML attribute: id: integer

➢ link

Links to story

URL

XML attribute type: string

Type can be html, api, or short. See below and Sample Response.

➢title

Story title

String

CDATA

➢ teaser

Brief story description

String

CDATA

➢ storyDate

Story initial publication date

Date/time

➢ show

Parent node

◦ program

Name of program

String

XML attributes:

  • id:string
  • code:string

◦ showDate

Date of show

Date/time

◦ segNum

Segment number

Integer

➢ transcript

Parent node

◦ link

Link to transcript

URL

XML attribute
type: string

Type can be html or api. See below and Sample Response.

➢ audio

Parent node

XML element

XML attributes:

  • id:String
  • type:String

◦ duration

Duration of audio

Integer

◦ format

Parent node

XML element

If audio exists, contains sub-elements with audio URL (e.g., mp3)

◦ permissions

Parent node

XML element

Contains sub-elements with download, stream, and embed permissions

➢ byline

Parent node

XML element

XML attribute
id: Integer

◦ name

Name of author

String

XML attribute: personId: Integer

◦ link

Link to author’s bio

URL

XML attribute
type: string

Type can be html or api. See below and Sample Response.

➢ image

Image information

XML element

XML attributes:

  • id: Integer
  • type: String
  • width: String
  • src: String
  • hasBorder: String

See NPR Output Reference for information about sub-elements

◦ title

Title of image

String

◦ caption

Caption for image

String

➢ text

Parent node

XML element

◦ paragraph

Array of paragraphs containing text of story

String

CDATA

XML attribute:
num:String

➢ textWithHtml

Parent node

XML element

◦ paragraph

Array of paragraphs containing text of story

String

CDATA, with HTML markup

XML attribute:
num:String

There are three elements that contain URL links:

Sample Response

Request:

http://api.npr.org/query?id=491506009&fields=title,storyDate,show,byline,text,audio,image,transcript&apiKey={YourAPIKey}

Response:

<nprml version="0.94">

<list>

<title>

<![CDATA[ NPR: Stories from NPR ]]>

</title>

<teaser>

<![CDATA[ Assorted stories from NPR ]]>

</teaser>

<miniTeaser>

<![CDATA[

Custom NPR News Feed API. Visit http://www.npr.org/templates/apidoc/index.php for more information.

]]>

</miniTeaser>

<link type="api">

http://api.npr.org/query?id=491506009&apiKey={YourAPIKey}

</link>

<link type="html">

http://www.npr.org/2016/08/26/491506009/after-louisiana-floods-a-photographer-finds-resilience?ft=nprml&f=491506009

</link>

<story id="491506009">

<link type="html">

http://www.npr.org/2016/08/26/491506009/after-louisiana-floods-a-photographer-finds-resilience?ft=nprml&f=491506009

</link>

<link type="api">

http://api.npr.org/query?id=491506009&apiKey={YourAPIKey}

</link>

<link type="short">http://n.pr/2bVHdkP</link>

<title>

<![CDATA[

After Louisiana Floods, A Photographer Finds Resilience

]]>

</title>

<storyDate>Fri, 26 Aug 2016 17:22:50 -0400</storyDate>

<show>

<program id="2" code="ATC">All Things Considered</program>

<showDate>Fri, 26 Aug 2016 16:00:00 -0400</showDate>

<segNum>4</segNum>

</show>

<transcript>

<link type="html">

http://www.npr.org/templates/transcript/transcript.php?storyId=491506009&ft=nprml&f=491506009

</link>

<link type="api">

http://api.npr.org/transcript?id=491506009&apiKey={YourAPIKey}

</link>

</transcript>

<audio id="491531876" type="primary">

<title>Listen to the Story</title>

<duration>273</duration>

<description/>

<format>

<mp3 type="m3u">

http://api.npr.org/m3u/1491531876-b470a0.m3u?orgId=1&topicId=1143&d=273&p=2&story=491506009&t=progseg&e=491456466&seg=4&ft=nprml&f=491506009

</mp3>

<wm>

http://www.npr.org/templates/dmg/dmg_wmref_em.php?id=491531876&type=1&mtype=WM&orgId=1&topicId=1143&d=273&p=2&story=491506009&t=progseg&e=491456466&seg=4&ft=nprml&f=491506009

</wm>

<mp4>

https://ondemand.npr.org/npr-mp4/npr/atc/2016/08/20160826_atc_after_louisiana_flooding_photographers_capture_what_people_saved.mp4?orgId=1&topicId=1143&d=273&p=2&story=491506009&t=progseg&e=491456466&seg=4&ft=nprml&f=491506009

</mp4>

<hlsOnDemand>

http://hls.npr.org/nprhls//npr/atc/2016/08/20160826_atc_after_louisiana_flooding_photographers_capture_what_people_saved/master.m3u8

</hlsOnDemand>

<mediastream>

rtmp://flash.npr.org/ondemand/mp3:anon.npr-mp3/npr/atc/2016/08/20160826_atc_after_louisiana_flooding_photographers_capture_what_people_saved.mp3

</mediastream>

</format>

<region>all</region>

<rightsHolder/>

<permissions>

<download allow="true"/>

<stream allow="true"/>

<embed allow="true"/>

</permissions>

<stream active="false"/>

</audio>

<byline id="491531633">

<name personId="2101154">Ari Shapiro</name>

<link type="html">

http://www.npr.org/people/2101154/ari-shapiro?ft=nprml&f=491506009

</link>

<link type="api">

http://api.npr.org/query?id=2101154&meta=inherit&apiKey={YourAPIKey}

</link>

</byline>

<image id="491523618" type="primary" width="200" src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color_custom-7c33c59bf867dce10f7b9c8700a3c049dae6fe34.jpg?s=12" hasBorder="false">

<title>

Hilton Pray, 82, holds one of thousands of his photographs that were damaged after an estimated 4-feet of water filled his home in Denham Springs, La.

</title>

<caption>

Hilton Pray, 82, holds one of thousands of his photographs that were damaged after an estimated 4-feet of water filled his home in Denham Springs, La.

</caption>

<link url=""/>

<producer>Collin Richie</producer>

<provider url="">Humans of the Water</provider>

<copyright/>

<enlargement src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color_custom-7c33c59bf867dce10f7b9c8700a3c049dae6fe34.jpg">

<caption/>

</enlargement>

<crop type="standard" src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color-c9258ad547b63ce04a460d9e939ca2359aaf7d52.jpg"height="2864" width="3819"/>

<crop type="square" src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color_sq-f26806a720eb03903a15dcc44f9ee92fc4741f20.jpg"height="2874" width="2874"/>

<crop type="wide" src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color_wide-d955ab57481b4356e5eb59b1269ba3fa8d96e303.jpg"height="2789" width="4958"/>

<crop type="enlargement" src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color_custom-7c33c59bf867dce10f7b9c8700a3c049dae6fe34.jpg" height="3840" width="5760"/>

<crop type="custom" src="https://media.npr.org/assets/img/2016/08/26/humansofthewaternpr_007_color_custom-7c33c59bf867dce10f7b9c8700a3c049dae6fe34.jpg" height="3840" width="5760" primary="true"/>

</image>

...

<text>

<paragraph num="1">

<![CDATA[

In Baton Rouge, La., people are using whatever tools they have to help their community recover from the flood.

]]>

</paragraph>

<paragraph num="2">

<![CDATA[ That includes cameras. ]]>

</paragraph>

<paragraph num="3">

<![CDATA[

Four photographers have been creating portraits of those affected. Their project, "Humans of the Water," focuses not on what people lost, but on what they saved.

]]>

</paragraph>

...

</text>

</story>

</list>

</nprml>


Common Status Codes and Errors

The errors and warnings listed below are a subset of the possible messages returned by the NPR API. Note, when query parameters are invalid and your request cannot be interpreted, the NPR API returns a list of “assorted” NPR stories. In the case of an error, no response (other than the error message) is returned.

Code

Type

Description

Notes

101

Error

Unexpected error

310

Error

Invalid or missing API key

Response returns both 101 and 301 errors

201-203

Warning

Invalid query parameter was ignored

See NPR messages

301

Warning

Invalid field was ignored

302, 308

Warning

Number of results exceeded limit

Use startNum to page through results

401

Warning

No results match search criteria

500

Error

api.npr.org is currently unable to handle this request

Only for the /list endpoint

List Error Response - invalid query parameter

Request:

http://api.npr.org/list?id=Africa

Response:

Sample Query Error Response - no API key

Request:

http://api.npr.org/query?id=491506009&fields=title,storyDate,show,byline,text,audio,image,transcript

Response from browser:

<nprml version="0.6">

<messages>

<message id="101" level="error">

<text>

An unexpected error occurred when processing your request. Please visit http://www.npr.org/contact/ and select the office 'Online / Technical Support' to contact us for assistance.

</text>

<timestamp>0</timestamp>

</message>

<message id="310" level="error">

<text>

The API key passed in () was invalid or no API key was passed in. Please register for a valid API key.

</text>

<timestamp>1474555696.62</timestamp>

</message>

</messages>

</nprml>

Response from Postman:

<?xml version="1.0"?>

<nprml version="0.6">

    <messages>

        <message id="101" level="error">

            <text>An unexpected error occurred when processing your request.  Please visit http://www.npr.org/contact/ and select the office 'Online / Technical Support' to contact us for assistance.</text>

            <timestamp>0</timestamp>

        </message>

        <message id="310" level="error">

            <text>The API key passed in () was invalid or no API key was passed in.  Please register for a valid API key.</text>

            <timestamp>1474557989.02</timestamp>

        </message>

    </messages>

</nprml>

Sample Query Response with Warning - invalid query parameter

Request:

http://api.npr.org/query?id=Africa&fields=title,teaser,storyDate&output=NPRML&apiKey={YourAPIKey}

Response from browser:

<nprml version="0.94">

<message id="203" level="warning">

<text>

Query parameter id='Africa' is invalid because it is not an integer and was ignored.

</text>

<timestamp>1474557399.74</timestamp>

</message>

<message id="203" level="warning">

<text>

Query parameter id='Africa' is invalid because it is not an integer and was ignored.

</text>

<timestamp>1474557399.74</timestamp>

</message>

<list>

(“Assorted stories from NPR”)

</list>

Response from Postman:

<?xml version="1.0" encoding="UTF-8"?>

<nprml version="0.94">

    <message id="203" level="warning">

        <text>Query parameter id='Africa' is invalid because it is not an integer and was ignored.</text>

        <timestamp>1474556742.71</timestamp>

    </message>

    <message id="203" level="warning">

        <text>Query parameter id='Africa' is invalid because it is not an integer and was ignored.</text>

        <timestamp>1474556742.71</timestamp>

    </message>

    <list>

 (“Assorted stories from NPR”)

    </list>