Open Morse

Reference

Users

8 routes, generated from Morse’s own OpenAPI document. Every path below hangs off the base URL, and every one needs the bearer header.

The examples are built from each route’s schema, so the shapes and types are exactly what the API declares. The values are illustrative, and no one has run them.

Change your profile and preferences: name, role, bio, picture, background, theme, accent, clock and timezone.

PATCH/users/me

A field left out is unchanged; an explicit null clears it.

PATCH/users/me

curl -X PATCH "$MORSE/users/me" \
  -H "Authorization: Bearer $MORSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "clock": "12", "extra_language": "en", "name": "Priya Shah", "onboarded": true, "share_tasks": true, "theme": "light", "timezone": "Asia/Kolkata", "title": "Pricing review" }'
200
{
  "accent": "…",
  "avatar_choice": "…",
  "avatar_original": true,
  "avatar_uploads": true,
  "avatar_url": "https://onmorse.com/priya",
  "avatar_version": "…",
  "background": "…",
  "bio": "…",
  "bookable": true,
  "booking_handle": "…",
  "clock": "…",
  "company": "…",
  "email": "priya@neuralarc.ai",
  "extra_language": "en",
  "extra_language_default": "en",
  "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "is_admin": true,
  "name": "Priya Shah",
  "onboarded_at": "2026-10-02T10:30:00+05:30",
  "organisation_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "share_tasks": true,
  "theme": "…",
  "timezone": "Asia/Kolkata",
  "title": "Pricing review"
}

Forget the uploaded photo, and the original it was cut from.

DELETE/users/me/avatar

Choosing it had replaced Google's photo, so that is what comes back — or the placeholder, which serves when there is none.

DELETE/users/me/avatar

curl -X DELETE "$MORSE/users/me/avatar" \
  -H "Authorization: Bearer $MORSE_TOKEN"
200
{
  "accent": "…",
  "avatar_choice": "…",
  "avatar_original": true,
  "avatar_uploads": true,
  "avatar_url": "https://onmorse.com/priya",
  "avatar_version": "…",
  "background": "…",
  "bio": "…",
  "bookable": true,
  "booking_handle": "…",
  "clock": "…",
  "company": "…",
  "email": "priya@neuralarc.ai",
  "extra_language": "en",
  "extra_language_default": "en",
  "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "is_admin": true,
  "name": "Priya Shah",
  "onboarded_at": "2026-10-02T10:30:00+05:30",
  "organisation_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "share_tasks": true,
  "theme": "…",
  "timezone": "Asia/Kolkata",
  "title": "Pricing review"
}

Step 3 of uploading a profile photo: say the file has arrived, and Morse checks it and makes it your picture.

POST/users/me/avatar/complete

Returns your profile.

POST/users/me/avatar/complete

curl -X POST "$MORSE/users/me/avatar/complete" \
  -H "Authorization: Bearer $MORSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "upload": "…" }'
200
{
  "accent": "…",
  "avatar_choice": "…",
  "avatar_original": true,
  "avatar_uploads": true,
  "avatar_url": "https://onmorse.com/priya",
  "avatar_version": "…",
  "background": "…",
  "bio": "…",
  "bookable": true,
  "booking_handle": "…",
  "clock": "…",
  "company": "…",
  "email": "priya@neuralarc.ai",
  "extra_language": "en",
  "extra_language_default": "en",
  "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "is_admin": true,
  "name": "Priya Shah",
  "onboarded_at": "2026-10-02T10:30:00+05:30",
  "organisation_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "share_tasks": true,
  "theme": "…",
  "timezone": "Asia/Kolkata",
  "title": "Pricing review"
}

The photo your uploaded one was cut from, to frame it again.

GET/users/me/avatar/original

Only ever your own, and the bytes themselves rather than a redirect: the page draws them on a canvas, which a redirect to the bucket would need the bucket's CORS for (plan 021 F8). 404 when there is none — a photo uploaded before originals were kept.

GET/users/me/avatar/original

curl "$MORSE/users/me/avatar/original" \
  -H "Authorization: Bearer $MORSE_TOKEN"

Step 1 of uploading a profile photo: a short-lived URL to PUT the file to, with exactly this type and size.

POST/users/me/avatar/upload

JPEG, PNG or WebP.

POST/users/me/avatar/upload

curl -X POST "$MORSE/users/me/avatar/upload" \
  -H "Authorization: Bearer $MORSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "content_type": "image/jpeg", "size": 3 }'
200
{
  "content_type": "image/jpeg",
  "upload": "…",
  "url": "https://onmorse.com/priya"
}

Suggest a tidier "What you do" line.

POST/users/me/bio/refine

Nothing is saved: the form shows it in place of what was typed, and the person saves it or undoes it.

POST/users/me/bio/refine

curl -X POST "$MORSE/users/me/bio/refine" \
  -H "Authorization: Bearer $MORSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Annual plans are billed up front." }'
200
{
  "text": "Annual plans are billed up front."
}

The picture others see.

GET/users/{user_id}/avatar

as previews a choice before it is saved — for your own avatar only, so nobody can ask for a photo someone chose to hide.

GET/users/{user_id}/avatar

curl "$MORSE/users/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/avatar" \
  -H "Authorization: Bearer $MORSE_TOKEN"

A colleague's name and role, as shown beside their face. 404 for a disabled account.

GET/users/{user_id}/card

GET/users/{user_id}/card

curl "$MORSE/users/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/card" \
  -H "Authorization: Bearer $MORSE_TOKEN"
200
{
  "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
  "name": "Priya Shah",
  "title": "Pricing review"
}