The Mouve API is in active development and not yet live. Follow the changelog for the launch announcement.

Mouve Developers
API reference

Users

Other people: profiles by handle, and the posts they have published. Paths, scopes, request and response shapes.

Get a user by username

GET /public/v1/users/{username}

Scope profile.read — OAuth 2.1 token or personal access token.

Looks a user up by their handle, with or without a leading @. private: true means the account gates its content behind follow approval — its posts list will be empty for anyone it has not approved. A UUID in this position is rejected: this route takes handles only.

Path parameters

NameTypeRequiredNotes
usernamestringyes—

Example

curl -X GET "https://api.mouve.it/public/v1/users/mouve" \
  -H "Authorization: Bearer $MOUVE_TOKEN"

Response 200

PublicUserDto

FieldTypeRequiredNotes
idstringyes—
usernamestringyesHandle without the leading @, as it appears in a permalink.
display_namestring | nullyes—
avatar_urlstring | nullyes—
biostring | nullyes—
created_atstringyesISO 8601 timestamp in UTC.
verifiedbooleanyes—
privatebooleanyesThe account gates its content behind follow approval.

Errors

Beyond the shared responses:

StatusCode
400VALIDATION_FAILED

List a user's posts

GET /public/v1/users/{username}/posts

Scope posts.read — OAuth 2.1 token or personal access token.

Newest first, cursor-paginated. Every row is visibility-checked against the authorizing user, so a private account you do not follow yields an empty page rather than an error — an empty page is not proof the account has never posted. Cursors are bound to the author id, so a handle change does not detach an in-flight cursor from its result set.

Path parameters

NameTypeRequiredNotes
usernamestringyes—

Query parameters

NameTypeRequiredNotes
limitintegerno1–100, defaults to 20
cursorstringnoat most 512 characters

Example

curl -X GET "https://api.mouve.it/public/v1/users/mouve/posts" \
  -H "Authorization: Bearer $MOUVE_TOKEN"

Response 200

PublicPostListDto

FieldTypeRequiredNotes
dataarray of PublicPostDtoyes—
metaobjectyesnext_cursor is null on the last page.
meta.next_cursorstring | nullyes—

Errors

Beyond the shared responses: