Overview
The Mobile Minds Updates portal provides both write endpoints (protected with bearer token) and read endpoints (public) for managing and consuming content.
Authentication
Write operations require bearer token authentication:
Authorization: Bearer YOUR_PORTAL_API_TOKEN
Write Endpoints
POST /api/v1/posts
Create or update a post via external_id (upsert).
Required fields:
external_id- Unique identifier for the postchannel- Channel name (e.g., "Mobile Minds", "Geekteq")content_type- Type of content (e.g., "Knowledge", "News")title- Post title (max 220 characters)linkedin_body- Short LinkedIn versionportal_body- Full expanded version (supports markdown)
Optional fields:
hashtags- Comma-separated hashtagsimage_prompt- Image generation promptmedia_source_url- URL to fetch image fromlinkedin_url- LinkedIn post URLfacebook_url- Facebook post URLstatus- Post status (default: "published")published_at- Publication date (ISO 8601)
Example request:
{
"external_id": "SHEETROW-123",
"channel": "Mobile Minds",
"content_type": "Knowledge",
"title": "How to Automate Your Workflow",
"linkedin_body": "Short LinkedIn version...",
"portal_body": "# Full Article\n\nLonger expanded version in markdown...",
"hashtags": "#automation, #productivity",
"status": "queued",
"published_at": "2025-12-29T09:15:00+01:00"
}
Response 200:
{
"ok": true,
"id": "uuid-here",
"external_id": "SHEETROW-123",
"portal_url": "https://updates.mobileminds.se/posts/SHEETROW-123"
}
PATCH /api/v1/posts/{external_id}
Update specific fields of an existing post.
Example request:
{
"status": "published",
"media_source_url": "https://www.dropbox.com/s/.../image.png?dl=0",
"linkedin_url": "https://www.linkedin.com/...",
"facebook_url": "https://www.facebook.com/..."
}
Response 200:
{
"ok": true
}
Read Endpoints (Public)
GET /api/v1/posts
List posts with filtering, search, and pagination.
Query parameters:
channel- Filter by channelcontent_type- Filter by content typestatus- Filter by statusq- Search in title and bodylimit- Results per page (default 20, max 50)cursor- Pagination cursor
GET /api/v1/weekly
Get posts from the last 7 days (or custom range).
Query parameters:
days- Number of days (default 7, max 30)channel- Filter by channelcontent_type- Filter by content typeinclude- CSV of fields to include (default: "hashtags,links")
GET /api/v1/weekly/markdown
Get posts from the last 7 days formatted as markdown (useful for weekly summaries).
Query parameters:
days- Number of days (default 7, max 30)channel- Filter by channel
Make.com Integration Example
Step 1: Create/Update Post (Queued)
Use HTTP module in Make.com:
- URL:
https://updates.mobileminds.se/api/v1/posts - Method: POST
- Headers:
Authorization: Bearer YOUR_TOKENContent-Type: application/json
- Body: JSON with post data (status: "queued")
Step 2: Update Post After Publishing
After publishing to LinkedIn/Facebook, update with URLs and image:
- URL:
https://updates.mobileminds.se/api/v1/posts/{external_id} - Method: PATCH
- Headers: Same as above
- Body:
{ "status": "published", "media_source_url": "https://dropbox.com/...", "linkedin_url": "https://linkedin.com/...", "facebook_url": "https://facebook.com/..." }
Image Handling
When you provide a media_source_url, the portal server will:
- Fetch the image from the URL
- Store it locally for faster serving
- Support Dropbox URLs (automatically converts
?dl=0to?raw=1) - Validate domain, size, and MIME type (SSRF protection)
Rate Limits
- Write endpoints: 60 requests/minute per IP
- Read endpoints: 300 requests/minute per IP
Other Endpoints
- RSS Feed: /rss.xml
- Sitemap: /sitemap.xml
- Health Check: /health
Support
For questions or issues, please contact [email protected].