API KeysUser

User

Read the account profile and notes owned by the account associated with an API key.

User

The User API lets you:

  • Read the profile associated with the current API key.
  • List notes owned by that account.
  • Filter, sort, and paginate the note list.

Base URL:

https://api.notexapp.com

Send the API key through the X-API-Key header:

-H "X-API-Key: ntx_live_..."

All returned data belongs to the account that created the API key.

Response format

These endpoints use a common response envelope:

interface ApiResponse<T> {
  statusCode: number;
  message?: string;
  data: T;
}

Get profile

GET /v1/user/profile

Returns the profile associated with the current API key.

Use this endpoint to:

  • Verify which account owns an API key.
  • Display account information in your integration.
  • Read the account's language preferences.

Request

This endpoint does not require query parameters or a request body.

curl https://api.notexapp.com/v1/user/profile \
  -H "X-API-Key: ntx_live_..."

Example response

{
  "statusCode": 200,
  "data": {
    "user_id": "665f...",
    "email": "user@example.com",
    "name": "Jane Doe",
    "image": "https://cdn.notexapp.com/avatars/...",
    "role": "normal_user",
    "preferences": {
      "display_language": "en",
      "transcription_language": "en",
      "ai_notes_language": "en"
    },
    "createdAt": "2026-01-01T00:00:00Z"
  }
}

Response fields

FieldTypeDescription
user_idstringNotex account ID
emailstringAccount email address
namestringUser display name
imagestring | nullProfile image URL
rolestringCurrent account role
preferencesobjectUser language preferences
createdAtstringAccount creation time in ISO 8601 UTC format

Preferences

FieldTypeDescription
display_languagestringLanguage used by the Notex interface
transcription_languagestringDefault transcription language
ai_notes_languagestringDefault language for AI-generated note content
TypeScript types
export interface UserPreferences {
  display_language: string;
  transcription_language: string;
  ai_notes_language: string;
}

export interface UserProfileData {
  user_id: string;
  email: string;
  name: string;
  image: string | null;
  role: string;
  preferences: UserPreferences;
  createdAt: string;
}

export type GetUserProfileResponse =
  ApiResponse<UserProfileData>;

List my notes

GET /v2/user/notes

Returns notes owned by the account associated with the API key.

The endpoint supports:

  • Filtering by note type.
  • Filtering by tab.
  • Sorting.
  • Page-based pagination.
  • Cursor-based pagination.

Request

The following example returns up to 20 notes, ordered from newest to oldest:

curl "https://api.notexapp.com/v2/user/notes?limit=20&sort_field=createdAt&sort_order=-1" \
  -H "X-API-Key: ntx_live_..."

Query parameters

ParameterTypeRequiredDescription
typestringNoFilter by note type, such as youtube, pdf, audio, or website
tabstringNoFilter by tab, such as summary, transcript, or mindmap
limitnumberNoMaximum number of notes returned per page
cursorstringNoCursor returned by the previous request
pagenumberNoPage number for page-based pagination
sort_fieldstringNoField used for sorting, such as createdAt, updatedAt, or title
sort_order1 | -1No1 for ascending order and -1 for descending order

Common examples

Filter by note type

curl "https://api.notexapp.com/v2/user/notes?type=pdf&limit=20" \
  -H "X-API-Key: ntx_live_..."

Sort newest first

curl "https://api.notexapp.com/v2/user/notes?sort_field=createdAt&sort_order=-1" \
  -H "X-API-Key: ntx_live_..."

Load the next page using a cursor

curl "https://api.notexapp.com/v2/user/notes?limit=20&cursor=<next_cursor>" \
  -H "X-API-Key: ntx_live_..."

Use the next_cursor exactly as returned by the previous response. Do not modify it.

Note fields

FieldTypeDescription
note_idstringUnique note ID
titlestringNote title
folder_idstring | nullFolder ID, or null when the note is stored at the root level
typestringNote type
durationnumberDuration in seconds, when available
short_summarystringShort summary of the note
is_publicbooleanWhether the note is publicly shared
is_password_protectedbooleanWhether the note is password protected
share_linkstring | nullShare URL, when available
createdAtstringCreation time in ISO 8601 UTC format
updatedAtstringLast update time in ISO 8601 UTC format

Pagination fields

Depending on the pagination mode, the response may contain:

FieldTypeDescription
notesNoteItemData[]Returned notes
total_notesnumberTotal number of notes
next_cursorstring | nullCursor for the next page
has_morebooleanWhether another page is available
pagenumberCurrent page
limitnumberNumber of items per page
TypeScript types
export interface ListMyNotesQueryParams {
  type?: string;
  tab?: string;
  limit?: number;
  cursor?: string;
  page?: number;
  sort_field?: string;
  sort_order?: 1 | -1;
}

export interface NoteItemData {
  note_id: string;
  title: string;
  folder_id: string | null;
  type: string;
  duration?: number;
  short_summary?: string;
  is_public?: boolean;
  is_password_protected?: boolean;
  share_link?: string | null;
  createdAt: string;
  updatedAt: string;
}

export interface ListMyNotesData {
  notes: NoteItemData[];
  total_notes?: number;
  next_cursor?: string | null;
  has_more?: boolean;
  page?: number;
  limit?: number;
}

export type ListMyNotesResponse =
  | ApiResponse<NoteItemData[]>
  | ApiResponse<ListMyNotesData>;

Pagination

ModeParametersBest suited for
Page-basedpage, limitInterfaces that allow navigation to a specific page
Cursor-basedcursor, limitInfinite scrolling or loading the next batch

Do not send page and cursor in the same request.

Important notes

  • All returned notes belong to the account that created the API key.
  • Keep the API key on a controlled backend or server.
  • Use sort_order=-1 to return the newest notes first.
  • Optional fields may not appear on every note.
  • Supported type and tab values depend on the content types currently available in Notex.