Accounts
POST /v1/signup
Creates a new Tripsy account using email/password credentials.
Authentication: public.
Request body:
usernamestring, requiredpasswordstring, requiredemailstring, optionalnamestring, optionalphoto_urlstring, optional
Validation:
usernameandemailare normalized to lowercase.- If
emailis omitted, it defaults tousername. - Duplicate username returns a field-level validation error.
- Duplicate email returns a generic account-creation error.
curl -X POST "https://api.tripsy.app/v1/signup" \
-H "Content-Type: application/json" \
-d '{
"name": "New User",
"username": "newuser@example.com",
"email": "newuser@example.com",
"password": "securepassword123"
}'
Success: 201 Created with a user profile object.
Typical duplicate username error:
{
"username": [
"A user with this username already exists."
]
}
Typical duplicate email error:
{
"non_field_errors": [
"Unable to create account."
]
}
GET /v1/me
Returns the current authenticated user profile.
Authentication: required.
curl -X GET "https://api.tripsy.app/v1/me" \
-H "Authorization: Token YOUR_TOKEN_HERE"
Success response: a full user profile object. See Shared objects.
PATCH /v1/me
PUT /v1/me
Updates selected profile and preference fields for the current user.
Authentication: required.
Writable fields:
photo_urlusernameemailnamelanguagecalendar_emojiscalendar_hidden_categoriescalendar_lodgings_all_daycalendar_trips_all_daytimezonedefault_currencystore_currencynotifications_flights_general_enablednotifications_flights_departure_and_arrivalnotifications_collaborators_new_activities_enabled
Notes:
- The API always updates
last_activity_date. emailmust not be blank.emailmust not match another user primary email.emailmust not match another user alternative email.- Blank or whitespace
usernameis ignored instead of saved. - Blank or null ASA fields are ignored instead of overwriting existing values.
- For uploaded profile photos, call
POST /v1/storage/uploadswithpurpose=profile_photo, upload bytes to the returned S3 URL, then savepublic_urlintophoto_url.
curl -X PATCH "https://api.tripsy.app/v1/me" \
-H "Authorization: Token YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Name",
"language": "es",
"timezone": "America/Mexico_City",
"default_currency": "MXN",
"store_currency": "USD",
"photo_url": "https://example.com/photo.jpg"
}'
Success response: same shape as GET /v1/me.
GET /auth/user/
PUT /auth/user/
PATCH /auth/user/
Alternative user-details endpoint.
Authentication: required.
Response shape:
{
"pk": 1,
"username": "testuser",
"email": "test@example.com",
"first_name": "",
"last_name": ""
}
Writable fields:
usernamefirst_namelast_name
Read-only field:
email