APIsThreadThread Without Image

Twitter Thread without Images API

Creates a new Twitter thread consisting purely of text content without any image attachments. This endpoint is perfect for storytelling, sharing insights, educational content, and engaging narratives that rely on compelling written content.

Endpoint Details

POST https://portfolio.tigest.club/api/v1/dashboard/post/webhook

Content-Type: multipart/form-data

Request Parameters

ParameterTypeRequiredDescriptionValid ValuesExample
channelstringYesTarget platform (always Twitter)"Twitter"”Twitter”
post_typestringYesType of content being posted"thread"”thread”
post_contentstringYesJSON string defining thread structure and contentValid JSON with thread segmentsSee examples below
calendar_uuidstringYesUnique identifier for your content calendarValid UUID format”69a1bf45-c48e-46cf-bd53-f47f3efa9763”
scheduled_atstringYesPublication date and time in ISO 8601 formatFuture datetime in UTC”2025-05-30T21:30:00Z”
statusstringYesPost publication status"draft", "published", "scheduled"”draft”

Parameter Details

post_content Structure:

{
  "0": {
    "text": "First tweet content here...",
    "images": []
  },
  "1": {
    "text": "Second tweet content here...",
    "images": []
  }
}

Content Guidelines:

  • Thread Length: Maximum 25 tweets per thread
  • Character Limit: Each tweet segment must be 280 characters or less
  • Images Array: Always empty [] for text-only threads
  • Text Optimization: Make every character count for maximum impact
  • Readability: Use clear, concise language for easy consumption

Example Requests

Startup Journey Thread

curl --location 'https://portfolio.tigest.club/api/v1/dashboard/post/webhook' \
--header 'X-API-KEY: your_api_key_here' \
--form 'channel="Twitter"' \
--form 'post_type="thread"' \
--form 'post_content="{
  \"0\": {\"text\": \"🚀 The story of how we went from idea to $1M ARR in 18 months (Thread) 🧵\n\nIt wasn'\''t smooth sailing. Here'\''s what we learned along the way...\", \"images\": []},
  \"1\": {\"text\": \"Month 1-3: The Reality Check 📉\n\nWe thought we had the perfect product. Customers thought otherwise.\n\n• 2 paying customers\n• $127 MRR\n• Countless sleepless nights\n\nBut this taught us the most important lesson...\", \"images\": []},
  \"2\": {\"text\": \"Lesson #1: Fall in love with the problem, not your solution ❤️\n\nWe spent 2 months talking to 100+ potential customers. What we discovered changed everything.\n\nThey didn'\''t want what we built. They needed something completely different.\", \"images\": []},
  \"3\": {\"text\": \"Month 4-6: The Pivot 🔄\n\nWe threw away 6 months of code and started fresh.\n\nScary? Absolutely.\nNecessary? 100%.\n\nSometimes the best decision is the hardest one to make.\", \"images\": []},
  \"4\": {\"text\": \"The result? 🎯\n\n• Month 6: $2,500 MRR\n• Month 12: $45,000 MRR\n• Month 18: $83,000 MRR\n\nWhat changed? We finally solved a real problem.\n\nWant to know the specific strategies we used? Let me know and I'\''ll share more! 👇\", \"images\": []}
}"' \
--form 'scheduled_at="2025-05-30T14:00:00Z"' \
--form 'status="scheduled"' \
--form 'calendar_uuid="69a1bf45-c48e-46cf-bd53-f47f3efa9763"'

Educational Thread

curl --location 'https://portfolio.tigest.club/api/v1/dashboard/post/webhook' \
--header 'X-API-KEY: your_api_key_here' \
--form 'channel="Twitter"' \
--form 'post_type="thread"' \
--form 'post_content="{
  \"0\": {\"text\": \"📚 Understanding API Design Patterns (Thread) 🧵\n\nLet'\''s break down the most important patterns you need to know...\", \"images\": []},
  \"1\": {\"text\": \"1. RESTful APIs 🌐\n\n• Resource-based URLs\n• HTTP methods for actions\n• Stateless communication\n• Cacheable responses\n\nWhy it matters: Scalability and simplicity\", \"images\": []},
  \"2\": {\"text\": \"2. GraphQL 🎯\n\n• Single endpoint\n• Client-specified queries\n• Strongly typed schema\n• Real-time subscriptions\n\nPerfect for: Complex data requirements\", \"images\": []},
  \"3\": {\"text\": \"3. gRPC 🚀\n\n• Protocol Buffers\n• Bi-directional streaming\n• High performance\n• Strong typing\n\nBest for: Microservices communication\", \"images\": []},
  \"4\": {\"text\": \"Which pattern should you choose? 🤔\n\nIt depends on:\n• Data complexity\n• Performance needs\n• Team expertise\n• Client requirements\n\nNeed help deciding? Drop your use case below! 👇\", \"images\": []}
}"' \
--form 'scheduled_at="2025-05-30T16:00:00Z"' \
--form 'status="scheduled"' \
--form 'calendar_uuid="69a1bf45-c48e-46cf-bd53-f47f3efa9763"'

Response Format

Successful Response

Status Code: 200 OK

{
  "data": {
    "id": 1074016,
    "uuid": "fbbf3449-edec-4f7d-b800-2703446edee4",
    "calendar_uuid": "69a1bf45-c48e-46cf-bd53-f47f3efa9763",
    "calendar_user_uuid": "cb3c071c-319a-4dfb-ab0c-538339d18325",
    "content": "",
    "channel": "Twitter",
    "images": [],
    "status": "draft",
    "scheduled_at": "2025-05-30T21:30:00Z",
    "created_at": "2025-05-29T15:22:01.49379665Z",
    "is_active": true,
    "updated_at": "2025-05-29T15:22:01.49379665Z",
    "post_type": "thread",
    "post_content": {
      "0": {
        "text": "First tweet content here...",
        "images": []
      },
      "1": {
        "text": "Second tweet content here...",
        "images": []
      }
    },
    "metadata": {},
    "campaign_uuid": null,
    "analytics": {}
  },
  "success": true
}

Response Fields Explained

FieldTypeDescription
idintegerUnique numeric identifier for the thread
uuidstringUnique string identifier (use for API references)
calendar_uuidstringLinks the thread to your content calendar
calendar_user_uuidstringIdentifies the calendar owner
contentstringEmpty for threads (content is in post_content)
channelstringAlways “Twitter” for this endpoint
imagesarrayEmpty array (no images in text-only threads)
statusstringCurrent thread status (draft/scheduled/published)
scheduled_atstringScheduled publication time in UTC
created_atstringThread creation timestamp
is_activebooleanWhether the thread is active in the system
updated_atstringLast modification timestamp
post_typestringAlways “thread” for this endpoint
post_contentobjectContains the complete thread structure
metadataobjectAdditional metadata about the thread
campaign_uuidstringAssociated campaign identifier (if any)
analyticsobjectThread performance data (populated after publication)

Error Handling

Thread-Specific Errors

Invalid Thread Structure (Code: 4006)

{
  "errors": {
    "code": 4006,
    "message": "Thread structure is invalid. Please check your post_content format."
  },
  "success": false
}

Solution: Ensure post_content is valid JSON with sequential numbered keys starting from “0”.

Thread Too Long (Code: 4008)

{
  "errors": {
    "code": 4008,
    "message": "Thread exceeds maximum length of 25 tweets."
  },
  "success": false
}

Solution: Reduce thread length to 25 segments or fewer.

Character Limit Exceeded (Code: 4009)

{
  "errors": {
    "code": 4009,
    "message": "Tweet segment exceeds 280 character limit."
  },
  "success": false
}

Solution: Ensure each tweet segment in your thread is 280 characters or less.

Last updated: May 29, 2025