Gist Content API
This document describes how publisher partners can push articles to ProRata using our ingest API. It supports both real-time article delivery and bulk ingestion for archived content.
This push-based approach is recommended because:
- Publishers can send content as soon as it's available (ideal for breaking news)
- It removes the dependency on crawlers and scheduled fetches
- It minimizes errors from network timeouts or crawl failures
- It allows publishers to manage their own submission flow
Key Concepts
Publisher Group:
A Publisher Group represents a collection of related publications managed under one umbrella. For example, a large media company might have multiple publications, each with its own domain or external ID, but all fall under the same Publisher Group.
The API key for authentication is issued at the Publisher Group level, allowing all associated publications to submit articles through the same credentials.
Publication (or Publisher):
An individual publication or outlet within a Publisher Group. Publications may share the same domain or have distinct external IDs to differentiate them.
API Overview
The ingest API allows partners to submit one or multiple articles. A unique API key is issued at the Publisher Group level for authentication.
Authentication is required for all endpoints.
Authentication
All requests require an API key. Include your key in the Authorization
header using the Bearer
scheme:
Authorization: Bearer <your-api-key>
API keys are provided during onboarding. Contact us if you need access.
Submit a Single Article
Use this endpoint to submit current or new articles.
- Method:
POST
- Endpoint:
/ingest/article
- Content-Type:
application/json
Parameters
Field | Type | Required | Description |
---|---|---|---|
publication_external_id | string | ✅ | Used to identify the publication. |
publish_date | datetime | ✅ | ISO 8601 format (e.g., 2025-06-27T14:45:00Z ). |
article_thumbnail_url | string | ❌ | Optional thumbnail image URL for display. |
title | string | ✅ | Title of the article. |
content_type | enum | ✅ | One of: text , video , image . |
external_url | string | ✅ | URL to the article on your site. |
canonical_url | string | ❌ | Original source URL (for syndicated articles). |
content (if text ) | string | ✅ | HTML content of the article. Required for text type. |
Request Example
{
"publication_external_id": "BillingsGazette",
"publish_date": "2025-02-18T22:25:35Z",
"title": "Finland again ranked happiest country",
"content_type": "text",
"external_url": "https://billingsgazette.com/article.html",
"content": "<div><h1>Header</h1><p>Some content here.</p></div>"
}
Success Response
{
"status": "success",
"message": "Ingest was successful."
}
Submit Multiple Articles
Use this endpoint to ingest archived or historical articles in bulk.
- Method:
POST
- Endpoint:
/ingest/multiple_articles
- Content-Type:
application/json
Each article must include:
Field | Type | Required | Description |
---|---|---|---|
publication_domain | string | ✅ | Domain of the article’s source publication. |
article_date | datetime | ✅ | Publication date and time. |
title | string | ✅ | Title of the article. |
content | string | ✅ | HTML content of the article. |
url | string | ✅ | Article URL. |
canonical_url | string | ❌ | Optional original source URL. |
Request Example
[
{
"publication_domain": "billingsgazette.com",
"article_date": "2024-01-18T22:25:35Z",
"title": "Finland again ranked happiest country",
"content": "<div><h1>Header</h1><p>Content here.</p></div>",
"url": "https://billingsgazette.com/article1.html"
},
{
"publication_domain": "billingsgazette.com",
"article_date": "2024-02-18T22:25:35Z",
"title": "Some other article",
"content": "<div><h1>Header</h1><p>More content here.</p></div>",
"url": "https://billingsgazette.com/article2.html"
}
]
Success Response
{
"status": "success",
"message": "Ingest was successful."
}
Rate Limits
The default rate limit is:
- 10 requests per minute
If you need a higher rate limit, please contact our support team.
Error Handling
You may encounter the following error responses:
Status Code | Meaning |
---|---|
400 | Invalid or missing parameters |
401 | Unauthorized / invalid API key |
429 | Rate limit exceeded |
500 | Internal server error |
Security Considerations
HTML content submitted via the API should be:
- Sanitized to avoid harmful scripts or embedded content (e.g., XSS)
- Well-formed and free from unsupported tags
ProRata is actively reviewing ingestion content for security risks.
Updated 19 days ago