Skip to main content

Create Post

Create a new post. The backend uses api/Post; create is multipart/form-data with caption, visibility, optional mediaFiles, and optional mentions (JSON string).

Endpoint

POST /api/Post/users/{userId}

Authentication: Required

Path Parameters

ParameterTypeRequiredDescription
userIdstring (GUID)YesAuthor user ID

Request Body (multipart/form-data)

Text Post

FieldTypeRequiredDescription
captionstringNoPost text/caption
visibilitystringNoPublic, Friends, OnlyMe (default: Public)
mentionsstringNoJSON array of mention objects

Post with Media

FieldTypeRequiredDescription
captionstringNoPost caption
visibilitystringNoPublic, Friends, OnlyMe
mediaFilesfile[]NoImages or videos (max 100MB per file)
mentionsstringNoJSON string of mention list

Response

Success (200 OK)

{
"success": true,
"data": {
"id": "post-guid",
"caption": "Hello, world!",
"author": { "id": "user-id", "fullName": "John Doe", "username": "johndoe" },
"visibility": "Public",
"createdAt": "2024-01-01T00:00:00Z",
"media": []
}
}

Example

const formData = new FormData();
formData.append('caption', 'Hello, world!');
formData.append('visibility', 'Public');
// formData.append('mediaFiles', fileInput.files[0]);

const response = await fetch(`http://localhost:5000/api/Post/users/${userId}`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}` },
body: formData
});

Privacy (visibility)

  • Public: Visible to everyone
  • Friends: Visible to friends only
  • OnlyMe: Private post

Next Steps