Music Plagiarism Detection¶
Detect potential music plagiarism by comparing audio against a database of existing songs using structural music analysis.
Endpoint¶
POST /api/v1/plagiarism/{model_name}
Parameters¶
Path Parameters¶
Name |
Type |
Required |
Description |
|---|---|---|---|
|
string |
Yes |
Model to use: |
Request Body¶
Field |
Type |
Required |
Description |
|---|---|---|---|
|
binary |
Yes |
Audio file to analyze (mp3, wav, flac, m4a, aac, ogg) |
|
string |
No |
Dataset ID for comparison. |
Request Example¶
cURL¶
curl https://platform.mippia.com/api/v1/plagiarism/standard \
-H "Authorization: Bearer YOUR_API_KEY" \
-X POST \
-F "file=@/path/to/audio.mp3" \
-F "dataset_id=default"
Python¶
import requests
url = "https://platform.mippia.com/api/v1/plagiarism/standard"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
files = {
"file": open("/path/to/audio.mp3", "rb")
}
data = {
"dataset_id": "default"
}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Response (Initial)¶
{
"task_id": "task_20251204052920_J8uNdq5z",
"status": "pending",
"filepath": "uploads/task_20251204052920_J8uNdq5z.mp3",
"model": "standard",
"created_at": "2025-12-04T05:29:20Z"
}
Callback Response (Processing)¶
{
"task_id": "task_20251204052920_J8uNdq5z",
"task_type": "plagiarism_detection",
"status": "processing",
"result": null,
"started_at": "2025-12-04T05:29:25Z"
}
Callback Response (Completed)¶
{
"task_id": "task_20251204052920_J8uNdq5z",
"task_type": "plagiarism_detection",
"status": "success",
"completed_at": "2025-12-04T05:30:45Z",
"result": {
"signature": [
{
"signature_metric": 0.7525,
"original": {
"title": "My New Song",
"link": null,
"time_start": 7.42,
"time_end": 14.81,
"key": "G major",
"chords": ["N", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj", "D:maj"]
},
"comparison": {
"title": "Similar Existing Song",
"link": "https://www.youtube.com/watch?v=example",
"time_start": 94.38,
"time_end": 102.12,
"key": "E minor",
"chords": ["E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min", "E:min"]
},
"scores": {
"vocal": {
"metric": 1,
"pitch_score": 0.665,
"correlation": 0.889,
"ratio": 0.796,
"bpm_ratio": 0.967,
"difficulty": 0.731
},
"melody": {
"metric": 0,
"pitch_score": 0,
"correlation": 0,
"ratio": 0,
"bpm_ratio": 0.967,
"difficulty": 0.047
},
"topline": {
"metric": 0.875,
"pitch_score": 0.444,
"correlation": 0.923,
"ratio": 0.780,
"bpm_ratio": 0.967,
"difficulty": 0.5
},
"chord": 0
}
}
],
"vocal": [...],
"inst": [...],
"topline": [...]
}
}
Result Fields¶
Field |
Type |
Description |
|---|---|---|
|
string |
Unique task identifier |
|
string |
Task type: |
|
string |
Task status: |
|
string |
ISO 8601 completion timestamp |
|
object |
Detection results grouped by category |
Result Categories¶
Results are grouped into four categories based on what aspect of the music matched:
Category |
Description |
|---|---|
|
Overall musical signature matches |
|
Vocal melody matches |
|
Instrumental matches |
|
Main melody (topline) matches |
Each category contains an array of match objects.
Match Object¶
Field |
Type |
Description |
|---|---|---|
|
float |
Overall similarity score (0.0 - 1.0) |
|
object |
Query segment info |
|
object |
Matched segment info |
|
object |
Detailed scores by component |
Segment Info (original / comparison)¶
Field |
Type |
Description |
|---|---|---|
|
string |
Song title |
|
string |
Audio URL (null for uploaded files) |
|
float |
Start time in seconds |
|
float |
End time in seconds |
|
string |
Musical key (e.g., “G major”) |
|
array |
16 chords in shorthand notation (e.g., “C:maj”, “E:min”, “N” for none) |
Scores¶
The scores object contains similarity breakdowns for vocal, melody, and topline:
Field |
Type |
Description |
|---|---|---|
|
float |
Final similarity score (0.0 - 1.0) |
|
float |
Pitch similarity (0.0 - 1.0) |
|
float |
Rhythmic pattern similarity (0.0 - 1.0) |
|
float |
Segment matching ratio (0.0 - 1.0) |
|
float |
Tempo similarity (0.0 - 1.0) |
|
float |
Content complexity (0.0 - 1.0). Simple patterns like rapping score lower. |
Additionally:
Field |
Type |
Description |
|---|---|---|
|
float |
Chord progression similarity (0.0 - 1.0) |
Notes¶
Segment-based: Results show which specific parts of songs are similar. API returns simplified results compared to the MIPPIA website.