Impact Stories
Read an Impact Story
Returns editorial detail, assets, current source previews, related records, offers, publication evidence and consent releases. Requires the impact_stories feature. Requires permission: one of impact_stories_view, impact_stories_manage, impact_stories_approve, impact_stories_publish, impact_stories_import.
GET
/
admin
/
impact-stories
/
{storyId}
Read an Impact Story
curl --request GET \
--url https://api.gratona.com/v1/admin/impact-stories/{storyId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/impact-stories/{storyId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/impact-stories/{storyId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/impact-stories/{storyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/impact-stories/{storyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/impact-stories/{storyId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/impact-stories/{storyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": 42,
"primary_program_id": 42,
"primary_entity_id": 42,
"primary_donor_id": 42,
"title": "Education update",
"headline": "Education update",
"summary": "Education update",
"story_type": "Education update",
"source_type": "Education update",
"source_external_id": "Education update",
"status": "draft",
"privacy_level": "internal",
"consent_status": "unknown",
"story_date": "2026-10-20",
"asset_count": 2,
"offer_count": 2,
"publication_count": 2,
"primary_asset": {
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"upload_id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"source_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {},
"created_by_user_id": 42,
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"preview": {
"id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"provider": "Education update",
"available": true,
"open_source": true,
"workspace_file_id": "Education update",
"preview_url": "Education update",
"thumbnail_url": "Education update",
"source_url": "Education update",
"download_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {}
}
},
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"reach": {
"audience": "Education update",
"blocked_count": 2,
"held_back": true,
"blocked_message": "Education update",
"blocked_files": [
{
"file_ref": "Education update",
"reason": "Education update"
}
]
},
"slug": "Education update",
"body": "Education update",
"pull_quote": "Education update",
"audience_json": {},
"tags_json": {},
"impact_metrics_json": {},
"source_payload_json": {},
"governance_json": {},
"approved_at": "2026-10-20T12:00:00Z",
"archived_at": "2026-10-20T12:00:00Z",
"assets": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"upload_id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"source_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {},
"created_by_user_id": 42,
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"preview": {
"id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"provider": "Education update",
"available": true,
"open_source": true,
"workspace_file_id": "Education update",
"preview_url": "Education update",
"thumbnail_url": "Education update",
"source_url": "Education update",
"download_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {}
}
}
],
"relations": [
{
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
}
],
"offers": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"created_by_user_id": 42,
"approved_by_user_id": 42,
"title": "Education update",
"status": "Education update",
"beneficiary_label": "Education update",
"problem_statement": "Education update",
"solution_statement": "Education update",
"cost_currency": "Education update",
"cost_label": "Education update",
"hope_statement": "Education update",
"ask_copy": "Education update",
"donor_safe_summary": "Education update",
"cost_amount": "25.00",
"suggested_audience_json": {},
"channel_copy_json": {},
"source_payload_json": {},
"approved_at": "2026-10-20T12:00:00Z",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z"
}
],
"publications": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"impact_story_offer_id": 42,
"target_id": 42,
"created_by_user_id": 42,
"channel": "Education update",
"status": "Education update",
"target_type": "Education update",
"target_url": "Education update",
"audience_snapshot_json": {},
"payload_json": {},
"published_at": "2026-10-20T12:00:00Z",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z"
}
],
"consent_releases": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"impact_story_intake_path_id": 42,
"release_upload_id": 42,
"revoked_by_user_id": 42,
"subject_id": 42,
"status": "Education update",
"consent_scope": "Education update",
"signer_name": "Education update",
"signer_email": "Education update",
"signer_role": "Education update",
"signature_text": "Education update",
"release_text": "Education update",
"release_file_name": "Education update",
"release_file_key": "Education update",
"release_file_mime": "Education update",
"evidence_kind": "Education update",
"subject_type": "Education update",
"signed_at": "2026-10-20T12:00:00Z",
"valid_from": "2026-10-20T12:00:00Z",
"expires_at": "2026-10-20T12:00:00Z",
"revoked_at": "2026-10-20T12:00:00Z",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"metadata_json": {}
}
],
"primary_program": {
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
},
"primary_entity": {
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
},
"primary_donor": {
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
}
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Not Found",
"status": "error"
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Story id in the current organization.
Response
Operation result.
Detailed governed story. Related records are filtered by current user access; unavailable references can be null.
Show child attributes
Show child attributes
⌘I
Read an Impact Story
curl --request GET \
--url https://api.gratona.com/v1/admin/impact-stories/{storyId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/impact-stories/{storyId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/impact-stories/{storyId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/impact-stories/{storyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/impact-stories/{storyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/impact-stories/{storyId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/impact-stories/{storyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": 42,
"primary_program_id": 42,
"primary_entity_id": 42,
"primary_donor_id": 42,
"title": "Education update",
"headline": "Education update",
"summary": "Education update",
"story_type": "Education update",
"source_type": "Education update",
"source_external_id": "Education update",
"status": "draft",
"privacy_level": "internal",
"consent_status": "unknown",
"story_date": "2026-10-20",
"asset_count": 2,
"offer_count": 2,
"publication_count": 2,
"primary_asset": {
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"upload_id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"source_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {},
"created_by_user_id": 42,
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"preview": {
"id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"provider": "Education update",
"available": true,
"open_source": true,
"workspace_file_id": "Education update",
"preview_url": "Education update",
"thumbnail_url": "Education update",
"source_url": "Education update",
"download_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {}
}
},
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"reach": {
"audience": "Education update",
"blocked_count": 2,
"held_back": true,
"blocked_message": "Education update",
"blocked_files": [
{
"file_ref": "Education update",
"reason": "Education update"
}
]
},
"slug": "Education update",
"body": "Education update",
"pull_quote": "Education update",
"audience_json": {},
"tags_json": {},
"impact_metrics_json": {},
"source_payload_json": {},
"governance_json": {},
"approved_at": "2026-10-20T12:00:00Z",
"archived_at": "2026-10-20T12:00:00Z",
"assets": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"upload_id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"source_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {},
"created_by_user_id": 42,
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"preview": {
"id": 42,
"asset_type": "Education update",
"title": "Education update",
"caption": "Education update",
"provider": "Education update",
"available": true,
"open_source": true,
"workspace_file_id": "Education update",
"preview_url": "Education update",
"thumbnail_url": "Education update",
"source_url": "Education update",
"download_url": "Education update",
"drive_file_id": "Education update",
"consent_status": "unknown",
"is_primary": true,
"metadata_json": {}
}
}
],
"relations": [
{
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
}
],
"offers": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"created_by_user_id": 42,
"approved_by_user_id": 42,
"title": "Education update",
"status": "Education update",
"beneficiary_label": "Education update",
"problem_statement": "Education update",
"solution_statement": "Education update",
"cost_currency": "Education update",
"cost_label": "Education update",
"hope_statement": "Education update",
"ask_copy": "Education update",
"donor_safe_summary": "Education update",
"cost_amount": "25.00",
"suggested_audience_json": {},
"channel_copy_json": {},
"source_payload_json": {},
"approved_at": "2026-10-20T12:00:00Z",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z"
}
],
"publications": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"impact_story_offer_id": 42,
"target_id": 42,
"created_by_user_id": 42,
"channel": "Education update",
"status": "Education update",
"target_type": "Education update",
"target_url": "Education update",
"audience_snapshot_json": {},
"payload_json": {},
"published_at": "2026-10-20T12:00:00Z",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z"
}
],
"consent_releases": [
{
"id": 42,
"client_id": 42,
"impact_story_id": 42,
"impact_story_intake_path_id": 42,
"release_upload_id": 42,
"revoked_by_user_id": 42,
"subject_id": 42,
"status": "Education update",
"consent_scope": "Education update",
"signer_name": "Education update",
"signer_email": "Education update",
"signer_role": "Education update",
"signature_text": "Education update",
"release_text": "Education update",
"release_file_name": "Education update",
"release_file_key": "Education update",
"release_file_mime": "Education update",
"evidence_kind": "Education update",
"subject_type": "Education update",
"signed_at": "2026-10-20T12:00:00Z",
"valid_from": "2026-10-20T12:00:00Z",
"expires_at": "2026-10-20T12:00:00Z",
"revoked_at": "2026-10-20T12:00:00Z",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"metadata_json": {}
}
],
"primary_program": {
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
},
"primary_entity": {
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
},
"primary_donor": {
"record_type": "Education update",
"record_id": 42,
"label": "Education update",
"url": "Education update",
"relationship_role": "Education update"
}
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Not Found",
"status": "error"
}