Nuvelics documentation
APIAPI reference

Outputs

Add outputs to a story, edit, regenerate and check them, render a post's cards, and file or publish them to a content management system or social account.

List a story's outputs

GET
/api/tenant/v1/stories/{id}/outputs

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

The story's outputs, newest request first

application/json
  1. response
items*array<>
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs'
Example Response
{  "items": [    {      "id": "string",      "orgId": "string",      "storyId": "string",      "outputTemplateId": "string",      "type": "web_article",      "status": "pending",      "attempts": 0,      "generatedContent": {        "headline": "string",        "standfirst": "string",        "body": "string",        "byline": "string",        "featuredImage": {          "photo": {            "source": "archive",            "mamConfigId": "string",            "itemId": "string"          },          "credit": "string",          "alt": "string"        },        "images": [          {            "photo": {              "source": "archive",              "mamConfigId": "string",              "itemId": "string"            },            "credit": "string",            "alt": "string",            "caption": "string"          }        ]      },      "editedContent": {        "headline": "string",        "standfirst": "string",        "body": "string",        "byline": "string",        "featuredImage": {          "photo": {            "source": "archive",            "mamConfigId": "string",            "itemId": "string"          },          "credit": "string",          "alt": "string"        },        "images": [          {            "photo": {              "source": "archive",              "mamConfigId": "string",              "itemId": "string"            },            "credit": "string",            "alt": "string",            "caption": "string"          }        ]      },      "candidateContent": {        "headline": "string",        "standfirst": "string",        "body": "string",        "byline": "string",        "featuredImage": {          "photo": {            "source": "archive",            "mamConfigId": "string",            "itemId": "string"          },          "credit": "string",          "alt": "string"        },        "images": [          {            "photo": {              "source": "archive",              "mamConfigId": "string",              "itemId": "string"            },            "credit": "string",            "alt": "string",            "caption": "string"          }        ]      },      "candidateGeneratedAt": "2019-08-24T14:15:22Z",      "previousContent": {        "headline": "string",        "standfirst": "string",        "body": "string",        "byline": "string",        "featuredImage": {          "photo": {            "source": "archive",            "mamConfigId": "string",            "itemId": "string"          },          "credit": "string",          "alt": "string"        },        "images": [          {            "photo": {              "source": "archive",              "mamConfigId": "string",              "itemId": "string"            },            "credit": "string",            "alt": "string",            "caption": "string"          }        ]      },      "previousGeneratedAt": "2019-08-24T14:15:22Z",      "contentVersion": 0,      "textVersion": 0,      "error": "string",      "generatedAt": "2019-08-24T14:15:22Z",      "createdBy": "string",      "createdAt": "2019-08-24T14:15:22Z",      "updatedBy": "string",      "updatedAt": "2019-08-24T14:15:22Z",      "siblingOutputId": "string",      "templateName": "string",      "content": {        "headline": "string",        "standfirst": "string",        "body": "string",        "byline": "string",        "featuredImage": {          "photo": {            "source": "archive",            "mamConfigId": "string",            "itemId": "string"          },          "credit": "string",          "alt": "string"        },        "images": [          {            "photo": {              "source": "archive",              "mamConfigId": "string",              "itemId": "string"            },            "credit": "string",            "alt": "string",            "caption": "string"          }        ]      },      "isStale": true,      "wordCount": 0,      "storyboardDurationMs": 0,      "storyboardBand": "short",      "createdByName": "string",      "updatedByName": "string",      "cmsPushCount": 0,      "brandKitId": "string",      "candidateInstructions": "string",      "mediaFlags": [        {          "item": 0,          "field": "string",          "reason": "unverified_quote"        }      ],      "imageFlags": [        {          "field": "string",          "reason": "alt_photo_missing"        }      ],      "quoteFlags": [        {          "field": "string",          "spans": [            "string"          ],          "reason": "dismissed_quote"        }      ],      "claimCheck": {        "state": "none",        "outdatedReason": "edited",        "openCount": 0,        "trace": {          "claims": [            {              "text": "string",              "status": "confirmed",              "verdict": "kept",              "locations": [                {                  "kind": "article_field",                  "field": "headline"                }              ]            }          ],          "unsupported": [            {              "location": {                "kind": "article_field",                "field": "headline"              },              "text": "string"            }          ],          "enrichment": {            "generatedAt": "2019-08-24T14:15:22Z"          }        },        "figures": [          {            "kind": "unconfirmed",            "value": "string",            "location": {              "kind": "article_field",              "field": "headline"            },            "claimIndex": 0          }        ],        "acceptances": [          {            "findingKey": "string",            "acceptedBy": {              "id": "string",              "displayName": "string"            },            "acceptedAt": "2019-08-24T14:15:22Z",            "note": "string",            "checkerWrong": true          }        ]      },      "candidateClaimCheck": {        "state": "none",        "outdatedReason": "edited",        "openCount": 0,        "trace": {          "claims": [            {              "text": "string",              "status": "confirmed",              "verdict": "kept",              "locations": [                {                  "kind": "article_field",                  "field": "headline"                }              ]            }          ],          "unsupported": [            {              "location": {                "kind": "article_field",                "field": "headline"              },              "text": "string"            }          ],          "enrichment": {            "generatedAt": "2019-08-24T14:15:22Z"          }        },        "figures": [          {            "kind": "unconfirmed",            "value": "string",            "location": {              "kind": "article_field",              "field": "headline"            },            "claimIndex": 0          }        ],        "acceptances": [          {            "findingKey": "string",            "acceptedBy": {              "id": "string",              "displayName": "string"            },            "acceptedAt": "2019-08-24T14:15:22Z",            "note": "string",            "checkerWrong": true          }        ]      }    }  ]}

Add an output to a story

POST
/api/tenant/v1/stories/{id}/outputs

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
outputTemplateId*string

Output template identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Output requested; generation starts asynchronously

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs' \  -H 'Content-Type: application/json' \  -d '{  "outputTemplateId": "string"}'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
GET
/api/tenant/v1/stories/{id}/outputs/{outputId}

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

The output, with its effective content and derived fields

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
PATCH
/api/tenant/v1/stories/{id}/outputs/{outputId}

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
headline*string

Article headline

standfirst*string

The dek/subhead; one or two sentences under the headline

body*string

Article body as markdown

byline*string

Byline text; empty when the template asks for no byline

featuredImage?

The image shown above the article; null removes it, and leaving it out keeps the stored one

images?array<>

Inline images; the body places image K with a line ![](image:K), and slots no line names are dropped. Leaving it out keeps the stored list. At most 5 once placed

contentVersion*integer

The contentVersion this draft was edited against; the save is refused if it moved

Range0 <= value

Response Body

Edit saved; the generated draft is unchanged

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X PATCH 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string' \  -H 'Content-Type: application/json' \  -d '{  "headline": "string",  "standfirst": "string",  "body": "string",  "byline": "string",  "contentVersion": 0}'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}

Delete an output

DELETE
/api/tenant/v1/stories/{id}/outputs/{outputId}

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Output deleted

Example Request
curl -X DELETE 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string'
Example Response
Empty
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/regenerate

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
instructions?string

One-off steering for this run only; held until the candidate it produced is accepted or discarded

Lengthlength <= 2000

Response Body

Output returned to the queue for a fresh draft

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/regenerate' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/claim-check

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
subject?"candidate"

Check the pending regenerated draft instead of the article

Value in"candidate"

Response Body

Claim check queued (or already in flight for this text); poll the output until its check leaves pending

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/claim-check' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/claim-findings/{findingKey}/accept

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
findingKey*string
Length1 <= length

Request Body

application/json
  1. body
note*string

Why the finding is accepted; 1 to 1000 characters

Length1 <= length <= 1000
checkerWrong?boolean

Flag the finding as the checker's mistake

Response Body

Finding accepted with the editor's note

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/claim-findings/string/accept' \  -H 'Content-Type: application/json' \  -d '{  "note": "string"}'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/draft/accept

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Candidate accepted; it is now the output's article

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/draft/accept'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/draft/discard

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Candidate discarded; the output's article is unchanged

application/json
  1. response
id*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story this output was generated from

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputTemplateId*string

Template whose rules produced this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
type*string

Output type, snapshotted from the template at creation

Value in"web_article""x_post""instagram_post""tiktok_post""facebook_post""linkedin_post""short_form_video"
status*string

Generation status; carries no push state

Value in"pending""generating""ready""failed"
attempts*integer

Transient-failure retry count for the generation pass

Range0 <= value
generatedContent*|||

What the model wrote; null until the first successful generation

editedContent*|||

The editor's version; null means the generated content is the effective one

candidateContent*|||

A regenerated draft awaiting accept or discard; null when none is pending

candidateGeneratedAt*string

ISO 8601 timestamp the pending candidate was generated; null when none is pending

Formatdate-time
previousContent*|||

The article before the last accepted regeneration replaced it; null before any accept

previousGeneratedAt*string

ISO 8601 timestamp the previous draft was generated; null before any accept

Formatdate-time
contentVersion*integer

How many times the effective article has changed; advanced by a first generation, an accepted candidate and a saved edit

Range0 <= value
textVersion*integer

How many times the text the claim check reads has changed; a check is outdated by an edit once this moves past the version it read

Range0 <= value
error*string

Failure reason; null unless status is failed

generatedAt*string

ISO 8601 timestamp of the most recent successful generation

Formatdate-time
createdBy*string

User who added this output

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedBy*string

User who last changed this output; null when the last change was the generation pass's

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
updatedAt*string

ISO 8601 timestamp of the most recent update

Formatdate-time
siblingOutputId?string

The short-form video output this post's video slot links to; null when the post has no video slot

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
templateName*string

Name of the template whose rules produced this output

content*|||

Effective content: the edited version when present, otherwise the generated one

isStale*boolean

Whether the story has been enriched since this output was generated

wordCount*integer

Word count of the effective article body; null until content exists, and for a post

Range0 <= value
storyboardDurationMs*integer

Total duration of the effective storyboard's scenes in milliseconds; null for any other type or until content exists

Range0 <= value
storyboardBand*string

Where the storyboard's total duration sits against the template's band; null for any other type or until content exists

Value in"short""within""long"null
createdByName*string

Display name of the user who added this output

updatedByName*string

Display name of the user who last changed this output; null when the generation pass did

cmsPushCount*integer

Number of CMS pushes recorded for this output, so the story page can show 'filed' without an N+1

Range0 <= value
brandKitId*string

Id of the brand kit a short-form video or a post's cards would render in now (template kit if active, else the desk's default, else the org's); null for an article or a text-only post, until the output has a storyboard or cards, when no kit resolves, and on reads that do not resolve it

candidateInstructions*string

Steering that produced the pending candidate; null unless a candidate is pending

mediaFlags?array<>

Card fields an editor should look at, on a single-output read of a post with media; absent on other reads

imageFlags?array<>

Article image fields an editor should look at, on a single-output read of an article with images; absent on other reads

quoteFlags?array<>

Text fields quoting words only a since-dismissed key quote holds, which the X publish and the CMS push refuse; on a single-output read only, absent on other reads

claimCheck*

The article's claim check: state, trace, figure findings and acceptances

candidateClaimCheck?

The pending regenerated draft's claim check; null when no draft is pending; absent on list reads

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/draft/discard'
Example Response
{  "id": "string",  "orgId": "string",  "storyId": "string",  "outputTemplateId": "string",  "type": "web_article",  "status": "pending",  "attempts": 0,  "generatedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "editedContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "candidateGeneratedAt": "2019-08-24T14:15:22Z",  "previousContent": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "previousGeneratedAt": "2019-08-24T14:15:22Z",  "contentVersion": 0,  "textVersion": 0,  "error": "string",  "generatedAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedBy": "string",  "updatedAt": "2019-08-24T14:15:22Z",  "siblingOutputId": "string",  "templateName": "string",  "content": {    "headline": "string",    "standfirst": "string",    "body": "string",    "byline": "string",    "featuredImage": {      "photo": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "credit": "string",      "alt": "string"    },    "images": [      {        "photo": {          "source": "archive",          "mamConfigId": "string",          "itemId": "string"        },        "credit": "string",        "alt": "string",        "caption": "string"      }    ]  },  "isStale": true,  "wordCount": 0,  "storyboardDurationMs": 0,  "storyboardBand": "short",  "createdByName": "string",  "updatedByName": "string",  "cmsPushCount": 0,  "brandKitId": "string",  "candidateInstructions": "string",  "mediaFlags": [    {      "item": 0,      "field": "string",      "reason": "unverified_quote"    }  ],  "imageFlags": [    {      "field": "string",      "reason": "alt_photo_missing"    }  ],  "quoteFlags": [    {      "field": "string",      "spans": [        "string"      ],      "reason": "dismissed_quote"    }  ],  "claimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  },  "candidateClaimCheck": {    "state": "none",    "outdatedReason": "edited",    "openCount": 0,    "trace": {      "claims": [        {          "text": "string",          "status": "confirmed",          "verdict": "kept",          "locations": [            {              "kind": "article_field",              "field": "headline"            }          ]        }      ],      "unsupported": [        {          "location": {            "kind": "article_field",            "field": "headline"          },          "text": "string"        }      ],      "enrichment": {        "generatedAt": "2019-08-24T14:15:22Z"      }    },    "figures": [      {        "kind": "unconfirmed",        "value": "string",        "location": {          "kind": "article_field",          "field": "headline"        },        "claimIndex": 0      }    ],    "acceptances": [      {        "findingKey": "string",        "acceptedBy": {          "id": "string",          "displayName": "string"        },        "acceptedAt": "2019-08-24T14:15:22Z",        "note": "string",        "checkerWrong": true      }    ]  }}
GET
/api/tenant/v1/stories/{id}/outputs/{outputId}/photo-candidates

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

The eligible photos, each with a short-lived preview URL; empty when a post's template has no media plan or an article's template has both image switches off

application/json
  1. response
stillFormat*string

The still format a post's candidates were cut to; null for an article, whose candidates are cut to its image sizes, and for an output whose template has no media plan

Value in"3:4""4:5""1:1""9:16"null
items*array<>
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/photo-candidates'
Example Response
{  "stillFormat": "3:4",  "items": [    {      "index": 0,      "ref": {        "source": "archive",        "mamConfigId": "string",        "itemId": "string"      },      "caption": "string",      "whyRelevant": "string",      "entity": "string",      "credit": "string",      "usageTerms": [        "string"      ],      "width": 0,      "height": 0,      "fits": {        "featured": true,        "inline": true      },      "previewUrl": "string"    }  ]}
GET
/api/tenant/v1/stories/{id}/outputs/{outputId}/renders

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

The post's rendered cards, one per card once images have been requested; empty before that

application/json
  1. response
items*array<>
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/renders'
Example Response
{  "items": [    {      "id": "string",      "storyOutputId": "string",      "status": "queued",      "format": "3:4",      "mediaIndex": 0,      "contentVersion": 0,      "brandKitId": "string",      "assetId": "string",      "error": "string",      "claimedAt": "2019-08-24T14:15:22Z",      "renderedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z",      "outdated": true,      "expired": true    }  ]}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/renders

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Every card queued to be rendered; each keeps its previous file until replaced

application/json
  1. response
items*array<>
Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/renders'
Example Response
{  "items": [    {      "id": "string",      "storyOutputId": "string",      "status": "queued",      "format": "3:4",      "mediaIndex": 0,      "contentVersion": 0,      "brandKitId": "string",      "assetId": "string",      "error": "string",      "claimedAt": "2019-08-24T14:15:22Z",      "renderedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z",      "outdated": true,      "expired": true    }  ]}
GET
/api/tenant/v1/stories/{id}/outputs/{outputId}/cms-pushes

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Every CMS push this output has made, newest first

application/json
  1. response
items*array<>
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/cms-pushes'
Example Response
{  "items": [    {      "id": "string",      "orgId": "string",      "storyOutputId": "string",      "storyId": "string",      "cmsConfigId": "string",      "vendor": "arc_xp",      "contentVersion": 0,      "externalId": "string",      "externalUrl": "string",      "pushedBy": "string",      "pushedAt": "2019-08-24T14:15:22Z",      "unchecked": true    }  ]}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/cms-pushes

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
cmsConfigId*string

CMS connection identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Draft created in the CMS and the push recorded

application/json
  1. response
id*string

CMS push record identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyOutputId*string

Output that was pushed

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story the pushed output belongs to; denormalized for join-free history

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
cmsConfigId*string

Target CMS connection identifier; null once the connection has been deleted

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
vendor*string

CMS vendor snapshotted at push time

Value in"arc_xp""wordpress"
contentVersion*integer

The output's content_version at push time

Range0 <= value
externalId*string

Identifier the vendor returned for the created draft

externalUrl*string

Editor deep link built at push time; null when the vendor's response has none

pushedBy*string

User who performed the push

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
pushedAt*string

ISO 8601 timestamp the push completed

Formatdate-time
unchecked*boolean

True when the push was filed while the output's claim check had failed, so this version went out without one

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/cms-pushes' \  -H 'Content-Type: application/json' \  -d '{  "cmsConfigId": "string"}'
Example Response
{  "id": "string",  "orgId": "string",  "storyOutputId": "string",  "storyId": "string",  "cmsConfigId": "string",  "vendor": "arc_xp",  "contentVersion": 0,  "externalId": "string",  "externalUrl": "string",  "pushedBy": "string",  "pushedAt": "2019-08-24T14:15:22Z",  "unchecked": true}
GET
/api/tenant/v1/stories/{id}/outputs/{outputId}/cms-preview

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Query Parameters

cmsConfigId*string

CMS connection identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Exactly the article a push to this connection would file

application/json
  1. response
title*string

The headline as the vendor will receive it

excerpt*string

The standfirst as the vendor will receive it

contentHtml*string

The rendered article body, byline paragraph included, as it will be filed

featuredImage?

The article's featured image; absent when it has none

images?array<>

The inline images in slot order; absent when the article has none

claimCheck*

What the claim check would do to a push of this article right now: the reason it would be refused, if any

quoteCheck*

The article's fields quoting words only a since-dismissed key quote holds; a push is refused while any is listed

Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/cms-preview?cmsConfigId=string'
Example Response
{  "title": "string",  "excerpt": "string",  "contentHtml": "string",  "featuredImage": {    "alt": "string",    "credit": "string",    "previewUrl": "string"  },  "images": [    {      "alt": "string",      "credit": "string",      "previewUrl": "string",      "slot": 0,      "caption": "string"    }  ],  "claimCheck": {    "blocked": "open_findings",    "openCount": 0,    "unchecked": true  },  "quoteCheck": {    "fields": [      {        "field": "string",        "spans": [          "string"        ]      }    ]  }}
GET
/api/tenant/v1/stories/{id}/outputs/{outputId}/social-publishes

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Every social publish this output has made, newest first

application/json
  1. response
items*array<|>
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/social-publishes'
Example Response
{  "items": [    {      "id": "string",      "orgId": "string",      "storyOutputId": "string",      "storyId": "string",      "socialConfigId": "string",      "platform": "x",      "contentVersion": 0,      "claimedAt": "2019-08-24T14:15:22Z",      "publishedBy": "string",      "unchecked": true,      "status": "pending"    }  ]}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/social-publishes

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
socialConfigId*string

Social connection identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Post published and the publish recorded

application/json
  1. response
id*string

Social publish record identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyOutputId*string

Output that was published

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
storyId*string

Story the published output belongs to; denormalized for join-free history

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
socialConfigId*string

Target social connection identifier; null once the connection has been deleted

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
platform*"x"

Platform snapshotted at publish time

Value in"x"
contentVersion*integer

The output's content_version at publish time

Range0 <= value
claimedAt*string

ISO 8601 timestamp the publish was claimed, before the post was sent

Formatdate-time
publishedBy*string

User who published

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
unchecked*boolean

True when the publish was claimed while the output's claim check had failed, so this version went out without one

status*"pending"

Claimed; the platform's post id is not recorded yet

Value in"pending"
Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/social-publishes' \  -H 'Content-Type: application/json' \  -d '{  "socialConfigId": "string"}'
Example Response
{  "id": "string",  "orgId": "string",  "storyOutputId": "string",  "storyId": "string",  "socialConfigId": "string",  "platform": "x",  "contentVersion": 0,  "claimedAt": "2019-08-24T14:15:22Z",  "publishedBy": "string",  "unchecked": true,  "status": "pending"}
POST
/api/tenant/v1/stories/{id}/outputs/{outputId}/social-publishes/{publishId}/check

Authorization

headerx-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.

Path Parameters

id*string

Story identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
outputId*string

Story output identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
publishId*string

Social publish record identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

published: the post was on the account and the record is settled; released: it was not (or the publish's connection was deleted), and the output can be published to that account again; inconclusive: the account posted more in the publish's window than one check reads, and the record stays pending

application/json
  1. response
outcome*"published"
Value in"published"
publish*|
Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/stories/string/outputs/string/social-publishes/string/check'
Example Response
{  "outcome": "published",  "publish": {    "id": "string",    "orgId": "string",    "storyOutputId": "string",    "storyId": "string",    "socialConfigId": "string",    "platform": "x",    "contentVersion": 0,    "claimedAt": "2019-08-24T14:15:22Z",    "publishedBy": "string",    "unchecked": true,    "status": "pending"  }}

Report a problem with this page

On this page