Press Release API documentation

Distribute press releases programmatically with a simple, predictable REST API — or let an AI assistant wire it up for you in minutes.

A terminal issuing a press release API request and receiving a 201 Created response

Send your first release in one request

The News Source API is a JSON-over-HTTPS REST interface. Authenticate with a bearer token, POST your release, and we handle distribution to Google News, Bing News, MSN and the rest of the network.

Base URL & authentication

All requests go to a single, versioned base URL over HTTPS:

https://api.newssourcepr.com/v1

Every request must include your secret key in an Authorization header as a bearer token. Keys are scoped to your account and can be rotated at any time.

  • JSON request and response bodies, UTF-8 encoded.
  • Idempotent submissions keyed by your reference field.
  • HTTPS only — plain HTTP requests are rejected.

Looking for the product overview instead? See the press release API service page.

submit-release.sh

# Submit a press release for distribution
curl -X POST https://api.newssourcepr.com/v1/releases \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Acme Robotics Launches Autonomous Warehouse Platform",
    "body": "Acme Robotics today announced the general availability...",
    "company": "Acme Robotics, Inc.",
    "contact_email": "press@acmerobotics.com",
    "category": "Technology",
    "distribution": "full-bundle",
    "reference": "acme-launch-2026-06"
  }'

Three ways to integrate

Write it yourself, have an AI assistant write it for you, or skip the code entirely.

Generate API keys in your client area

Create, label and revoke API keys from your account dashboard. Use separate keys for production and testing, and pass the key as Authorization: Bearer YOUR_API_KEY on every call. Never embed keys in client-side code — keep them server-side and rotate immediately if one is exposed.

Core REST endpoints

Four endpoints cover the full lifecycle: submit a release, poll its distribution status, fetch published links, and verify your integration against the sandbox.

POST /releases

Submit a new press release for distribution and receive a release ID for tracking.

GET /status/{id}

Retrieve the current distribution status of a release — queued, processing or published.

GET /links/{id}

List the live published URLs and the outlets where a release has appeared.

GET /test

Sandbox health check — verify authentication and connectivity without consuming distribution credits.

What a release looks like

A successful submission returns the release ID, current status and — once distributed — the outlets and live links.

GET /status/rel_8f3c21a9

{
  "id": "rel_8f3c21a9",
  "reference": "acme-launch-2026-06",
  "status": "published",
  "submitted_at": "2026-06-18T14:02:11Z",
  "published_at": "2026-06-18T15:02:47Z",
  "distribution": "full-bundle",
  "links_total": 1000,
  "links": [
    { "outlet": "Google News", "url": "https://news.google.com/..." },
    { "outlet": "Bing News",   "url": "https://www.bing.com/news/..." },
    { "outlet": "MSN",         "url": "https://www.msn.com/..." }
  ]
}

Outlets you can target

Pass a single outlet in the distribution field, or full-bundle to reach every outlet below in one call.

Google News logo
Bing News logo
MSN logo
USA TODAY logo
The Chronicle Journal logo
The AI Journal logo
altafiber logo
CenturyLink logo
XPR logo

Production-ready capabilities

Everything you need to integrate press release distribution confidently and at scale.

Webhooks

Subscribe to status events and receive a signed callback the moment a release is published, so you never have to poll.

Rate limits

Generous, transparent limits with X-RateLimit headers on every response and clear 429 retry guidance.

Sandbox / test mode

Use a test key to validate payloads end to end against /test without spending credits or publishing live.

Integration questions

How does authentication work?
Generate an API key in your client area and send it on every request as an Authorization: Bearer YOUR_API_KEY header. Keys are server-side secrets — never expose them in browser or mobile clients. You can issue multiple keys and revoke any of them instantly.
How do I integrate the API if I have no technical experience?
You have two no-code routes. The fastest is PR Software, which connects to our distribution network in one click — you submit and track releases from a ready-made interface without writing a line of code. The second is to let an AI assistant do the work: open our prepared Claude prompt, tell it what you are building, and it will write and explain the integration for you. If you would rather we walk you through it, get in touch.
What data formats are supported?
Requests and responses are JSON encoded in UTF-8. The release body accepts plain text or basic HTML for paragraphs, links and lists. Timestamps are returned in ISO 8601 (UTC), and each release carries a reference field you control for idempotency and reconciliation.
What are the rate limits?
Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. If you exceed your tier's limit you receive a 429 Too Many Requests with a Retry-After value. Need higher throughput for bulk distribution? Talk to us about a volume plan.
Is there a sandbox for testing?
Yes. Use a test API key and call GET /test to confirm connectivity and authentication. Submissions made with a test key are validated and echoed back but never published live and never consume distribution credits — ideal for CI pipelines and staging.
Which outlets can I target from the API?
Pass a distribution value to target a single outlet, or "full-bundle" to send to every outlet at once. The identifiers and prices match the pricing table exactly.