Get Blog
Get one blog post by its ID, with the full content in three formats.
GET /blogs/{blogId}Use this while you wait for the native WordPress and Webflow integrations. Pull the post in the format your tool needs, then push it into your CMS.
Authentication
Send your API key as a bearer token. See Authentication .
Path parameters
| Parameter | Type | Notes |
blogId | UUID | The ID of the blog post. Get it from List blog posts . |
Query parameters
| Parameter | Type | Notes |
projectId | UUID | Required. The project the post belongs to. |
Response
{
"blogId": "b1a2c3d4-e5f6-4a70-8b9c-0d1e2f3a4b5c",
"projectId": "8a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d",
"title": "How to price a SaaS product",
"slug": "how-to-price-a-saas-product",
"status": "completed",
"wordCount": 1840,
"qualityScore": 87,
"metadata": {
"summary": "A short guide to value based pricing for early stage SaaS.",
"keywords": ["saas pricing", "value based pricing"],
"coverImage": "A pricing table on a laptop screen, soft daylight.",
"callToAction": "Start your free trial",
"metaDescription": "Learn how to price a SaaS product with a value based method.",
"estimatedReadTimeMinutes": 7
},
"content": {
"markdown": "# How to price a SaaS productValue based pricing starts with...",
"html": "How to price a SaaS product
Value based pricing starts with...",
"plainText": "How to price a SaaS product
Value based pricing starts with..."
},
"images": [
{
"type": "cover-image",
"altText": "A pricing table on a laptop screen",
"url": " https://storage.googleapis.com/...signed ...",
"createdAt": "2026-08-25T08:31:00.000Z"
}
],
"createdAt": "2026-08-25T08:30:00.000Z",
"updatedAt": "2026-08-26T09:00:00.000Z"
}
See List blog posts for the meaning of the shared fields.
Content
The content object holds the same post in three formats. Pick the one your tool accepts.
| Field | Format | Use it for |
content.markdown | Markdown | The source format. Best for a CMS that accepts Markdown. |
content.html | HTML | Paste straight into WordPress, Webflow, or any rich text editor. |
content.plainText | Plain text | Text only, no tags. Good for previews, search, or email. |
The content is taken from the latest version of the post. If the post has been rewritten, you get the rewritten version.
Images
| Field | Type | Notes |
type | string | One of cover-image, blog-image, newsletter-image, content-plan-image. |
altText | string | The alt text for the image. |
url | string or null | A temporary URL for the image. It expires. Fetch the post again for a fresh URL. |
createdAt | string | When the image was created, as an ISO date. |
Errors
Returns 404 if no blog post with that ID exists in the project.
Example
curl "https://app.contendar.com/api/v1/blogs/b1a2c3d4-e5f6-4a70-8b9c-0d1e2f3a4b5c?projectId=YOUR_PROJECT_ID" \
-H "Authorization: Bearer ck_your_key_here"