/api/api-releases.php and /api/api-release-details.php; the custom /api/release-status.php endpoint is described separately. Verify the exact deployed endpoint names before production use.Overview
The AATISTIC White Label API lets an authorized partner connect a separate music distribution panel to AATISTIC. Requests are authenticated using a partner API key, and release ownership is validated by the API.
https://monthly.aatistic.com/api/Authentication
Send the API key in the HTTP Authorization header using the Bearer scheme. Do not send it as a URL query parameter.
Authorization: Bearer YOUR_API_KEY Accept: application/json
cURL example
curl -H 'Authorization: Bearer YOUR_API_KEY' \\
-H 'Accept: application/json' \\
'https://monthly.aatistic.com/api/api-releases.php'Available endpoints
| Method | Endpoint | Purpose | Documented in |
|---|---|---|---|
| POST | /api/api-release-upload.php | Upload a release and its metadata/files. | PDF v1.0 |
| GET | /api/api-releases.php | List releases belonging to the authenticated partner. | PDF v1.0 |
| GET | /api/api-release-details.php?id=52 | Fetch one release, its tracks and artists. | PDF v1.0 |
| GET/POST | /api/release-status.php?release_id=52 | Custom status endpoint returning status, rejection reason and push status. | Current integration code |
The HTTP method shown for release-status.php reflects the supplied PHP code, which accepts the ID from either GET or POST. The three PDF endpoints are documented as listed in the PDF.
Upload a release
Send a multipart/form-data request. Artwork is uploaded as artwork. Track metadata uses array fields; audio files use individually indexed field names such as audio_1, audio_2.
POST https://monthly.aatistic.com/api/api-release-upload.phpMinimal cURL example
curl -X POST 'https://monthly.aatistic.com/api/api-release-upload.php' \\ -H 'Authorization: Bearer YOUR_API_KEY' \\ -F 'title=Example Single' \\ -F 'release_type=Single' \\ -F 'release_date=2026-11-01' \\ -F 'label_name=Example Label' \\ -F 'artwork=@cover.jpg' \\ -F 'track_title[]=Example Track' \\ -F 'genre[]=Pop' \\ -F 'language[]=English' \\ -F 'audio_1=@track.wav'
Successful upload response
{
"success": true,
"message": "Release uploaded successfully.",
"release_id": 52,
"user_id": 7,
"white_label_id": "Example-Label",
"status": "pending",
"white_label_status": "Pushed"
}release_id returned by AATISTIC is the remote AATISTIC release ID. Your own website's local release ID is a separate ID. Save the remote ID in a dedicated field such as aatistic_release_id so later status/details calls use the correct identifier.Release & track fields
Release fields
| Field | Type / format | Required | Description |
|---|---|---|---|
title | String | Yes | Release title. |
release_type | Single / EP / Album | Yes | Release format. |
release_date | YYYY-MM-DD | Yes | Scheduled release date. |
upc | String | Optional | UPC/EAN if already assigned. |
label_name | String | Optional | Label name. |
c_line | String | Optional | Copyright line. |
p_line | String | Optional | Phonographic copyright line. |
is_ai | 1 | Optional | Include when the release is marked AI-generated, according to the deployed API rules. |
artwork | JPG / PNG file | Yes for upload | Cover artwork file; see requirements below. |
Track fields (array notation)
| Field | Example | Notes |
|---|---|---|
track_title[] | Alone | Track title. |
isrc[] | INXXX2600001 | Track ISRC, if assigned/required by your workflow. |
composer[] | John | Composer credit. |
lyricist[] | Smith | Lyricist credit. |
producer[] | Mike | Producer credit. |
genre[] | Pop | Primary genre. |
sub_genre[] | Indie Pop | Subgenre. |
language[] | English | Track language. |
lyrics[] | Optional lyrics | Lyrics text when applicable. |
explicit[] | Yes / No | Explicit content flag. |
content_id[] | Yes / No | Content ID setting. |
clip_time[] | 00:45 | Preview clip time. |
audio_1, audio_2 | File upload | Audio fields are individually indexed, not arrays. |
Artwork & audio uploads
audio_1, audio_2, audio_3…Audio field mapping
audio_1 = track-one.wav audio_2 = track-two.mp3 audio_3 = track-three.wav
Track artists & release artists
Multiple artists on a track
Use indexed artist arrays so each track can have its own primary and featured artists.
tracks_artist[1][]=Hudaif tracks_artist[1][]=Ayaan tracks_artist_role[1][]=Primary tracks_artist_role[1][]=Feature tracks_artist[2][]=John tracks_artist_role[2][]=Primary
Release artist fields
| Field | Required | Purpose |
|---|---|---|
artist_name[] | Yes | Release artist name. |
artist_role[] | Yes | Artist role, e.g. Primary or Feature. |
spotify[] | Optional | Spotify artist URL. |
apple[] | Optional | Apple Music artist URL. |
instagram[] | Optional | Instagram profile URL. |
My Releases API
Returns releases available to the authenticated partner. The PDF specifies this endpoint for refreshing the partner's release list when the page opens.
GET https://monthly.aatistic.com/api/api-releases.php{
"success": true,
"releases": [
{
"release_id": 52,
"title": "Testing EP",
"artwork": "uploads/artwork/abc.jpg",
"release_date": "2026-09-20",
"tracks": 3,
"primary_artist": "Hudaif",
"status": "approved",
"white_label_status": "Delivered"
}
]
}Release Details API
Fetch details for one remote AATISTIC release. The PDF shows the release ID in the id query parameter.
GET https://monthly.aatistic.com/api/api-release-details.php?id=52{
"success": true,
"release": {
"title": "Testing EP",
"release_date": "2026-09-20",
"status": "approved",
"artwork": "uploads/artwork/abc.jpg",
"upc": "123456789012",
"tracks": [
{
"title": "Alone",
"isrc": "INAAA2600001",
"genre": "Pop",
"language": "English",
"composer": "John",
"lyricist": "Smith",
"producer": "Mike",
"explicit": "No",
"content_id": "Yes",
"clip_time": "00:45"
}
],
"artists": [
{"name":"Hudaif","role":"Primary","spotify":"...","apple":"...","instagram":"..."}
]
}
}Release Status API
The supplied custom release-status.php reads release_id from the query string or POST body and returns the current status, rejection reason, release date, creation date, white-label ID, and push status.
GET https://monthly.aatistic.com/api/release-status.php?release_id=52{
"success": true,
"release": {
"id": 52,
"title": "Testing EP",
"status": "approved",
"reject_reason": null,
"release_date": "2026-09-20",
"created_at": "2026-09-10 12:00:00",
"white_label_id": "Example-Label",
"push_status": "Delivered"
}
}Partner-side status sync pattern
- Store the remote ID. Save the AATISTIC
release_idin your local release row after upload. - Authenticate server-side. Make the status request from PHP using
Authorization: Bearer YOUR_API_KEY. - Fetch when the page opens. Query each local release that has a remote AATISTIC ID.
- Display remote values. Use
release.statusandrelease.push_status; showreject_reasonwhen present. - Fallback safely. If the remote API fails, show a clearly identified cached/local status rather than treating the fallback as live.
api-releases.php. If it returns all the status fields you need, prefer that endpoint for the entire list to avoid making one request per release. Use release-status.php only if that endpoint is deployed and needed.Release & delivery statuses
Release status
White Label / delivery status
| Value | Meaning in supplied PDF | Suggested UI label |
|---|---|---|
Pushed | Successfully received by AATISTIC. | Received |
Processing | Under distribution. | Processing |
Delivered | Live on stores. | Live on stores |
Treat the release status and white-label delivery status as two separate values. A release may be approved while distribution delivery is still processing.
Security and user ownership
- Store the API key in server-side configuration or environment variables. Do not print it to the browser.
- Send the Bearer token over HTTPS for every API request.
- Do not trust a client-supplied remote release ID without checking that it belongs to the logged-in user in your local database.
- Keep your website's local
users.idand localreleases.user_idseparate from the remote AATISTIC user ID. - In the current ROVM integration, the remote AATISTIC upload is intended to use
user_id = 853. This is a custom integration rule, not a standard field described in the supplied PDF. - The API key row must be configured for the intended AATISTIC account and white-label permissions. Never alter a key hash manually to change account routing.
api-auth.php sets $apiUser['user_id'] from the API-key row. The custom status endpoint checks the release against that authenticated ID. If uploads are stored under remote user ID 853, the API key used for status checks must resolve to the same user ID, unless the endpoint's ownership logic is deliberately redesigned and securely validated.Errors & troubleshooting
| HTTP / message | Likely reason | What to check |
|---|---|---|
401 API key missing | Authorization header absent or not parsed. | Send Authorization: Bearer YOUR_API_KEY from the server. |
401 Invalid API key | Key is incorrect, inactive, or hash verification failed. | Regenerate/check the key and confirm its row is active. |
403 Domain not allowed | Request Origin/Referer does not match the configured domain. | Check allowed domain and server-to-server header behaviour. |
400 release_id required | Missing or invalid ID on the custom status endpoint. | Send the remote AATISTIC release ID as release_id. |
404 Release not found | ID does not exist for the authenticated API user. | Check remote ID and API key's mapped user_id. |
Undefined variable | Configuration file was not included or variable name differs. | Include the config using the correct relative path and verify variable names. |
| Artwork validation error | Wrong format, dimensions or file size. | Use JPG/PNG, 3000 × 3000 px, maximum 10 MB per the PDF. |
Integration checklist
- Configure API credentials. Confirm the API key is active, stored server-side, and mapped to the intended white-label account.
- Implement upload. Send release metadata as multipart form data, artwork as
artwork, track arrays in order, and audio asaudio_N. - Store the remote release ID. Persist the AATISTIC
release_idseparately from your local primary key. - Build My Releases. Use
GET /api/api-releases.phpas documented in the PDF; refresh on page load for current status. - Build Release Details. Use
GET /api/api-release-details.php?id=REMOTE_IDfor track and artist details. - Test status and errors. Verify pending, approved, rejected, resubmitted, push statuses, invalid key, and release-not-found cases.
- Protect secrets and logs. Do not display API keys or full Authorization headers in error output or logs.
Documentation version 1.0 · Prepared 06 Oct 2026 · Base URL: https://monthly.aatistic.com/api/