API Documentation

Learn how to integrate with the Mobile Minds Updates portal using Make.com or direct API calls.

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 post
  • channel - 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 version
  • portal_body - Full expanded version (supports markdown)

Optional fields:

  • hashtags - Comma-separated hashtags
  • image_prompt - Image generation prompt
  • media_source_url - URL to fetch image from
  • linkedin_url - LinkedIn post URL
  • facebook_url - Facebook post URL
  • status - 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 channel
  • content_type - Filter by content type
  • status - Filter by status
  • q - Search in title and body
  • limit - 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 channel
  • content_type - Filter by content type
  • include - 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_TOKEN
    • Content-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=0 to ?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

Support

For questions or issues, please contact [email protected].