Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/HelenaLM32/ECHO/llms.txt

Use this file to discover all available pages before exploring further.

Every ECHO user has an associated profile that serves as their public-facing portfolio page. Profiles include biographical details, social media links, a portfolio calendar, and the items or services they offer on the marketplace. All read endpoints are publicly accessible without authentication. Updating a profile or uploading images requires a valid JWT token, and you may only modify your own profile.
The base URL for all endpoints on a local development server is http://localhost:8084. Replace this with your deployed API URL in production.

Get all profiles

GET /profiles
Returns a list of all public profiles on the platform.

Example

curl -X GET http://localhost:8084/profiles

Response fields

id
number
required
The profile’s unique identifier.
user_id
number
required
The ID of the user this profile belongs to.
public_name
string
The creator’s displayed name on their public profile.
bio
string
A free-text biography or description of the creator.
location
string
The creator’s stated location.
avatar_url
string
URL of the profile avatar image.
banner_url
string
URL of the profile banner image.
linkedin
string
LinkedIn profile URL.
instagram
string
Instagram profile URL.
twitter
string
Twitter/X profile URL.
experience
string
A summary of the creator’s professional experience.
calendar_url
string
A URL to the creator’s external booking or availability calendar.

Get profile by user ID

GET /profiles/{userId}
Returns the profile for a specific user.

Path parameters

userId
number
required
The numeric ID of the user whose profile to retrieve.

Example

curl -X GET http://localhost:8084/profiles/42

Error codes

StatusMeaning
404No profile found for the given user ID.

Get user’s product items

GET /profiles/{userId}/products
Returns all marketplace items of type PRODUCT listed by the given user.

Path parameters

userId
number
required
The numeric ID of the user whose products to list.

Example

curl -X GET http://localhost:8084/profiles/42/products

Get user’s service items

GET /profiles/{userId}/services
Returns all marketplace items of type SERVICE listed by the given user.

Path parameters

userId
number
required
The numeric ID of the user whose services to list.

Example

curl -X GET http://localhost:8084/profiles/42/services

Get all user’s items

GET /profiles/{userId}/all-items
Returns all marketplace listings by the given user, regardless of type.

Path parameters

userId
number
required
The numeric ID of the user whose items to list.

Example

curl -X GET http://localhost:8084/profiles/42/all-items

Update profile

PUT /profiles/{userId}
Replaces the profile data for the given user. You must be authenticated as that user.

Path parameters

userId
number
required
The numeric ID of the user whose profile to update.

Request body

All fields are optional. Omitted fields are left unchanged.
public_name
string
The name displayed on the public profile. Maximum 100 characters.
bio
string
Free-text biography or description.
location
string
The creator’s location. Maximum 100 characters.
linkedin
string
LinkedIn profile URL. Maximum 255 characters.
instagram
string
Instagram profile URL. Maximum 255 characters.
twitter
string
Twitter/X profile URL. Maximum 255 characters.
experience
string
Summary of professional experience. Maximum 255 characters.
calendar_url
string
URL to an external booking or availability calendar. Maximum 500 characters.

Example

curl -X PUT http://localhost:8084/profiles/42 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "public_name": "Elena Mora",
    "bio": "Photographer and visual artist based in Barcelona.",
    "location": "Barcelona, Spain",
    "instagram": "https://instagram.com/elenamora",
    "calendar_url": "https://calendly.com/elenamora"
  }'

Error codes

StatusMeaning
403Not authorized to update this profile.
404No profile found for the given user ID.

Upload avatar image

PUT /profiles/{userId}/avatar
Uploads a new avatar image for the profile using a multipart/form-data request. The server stores the image and updates avatar_url on the profile.

Path parameters

userId
number
required
The numeric ID of the user whose avatar to upload.

Request body (multipart)

avatarUrl
file
required
The image file to upload. Send as a multipart form field named avatarUrl.

Example

curl -X PUT http://localhost:8084/profiles/42/avatar \
  -H "Authorization: Bearer <token>" \
  -F "avatarUrl=@/path/to/photo.jpg"

Error codes

StatusMeaning
400No file provided or unsupported file type.
403Not authorized to update this profile.
404No profile found for the given user ID.

Upload banner image

PUT /profiles/{userId}/banner
Uploads a new banner image for the profile using a multipart/form-data request. The server stores the image and updates banner_url on the profile.

Path parameters

userId
number
required
The numeric ID of the user whose banner to upload.

Request body (multipart)

bannerUrl
file
required
The image file to upload. Send as a multipart form field named bannerUrl.

Example

curl -X PUT http://localhost:8084/profiles/42/banner \
  -H "Authorization: Bearer <token>" \
  -F "bannerUrl=@/path/to/banner.jpg"

Error codes

StatusMeaning
400No file provided or unsupported file type.
403Not authorized to update this profile.
404No profile found for the given user ID.

Build docs developers (and LLMs) love