Pitches
Review the pitches written for your newsdesks: list, read and summarize them, approve or dismiss them, and submit your own drafts.
x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
limit?integerMaximum items per page (1–100, default 25)
1 <= value <= 10025cursor?stringOpaque cursor from a prior nextCursor
sort?stringSort order: "-field" descending, "field" ascending. Accepted: rank, -rank (default -rank)
include?|array<string>Relations to sideload; repeat the parameter for several. contributingPublishers and eventContext each add a per-pitch map keyed by pitch id; statusChangedBy and createdBy populate the envelope's users map with whoever last moved each pitch and whoever created it. All omitted by default, so the ordinary list pays no extra query.
A page of pitches, highest-ranked first by default
application/json- response
items*array<>pagination*sort*filters*facets?Value/count breakdown for each field requested via ?facets=. Present only when facets were requested.
included?curl -X GET 'https://api.nuvelics.com/api/tenant/v1/pitches'{ "items": [ { "id": "string", "orgId": "string", "newsdeskId": "string", "eventClusterId": "string", "title": "string", "summary": "string", "whyItMatters": "string", "score": 0, "contentLanguage": "string", "eventDate": "2019-08-24", "status": "draft", "creationSource": "auto", "statusChangedAt": "2019-08-24T14:15:22Z", "statusChangedBy": "string", "createdBy": "string", "manualRequestId": "string", "createdAt": "2019-08-24T14:15:22Z", "storyId": "string" } ], "pagination": { "nextCursor": "string" }, "sort": { "applied": "string", "default": "string", "available": [ "string" ] }, "filters": { "applied": { "property1": null, "property2": null }, "available": [ { "field": "string", "kind": "string", "facetable": true } ] }, "facets": { "property1": { "values": [ { "value": "string", "count": 0 } ], "capped": true }, "property2": { "values": [ { "value": "string", "count": 0 } ], "capped": true } }, "included": { "contributingPublishers": { "property1": { "publishers": [ { "publisherKey": "string", "name": "string", "iconUrl": "string" } ], "sourceCount": 0 }, "property2": { "publishers": [ { "publisherKey": "string", "name": "string", "iconUrl": "string" } ], "sourceCount": 0 } }, "eventContext": { "property1": { "topics": [ "string" ], "locations": [ "string" ] }, "property2": { "topics": [ "string" ], "locations": [ "string" ] } }, "users": { "property1": { "id": "string", "name": "string", "email": "string" }, "property2": { "id": "string", "name": "string", "email": "string" } } }}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
bucket*string"day""month"groupBy?string"topic""location"The caller's own org's pitch generation bucketed by day or month, optionally grouped by topic or location
application/json- response
rows*array<>capped*booleancurl -X GET 'https://api.nuvelics.com/api/tenant/v1/pitches/summary?bucket=day'{ "rows": [ { "bucket": "string", "key": "string", "count": 0 } ], "capped": true}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$include?|array<string>Relations to sideload. createdBy populates included.users with the user who created the pitch, when a person did.
Pitch found, with the seed articles it was created from
application/json- response
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$newsdeskId*stringNewsdesk identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$eventClusterId*stringThe event cluster the pitch was generated from; null for a pitch a person created, which has none
^[0-7][0-9A-HJKMNP-TV-Z]{25}$title*stringGenerated pitch headline
summary*stringGenerated pitch summary
whyItMatters*stringGenerated rationale for why this pitch fits the newsdesk's beat
score*integerRelevance score for the newsdesk, 0-100 inclusive
0 <= value <= 100contentLanguage*stringLanguage the pitch content was generated in
eventDate?stringISO 8601 date (YYYY-MM-DD) of the underlying event, when determinable
datestatus*stringEditorial review status
"draft""new""approved""dismissed"creationSource*stringWhat produced this pitch: auto for the engine, from an event cluster; manual for a person
"auto""manual"statusChangedAt?stringISO 8601 timestamp of the most recent status change
date-timestatusChangedBy?stringUser who made the most recent status change
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdBy?stringUser who created this pitch; present only on a pitch a person created, and absent once that user is deleted
^[0-7][0-9A-HJKMNP-TV-Z]{25}$manualRequestId?stringThe manual pitch request this pitch was built from, which its creator can read to edit the seeds; absent on an engine pitch
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdAt*stringISO 8601 creation timestamp
date-timestoryId?stringIdentifier of the story minted from this pitch on approval, when one exists
^[0-7][0-9A-HJKMNP-TV-Z]{25}$seeds*array<>The articles the pitch was created from, in order; empty for an engine pitch
included?curl -X GET 'https://api.nuvelics.com/api/tenant/v1/pitches/string'{ "id": "string", "orgId": "string", "newsdeskId": "string", "eventClusterId": "string", "title": "string", "summary": "string", "whyItMatters": "string", "score": 0, "contentLanguage": "string", "eventDate": "2019-08-24", "status": "draft", "creationSource": "auto", "statusChangedAt": "2019-08-24T14:15:22Z", "statusChangedBy": "string", "createdBy": "string", "manualRequestId": "string", "createdAt": "2019-08-24T14:15:22Z", "storyId": "string", "seeds": [ { "articleId": "string", "kind": "url", "url": "string", "title": "string", "excerpt": "string", "publishedAt": "2019-08-24T14:15:22Z", "publisherKey": "string", "iconUrl": "string", "position": 0, "assetId": "string", "useAsMedia": true, "useAsMediaSetBy": "suggested" } ], "included": { "users": { "property1": { "id": "string", "name": "string", "email": "string" }, "property2": { "id": "string", "name": "string", "email": "string" } } }}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Every feed-capable connection's delivery state for this pitch, including one whose desk is unmapped or predates its own mapping
application/json- response
items*array<>curl -X GET 'https://api.nuvelics.com/api/tenant/v1/pitches/string/feed-deliveries'{ "items": [ { "id": "string", "connection": { "id": "string", "displayName": "string" }, "vendor": "string", "provider": "string", "state": "sending", "attempts": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "deliveredAt": "2019-08-24T14:15:22Z", "nextAttemptAt": "2019-08-24T14:15:22Z", "failureReason": "string" } ]}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Pitch approved
application/json- response
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$newsdeskId*stringNewsdesk identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$eventClusterId*stringThe event cluster the pitch was generated from; null for a pitch a person created, which has none
^[0-7][0-9A-HJKMNP-TV-Z]{25}$title*stringGenerated pitch headline
summary*stringGenerated pitch summary
whyItMatters*stringGenerated rationale for why this pitch fits the newsdesk's beat
score*integerRelevance score for the newsdesk, 0-100 inclusive
0 <= value <= 100contentLanguage*stringLanguage the pitch content was generated in
eventDate?stringISO 8601 date (YYYY-MM-DD) of the underlying event, when determinable
datestatus*stringEditorial review status
"draft""new""approved""dismissed"creationSource*stringWhat produced this pitch: auto for the engine, from an event cluster; manual for a person
"auto""manual"statusChangedAt?stringISO 8601 timestamp of the most recent status change
date-timestatusChangedBy?stringUser who made the most recent status change
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdBy?stringUser who created this pitch; present only on a pitch a person created, and absent once that user is deleted
^[0-7][0-9A-HJKMNP-TV-Z]{25}$manualRequestId?stringThe manual pitch request this pitch was built from, which its creator can read to edit the seeds; absent on an engine pitch
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdAt*stringISO 8601 creation timestamp
date-timestoryId?stringIdentifier of the story minted from this pitch on approval, when one exists
^[0-7][0-9A-HJKMNP-TV-Z]{25}$curl -X POST 'https://api.nuvelics.com/api/tenant/v1/pitches/string/approve'{ "id": "string", "orgId": "string", "newsdeskId": "string", "eventClusterId": "string", "title": "string", "summary": "string", "whyItMatters": "string", "score": 0, "contentLanguage": "string", "eventDate": "2019-08-24", "status": "draft", "creationSource": "auto", "statusChangedAt": "2019-08-24T14:15:22Z", "statusChangedBy": "string", "createdBy": "string", "manualRequestId": "string", "createdAt": "2019-08-24T14:15:22Z", "storyId": "string"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Pitch dismissed
application/json- response
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$newsdeskId*stringNewsdesk identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$eventClusterId*stringThe event cluster the pitch was generated from; null for a pitch a person created, which has none
^[0-7][0-9A-HJKMNP-TV-Z]{25}$title*stringGenerated pitch headline
summary*stringGenerated pitch summary
whyItMatters*stringGenerated rationale for why this pitch fits the newsdesk's beat
score*integerRelevance score for the newsdesk, 0-100 inclusive
0 <= value <= 100contentLanguage*stringLanguage the pitch content was generated in
eventDate?stringISO 8601 date (YYYY-MM-DD) of the underlying event, when determinable
datestatus*stringEditorial review status
"draft""new""approved""dismissed"creationSource*stringWhat produced this pitch: auto for the engine, from an event cluster; manual for a person
"auto""manual"statusChangedAt?stringISO 8601 timestamp of the most recent status change
date-timestatusChangedBy?stringUser who made the most recent status change
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdBy?stringUser who created this pitch; present only on a pitch a person created, and absent once that user is deleted
^[0-7][0-9A-HJKMNP-TV-Z]{25}$manualRequestId?stringThe manual pitch request this pitch was built from, which its creator can read to edit the seeds; absent on an engine pitch
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdAt*stringISO 8601 creation timestamp
date-timestoryId?stringIdentifier of the story minted from this pitch on approval, when one exists
^[0-7][0-9A-HJKMNP-TV-Z]{25}$curl -X POST 'https://api.nuvelics.com/api/tenant/v1/pitches/string/dismiss'{ "id": "string", "orgId": "string", "newsdeskId": "string", "eventClusterId": "string", "title": "string", "summary": "string", "whyItMatters": "string", "score": 0, "contentLanguage": "string", "eventDate": "2019-08-24", "status": "draft", "creationSource": "auto", "statusChangedAt": "2019-08-24T14:15:22Z", "statusChangedBy": "string", "createdBy": "string", "manualRequestId": "string", "createdAt": "2019-08-24T14:15:22Z", "storyId": "string"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Pitch reopened: back in the review queue as new
application/json- response
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$newsdeskId*stringNewsdesk identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$eventClusterId*stringThe event cluster the pitch was generated from; null for a pitch a person created, which has none
^[0-7][0-9A-HJKMNP-TV-Z]{25}$title*stringGenerated pitch headline
summary*stringGenerated pitch summary
whyItMatters*stringGenerated rationale for why this pitch fits the newsdesk's beat
score*integerRelevance score for the newsdesk, 0-100 inclusive
0 <= value <= 100contentLanguage*stringLanguage the pitch content was generated in
eventDate?stringISO 8601 date (YYYY-MM-DD) of the underlying event, when determinable
datestatus*stringEditorial review status
"draft""new""approved""dismissed"creationSource*stringWhat produced this pitch: auto for the engine, from an event cluster; manual for a person
"auto""manual"statusChangedAt?stringISO 8601 timestamp of the most recent status change
date-timestatusChangedBy?stringUser who made the most recent status change
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdBy?stringUser who created this pitch; present only on a pitch a person created, and absent once that user is deleted
^[0-7][0-9A-HJKMNP-TV-Z]{25}$manualRequestId?stringThe manual pitch request this pitch was built from, which its creator can read to edit the seeds; absent on an engine pitch
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdAt*stringISO 8601 creation timestamp
date-timestoryId?stringIdentifier of the story minted from this pitch on approval, when one exists
^[0-7][0-9A-HJKMNP-TV-Z]{25}$curl -X POST 'https://api.nuvelics.com/api/tenant/v1/pitches/string/reopen'{ "id": "string", "orgId": "string", "newsdeskId": "string", "eventClusterId": "string", "title": "string", "summary": "string", "whyItMatters": "string", "score": 0, "contentLanguage": "string", "eventDate": "2019-08-24", "status": "draft", "creationSource": "auto", "statusChangedAt": "2019-08-24T14:15:22Z", "statusChangedBy": "string", "createdBy": "string", "manualRequestId": "string", "createdAt": "2019-08-24T14:15:22Z", "storyId": "string"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Draft submitted: in the review queue as new
application/json- response
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$newsdeskId*stringNewsdesk identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$eventClusterId*stringThe event cluster the pitch was generated from; null for a pitch a person created, which has none
^[0-7][0-9A-HJKMNP-TV-Z]{25}$title*stringGenerated pitch headline
summary*stringGenerated pitch summary
whyItMatters*stringGenerated rationale for why this pitch fits the newsdesk's beat
score*integerRelevance score for the newsdesk, 0-100 inclusive
0 <= value <= 100contentLanguage*stringLanguage the pitch content was generated in
eventDate?stringISO 8601 date (YYYY-MM-DD) of the underlying event, when determinable
datestatus*stringEditorial review status
"draft""new""approved""dismissed"creationSource*stringWhat produced this pitch: auto for the engine, from an event cluster; manual for a person
"auto""manual"statusChangedAt?stringISO 8601 timestamp of the most recent status change
date-timestatusChangedBy?stringUser who made the most recent status change
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdBy?stringUser who created this pitch; present only on a pitch a person created, and absent once that user is deleted
^[0-7][0-9A-HJKMNP-TV-Z]{25}$manualRequestId?stringThe manual pitch request this pitch was built from, which its creator can read to edit the seeds; absent on an engine pitch
^[0-7][0-9A-HJKMNP-TV-Z]{25}$createdAt*stringISO 8601 creation timestamp
date-timestoryId?stringIdentifier of the story minted from this pitch on approval, when one exists
^[0-7][0-9A-HJKMNP-TV-Z]{25}$curl -X POST 'https://api.nuvelics.com/api/tenant/v1/pitches/string/submit'{ "id": "string", "orgId": "string", "newsdeskId": "string", "eventClusterId": "string", "title": "string", "summary": "string", "whyItMatters": "string", "score": 0, "contentLanguage": "string", "eventDate": "2019-08-24", "status": "draft", "creationSource": "auto", "statusChangedAt": "2019-08-24T14:15:22Z", "statusChangedBy": "string", "createdBy": "string", "manualRequestId": "string", "createdAt": "2019-08-24T14:15:22Z", "storyId": "string"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$articleId*stringArticle identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$application/json- body
useAsMedia*booleanWhether the image seed becomes the story's media once the pitch is approved
The image seed's media toggle, as set
application/json- response
articleId*stringArticle identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$useAsMedia*booleancurl -X POST 'https://api.nuvelics.com/api/tenant/v1/pitches/string/seeds/string/media' \ -H 'Content-Type: application/json' \ -d '{ "useAsMedia": true}'{ "articleId": "string", "useAsMedia": true}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringPitch identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$The media of a manual pitch's seed articles that came from a publisher, chosen as an event cluster's media is: deduplicated by URL, ranked by area and capped at 48. A recalled seed's media is left out, and so is the journalist's own uploaded image, which the pitch lists among its seeds. Empty for an engine pitch, whose media is its event cluster's. An item's credit is the media's own only
application/json- response
items*array<>curl -X GET 'https://api.nuvelics.com/api/tenant/v1/pitches/string/media'{ "items": [ { "mediaType": "image", "assetUrl": "string", "posterUrl": "string", "caption": "string", "width": 0, "height": 0, "durationMs": 0, "credit": "string", "usageTerms": [ "string" ], "sourceArticleId": "string", "assetId": "string", "photoVendor": true } ]}