1. Get an API key
Go to pullstory.com/dashboard/api-keys and click Create key . Your key starts with ps_live_ and is shown only once — copy it somewhere safe.
export PULLSTORY_API_KEY = "ps_live_..."
2. Create a pull story
Point the API at any GitHub PR you have access to.
curl https://pullstory.com/api/v1/stories \
-H "Authorization: Bearer $PULLSTORY_API_KEY " \
-H "Content-Type: application/json" \
-d '{
"owner": "vercel",
"repo": "next.js",
"number": 12345
}'
You’ll get back a story ID and a generating status:
{
"id" : "story_01hq7..." ,
"status" : "generating" ,
"url" : "https://pullstory.com/pr/vercel/next.js/12345" ,
"owner" : "vercel" ,
"repo" : "next.js" ,
"number" : 12345 ,
"created_at" : "2026-04-20T15:00:00Z"
}
3. Poll until ready
Generation typically takes 60-120 seconds depending on PR size.
curl https://pullstory.com/api/v1/stories/story_01hq7... \
-H "Authorization: Bearer $PULLSTORY_API_KEY "
Response once complete:
{
"id" : "story_01hq7..." ,
"status" : "ready" ,
"url" : "https://pullstory.com/pr/vercel/next.js/12345" ,
"duration_seconds" : 142 ,
"scenes" : 8 ,
"ready_at" : "2026-04-20T15:02:22Z"
}
4. Open the URL
url is the shareable pull story link. Send it to teammates, embed it in a PR comment, or drop it in Slack.
The URL is deterministic — always pullstory.com/pr/{owner}/{repo}/{number} — so you can construct it before generation completes if you want to post the link immediately.
What’s next?
Use with Claude Code Ask Claude Code to create a PR + pull story in one command.
Auto-generate via GitHub App Install the GitHub App and every PR auto-generates.
Rate limits How many requests per minute, how many minutes per month.
Error handling Error codes, retry strategy, webhooks on failure.