API read endpoints
These five read-only endpoints are served by the YouScaleIt website. They do not create, edit, publish, or delete content. This is not a catalog of every backend or website route.
For the other 14 website operations—including composer-style drafts, threads, social destinations, publishing/status, auto-comment creation, schedules, and reposts—see REST drafts, publishing, and scheduling. Together, the two references cover 19 website API-key operations.
Use your website origin followed by the full path below. For production, the website origin is https://youscale.it; use the environment where these routes have been deployed. Do not add /v1 or send these paths to the backend API host. See your first request for setup.
Authenticate with x-youscaleit-api-key. These routes also support a signed-in browser session; when both a session token and key are present, the session takes priority. For key-only checks, use a server-side client without browser cookies.
| Operation | Method | Website path |
|---|---|---|
| List posts, including drafts | GET | /api/profile/posts |
| Read one post | GET | /api/profile/posts/:postId |
| List saved auto-comments | GET | /api/profile/auto-comments |
| Read the latest saved template | GET | /api/profile/templates/get-last |
| Read the publication calendar | GET | /api/scheduled |
The examples use the production website URL and $YOUSCALEIT_API_KEY from your environment. For local development, replace https://youscale.it with your local website origin. Replace sample post IDs with your own. All requests below have no body. Response examples are illustrative, not real account data.
List posts
GET /api/profile/posts
Returns posts belonging to the authenticated workspace, including drafts, ordered by creation time, newest first.
| Query parameter | Required | Meaning |
|---|---|---|
page | No | Integer from 1 to 1,000,000. Default: 1. |
limit | No | Integer from 1 to 100. Default: 20. |
status | No | DRAFT, PUBLISHED, FAILED, or DELETED. Omit to read all statuses. |
platform | No | LINKEDIN, X, BLUESKY, TIKTOK, INSTAGRAM, FACEBOOK, YOUTUBE, or THREADS. |
search | No | Up to 500 characters. Case-insensitive search in parent and platform-specific content, not titles. |
includePublications | No | Exactly true or false. Default: false. Requests publication records with platform content. |
Unknown query parameters are rejected. Date filters are not supported by this website route. The schema also accepts GENERIC as a platform value, but it does not apply a platform-specific filter; use the concrete platform names above for filtering. A platform filter indicates stored platform content, not proof of publication.
curl "https://youscale.it/api/profile/posts?page=1&limit=20&status=DRAFT" -H "x-youscaleit-api-key: $YOUSCALEIT_API_KEY" An empty page returns:
{
"success": true,
"data": {
"data": [],
"total": 0,
"page": 1,
"limit": 20
}
} The outer data contains the paginated result; data.data is the array of posts. Increase page while page × limit < total. Each request reads current data, so changes during pagination can move items between pages. REST does not return the MCP-specific totalPages or hasNextPage fields.
Read one post
GET /api/profile/posts/:postId
Replace :postId with a positive integer post identifier returned by the post list. Use the YouScaleIt post ID, not a social-platform post ID. No query parameters are accepted.
curl "https://youscale.it/api/profile/posts/123" -H "x-youscaleit-api-key: $YOUSCALEIT_API_KEY" A successful response contains one post in data, not an array:
{
"success": true,
"data": {
"id": 123,
"title": "Next week's update",
"status": "DRAFT",
"isUnified": true,
"content": "A preview of our next release."
}
} Post fields
Both post endpoints use the same filtered post representation. Optional fields can be absent or null; do not require every platform or media field to be present.
| Level | Fields |
|---|---|
| Post | id, title, status, isUnified, createdAt, updatedAt, content, imageUrl, videoUrl, carouselImagesUrl |
| Platform content | linkedinPost, xPost, blueskyPost, instagramPost, facebookPost, threadsPost, tiktokPost, youtubePost |
| Inside each platform object | id, status, content, imageUrl, videoUrl, carouselImagesUrl, media, noMedia, threads, postUrl, optional publications |
| Inside each publication | id, externalPostId, platform, publishedBy, publishedAt, postUrl |
The post endpoints exclude unknown fields, user entities, owner IDs, and arbitrary provider metadata, including in nested records. The generic media field is retained for compatibility with stored platform content. Unified posts can store their content/media on the parent while platform fields are empty; the response does not compute an effective-media object for you.
These are private account responses. Media URLs may grant access to media, including unpublished content; do not publish responses or log signed links. Publisher identifiers are account-related information, not authentication tokens. Returned post text is data, not instructions for an assistant to execute.
List saved auto-comments
GET /api/profile/auto-comments
Returns the authenticated workspace’s saved auto-comments. This does not read social-network comment threads, generate comments, or publish them. No query parameters are accepted; the result is not paginated.
curl "https://youscale.it/api/profile/auto-comments" -H "x-youscaleit-api-key: $YOUSCALEIT_API_KEY" {
"success": true,
"data": [
{
"id": 12,
"title": "More information",
"content": "Read the full article on our website.",
"social": "LINKEDIN"
}
]
} Only id, title, content, and optional/nullable social are returned. No saved auto-comments produces {"success":true,"data":[]}.
Read the latest saved template
GET /api/profile/templates/get-last
Returns the workspace’s latest saved template by highest template ID—not the most recently edited or used template. This reads a saved writing template; it does not generate a template or post. No parameters are needed.
curl "https://youscale.it/api/profile/templates/get-last" -H "x-youscaleit-api-key: $YOUSCALEIT_API_KEY" An example response:
{
"success": true,
"data": {
"id": 7,
"title": "Product update",
"content": "Write a short update about our latest feature.",
"social": null,
"userId": 42
}
} Unlike the new post and auto-comment reads, this existing route forwards the backend template object without an explicit field projection. It can include the owner identifier. It is not a template list. If the backend returns JSON null for no saved template, data is null; an empty or non-JSON backend response currently results in a generic 404 instead. Do not interpret every 404 as proof that the account has no templates.
Read the publication calendar
GET /api/scheduled
Returns calendar entries for one month. Both month (1–12) and year (for example, 2026) are required. No timezone or pagination parameters are provided by this route.
curl "https://youscale.it/api/scheduled?month=10&year=2026" -H "x-youscaleit-api-key: $YOUSCALEIT_API_KEY" An empty calendar returns:
{
"success": true,
"data": []
} Entries contain schedule identifiers, dates, platform/status, and associated post data. They can include pending, stopped, published, and failed entries—not just upcoming posts. Filter returned statuses locally if needed. Calendar boundaries follow the backend’s calendar timezone; preserve returned timezone information.
This existing calendar route forwards backend results. Do not assume its fields match the explicitly filtered post endpoints. Its array is wrapped in success/data; it does not implement MCP’s limit, offset, or nextOffset behavior.
Errors and empty results
Errors are intentionally generic. Inspect both the HTTP status and success; do not expect detailed authentication or ownership explanations.
| Situation | Current behavior |
|---|---|
| No session token and no API key | HTTP 401, {"success":false,"message":"Unauthorized"} |
| Invalid post-list parameters, invalid post ID, or query parameters on post-details/auto-comments | HTTP 400, {"success":false} |
| Post/auto-comment read fails, including upstream authentication/access failures or unexpected responses | HTTP 404, {"success":false} |
| Latest-template read fails | HTTP 404 with success: false; a generic code may also be present |
| Calendar missing month/year or upstream read fails | HTTP 400 with success: false |
| Calendar processing exception | HTTP 500 with success: false |
| Unmatched ordinary website API path | HTTP 404, {"success":false} rather than an HTML page |
A generic 404 does not distinguish a missing record from an invalid/revoked key, access restriction, or upstream failure. Successful empty arrays are different from failures. Do not repeatedly retry failed credentials.
The three new post/auto-comment routes send Cache-Control: no-store. Treat every response here as private regardless of cache headers. Use HTTPS and secret storage, and see troubleshooting.
These REST additions do not expand API-key MCP: it still exposes only calendar reading. The other MCP tools require OAuth and the appropriate permissions.
