---
title: "updates narration metadata (Auth)"
method: PUT
path: "/api/audio/{id}"
tags: ["Recitation"]
---

# updates narration metadata (Auth)

`PUT /api/audio/{id}`

reviewstatus cannot be set to Approved or Rejected using this method, use moderate method instead
only these set of fields are updatable: AudioTitle, AudioArtist, AudioArtistUrl, AudioSrc, AudioSrcUrl, ReviewStatus (Draft to Pending and vice versa and Approved/Rejected to Pending)
only narrator or a moderator can update the narration

## Path parameters

- `id` integer, required

## Request body

- RecitationViewModel — Poem Narration view model
  - `id` integer — Id
  - `owner` PublicRAppUser — user informtaion
    - `id` string, uuid, nullable — Id
    - `username` string, nullable — User Name
    - `email` string, email, nullable — User Email
    - `phoneNumber` string, tel, nullable — User Mobile Phone Number
    - `firstName` string, nullable — First Name
    - `surName` string, nullable — SurName
    - `status` 0 | 1, required — User Status
    - `rImageId` string, uuid, nullable — user image
    - `nickName` string, nullable — nick name
    - `bio` string, nullable — biography
    - `website` string, nullable — web site
    - `emailConfirmed` boolean — email verified
    - `createDate` string, date-time — create date
  - `ganjoorAudioId` integer — Final data is actually exported to a MySQL database which this auto increment field is its key
  - `ganjoorPostId` integer — Ganjoor Post Id
  - `poemFullTitle` string, nullable — Poem Full Title
  - `poemFullUrl` string, nullable — Poem Full Url (without domain name)
  - `audioOrder` integer — This determines where an audio is displayed between a list of sounds related to a specfic poem
  - `fileNameWithoutExtension` string, nullable — Using this field content you would determine xml, mp3 and ogg file names
  - `soundFilesFolder` string, nullable — combining this with RMuseum.Models.GanjoorAudio.ViewModels.RecitationViewModel.FileNameWithoutExtension + .ext would preduce relative path of sound files on our file server the full path would become [HOMEPath] + '/i/' + this value
  - `remoteMp3FilePath` string, nullable — MP3 File Path
  - `mp3Url` string, nullable — MP3 url
  - `remoteOggFilePath` string, nullable — OGG File Path
  - `oggUrl` string, nullable — OGG url
  - `remoteXMLFilePath` string, nullable — This is also a legacy field
  - `xmlUrl` string, nullable — XML url
  - `audioTitle` string, nullable — Audio Title
  - `audioArtist` string, nullable — Audio Artist
  - `audioArtistUrl` string, nullable — Audio Artist Url
  - `audioSrc` string, nullable — Audio Source
  - `audioSrcUrl` string, nullable — Audio Src Url
  - `legacyAudioGuid` string, uuid — Legacy Audio Guid
  - `mp3FileCheckSum` string, nullable — Audio File CheckSum
  - `mp3SizeInBytes` integer — mp3 size in bytes
  - `oggSizeInBytes` integer — ogg size in bytes
  - `uploadDate` string, date-time — Upload Date
  - `fileLastUpdated` string, date-time — File Last Updated
  - `reviewDate` string, date-time — Review Date (Approve or Reject)
  - `localMp3FilePath` string, nullable — MP3 File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted)
  - `localXmlFilePath` string, nullable — XML File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted)
  - `audioSyncStatus` 0 | 1 | 2 | 4 | 16 — Audio Synchronization Status (binary combination is acceptable)
  - `reviewStatus` 0 | 1 | 2 | 3 | 4 | -1 — Audio Review Status
  - `reviewMsg` string, nullable — Review Message
  - `recitationType` 0 | 1 | 1000 — recitation type
  - `inSyncWithText` boolean — in sync with text

## Response `200`

OK

- RecitationViewModel — Poem Narration view model
  - `id` integer — Id
  - `owner` PublicRAppUser — user informtaion
    - `id` string, uuid, nullable — Id
    - `username` string, nullable — User Name
    - `email` string, email, nullable — User Email
    - `phoneNumber` string, tel, nullable — User Mobile Phone Number
    - `firstName` string, nullable — First Name
    - `surName` string, nullable — SurName
    - `status` 0 | 1, required — User Status
    - `rImageId` string, uuid, nullable — user image
    - `nickName` string, nullable — nick name
    - `bio` string, nullable — biography
    - `website` string, nullable — web site
    - `emailConfirmed` boolean — email verified
    - `createDate` string, date-time — create date
  - `ganjoorAudioId` integer — Final data is actually exported to a MySQL database which this auto increment field is its key
  - `ganjoorPostId` integer — Ganjoor Post Id
  - `poemFullTitle` string, nullable — Poem Full Title
  - `poemFullUrl` string, nullable — Poem Full Url (without domain name)
  - `audioOrder` integer — This determines where an audio is displayed between a list of sounds related to a specfic poem
  - `fileNameWithoutExtension` string, nullable — Using this field content you would determine xml, mp3 and ogg file names
  - `soundFilesFolder` string, nullable — combining this with RMuseum.Models.GanjoorAudio.ViewModels.RecitationViewModel.FileNameWithoutExtension + .ext would preduce relative path of sound files on our file server the full path would become [HOMEPath] + '/i/' + this value
  - `remoteMp3FilePath` string, nullable — MP3 File Path
  - `mp3Url` string, nullable — MP3 url
  - `remoteOggFilePath` string, nullable — OGG File Path
  - `oggUrl` string, nullable — OGG url
  - `remoteXMLFilePath` string, nullable — This is also a legacy field
  - `xmlUrl` string, nullable — XML url
  - `audioTitle` string, nullable — Audio Title
  - `audioArtist` string, nullable — Audio Artist
  - `audioArtistUrl` string, nullable — Audio Artist Url
  - `audioSrc` string, nullable — Audio Source
  - `audioSrcUrl` string, nullable — Audio Src Url
  - `legacyAudioGuid` string, uuid — Legacy Audio Guid
  - `mp3FileCheckSum` string, nullable — Audio File CheckSum
  - `mp3SizeInBytes` integer — mp3 size in bytes
  - `oggSizeInBytes` integer — ogg size in bytes
  - `uploadDate` string, date-time — Upload Date
  - `fileLastUpdated` string, date-time — File Last Updated
  - `reviewDate` string, date-time — Review Date (Approve or Reject)
  - `localMp3FilePath` string, nullable — MP3 File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted)
  - `localXmlFilePath` string, nullable — XML File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted)
  - `audioSyncStatus` 0 | 1 | 2 | 4 | 16 — Audio Synchronization Status (binary combination is acceptable)
  - `reviewStatus` 0 | 1 | 2 | 3 | 4 | -1 — Audio Review Status
  - `reviewMsg` string, nullable — Review Message
  - `recitationType` 0 | 1 | 1000 — recitation type
  - `inSyncWithText` boolean — in sync with text

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

---

[API](https://skmtc.net/ganjoor/apis/rmuseum-api.md) · [All operations](https://skmtc.net/ganjoor/apis/rmuseum-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ganjoor/rmuseum-api/versions/bb8e104d36d2/schema)
