The SDK’s content model has two design decisions worth understanding up front:Documentation Index
Fetch the complete documentation index at: https://docs.sdk.anghami.com/llms.txt
Use this file to discover all available pages before exploring further.
- Every ID is its own typed message —
SongID,AlbumID,EpisodeID, etc. There is no rawstringorint64ID anywhere in the public surface. - A single
Contentwrapper unifies mixed lists — used in search results, library entries, and editorial sections where the items can be of different kinds.
Typed IDs
Defined insdk/shared/v1/identifiers.proto:
SongID cannot be called with an AlbumID even though both wrap a string. This catches whole classes of bugs at compile time.
Music entity tree
- An artist has a discography (
GetArtistDiscography), top tracks (GetArtistTopTracks), and related artists (GetRelatedArtists). - An album has tracks (
GetAlbumTracks). - A song has lyrics, when available (
GetLyrics).
Video entity tree
- A show response includes season summaries for navigation.
- A season response includes its paginated episode list.
- Movies are not nested in shows.
The Content wrapper
Searchresults (any of song/album/artist/playlist/show/movie).BrowseFeaturededitorial sections.LibraryService.GetHistory(mixed playback history).BrowseGenres/GetGenreContent(genre-tagged content).
Content, branch on the oneof id arm and call the corresponding Get* RPC for full detail.
ContentType enum
When you only need to filter or tag (e.g. “give me liked items, songs only”), use the ContentType enum:
| Value | Meaning |
|---|---|
CONTENT_TYPE_SONG | Song |
CONTENT_TYPE_ALBUM | Album |
CONTENT_TYPE_ARTIST | Artist |
CONTENT_TYPE_PLAYLIST | Playlist |
CONTENT_TYPE_SHOW | Video series |
CONTENT_TYPE_SEASON | Season |
CONTENT_TYPE_EPISODE | Episode |
CONTENT_TYPE_MOVIE | Movie |
Media
Every entity carries anImage for artwork. See sdk/shared/v1/media.proto for image variants and sizing.