---
title: "Recognition result fields"
description: "The fields of the result object returned by the standard AudD recognition endpoint (api.audd.io), including timecode, song_link, audio_id, and provider metadata blocks."
slug: "/resources/reference/result-fields"
section: "reference"
keywords: [audd, result, timecode, song_link, audio_id, recognition]
---

# Recognition result fields

The standard endpoint (`POST https://api.audd.io/`) returns a single
`result` object describing the best match for the submitted clip, or
`result: null` when nothing is recognized. This page documents the fields
that appear on `result`. It does not cover the enterprise endpoint, which
returns a different shape — see the
[enterprise response and match fields](/resources/reference/enterprise-match-fields)
reference for that.

## The result object

On a match, `result` is an object with the fields below. On no match,
`result` is `null` — a successful response (`status: "success"`) that
found nothing, which is distinct from an error.

| Field | Type | Description |
|---|---|---|
| `artist` | string \| null | The recognized track's artist. May be `null` on a custom-catalog match. |
| `title` | string \| null | The recognized track's title. May be `null` on a custom-catalog match. |
| `album` | string \| null | The album the recording appears on. |
| `release_date` | string \| null | The release date, `YYYY-MM-DD`. |
| `label` | string \| null | The record label. |
| `timecode` | string | Position **within the matched track** where the submitted clip aligns, formatted `MM:SS`. See note below. |
| `song_link` | string | A universal link to the song's page on `lis.tn` (for example `https://lis.tn/NbkVb`). |
| `audio_id` | integer | The track's identifier in your custom catalog. Present **only** on a custom-catalog match. |

A minimal match looks like this:

```json
{
  "status": "success",
  "result": {
    "artist": "Tears For Fears",
    "title": "Everybody Wants To Rule The World",
    "album": "Songs From The Big Chair",
    "release_date": "2014-11-10",
    "label": "UMC (Universal Music Catalogue)",
    "timecode": "00:56",
    "song_link": "https://lis.tn/NbkVb"
  }
}
```

## timecode

`timecode` is the position within the matched recording at the point your
clip aligns to — not an offset into the clip you submitted. A `timecode` of
`00:56` means the submitted audio matched the part of the reference track
56 seconds in.

## Custom-catalog matches

When the recognized track comes from your own custom catalog rather than the
public database, the result carries an `audio_id` and may omit the public
metadata. `artist` and `title` can be `null`, since the mapping from
`audio_id` to a song is yours to maintain on your side:

```json
{
  "status": "success",
  "result": {
    "timecode": "01:45",
    "audio_id": 146
  }
}
```

## Provider metadata blocks

When the request includes the `return` parameter (comma-separated provider
identifiers such as `apple_music,spotify,deezer,musicbrainz`), the
result also carries one nested object per requested provider:

| Block | Type | Present when |
|---|---|---|
| `apple_music` | object | `return` includes `apple_music` |
| `spotify` | object | `return` includes `spotify` |
| `deezer` | object | `return` includes `deezer` |
| `musicbrainz` | array | `return` includes `musicbrainz` |

These blocks pass through each provider's own schema (Apple Music's
`artwork`/`previews`, Spotify's `album`/`external_ids`, MusicBrainz's
release list, and so on), so their shapes are documented separately rather
than duplicated here — see the
[provider metadata](/resources/reference/provider-metadata) reference.

```json
{
  "status": "success",
  "result": {
    "artist": "Tears For Fears",
    "title": "Everybody Wants To Rule The World",
    "song_link": "https://lis.tn/NbkVb",
    "apple_music": { "...": "Apple Music's schema" },
    "spotify": { "...": "Spotify's schema" }
  }
}
```

## Notes

- `result` is `null` on no match. Check for `null` before reading fields;
  it is not an error condition.
- `audio_id` appears only on custom-catalog matches. On those matches, treat
  `artist` and `title` as possibly `null` and key off `audio_id`.
- `timecode` is a position in the reference recording, not in the clip you
  sent.
- Fields outside the typed surface — beta or newly added response fields —
  are reachable through `extras` on each typed result and per-provider block
  (the Python SDK surfaces the same map as `model_extra`). Read additional
  fields there without waiting for a typed property.
- ISRC and UPC are not returned on the standard endpoint. They appear on
  enterprise responses and require a Startup plan or higher — see the
  [enterprise response and match fields](/resources/reference/enterprise-match-fields)
  reference.

---

**Related**

- [Provider metadata reference](/resources/reference/provider-metadata)
- [Enterprise response and match fields](/resources/reference/enterprise-match-fields)
- [Score thresholds](/resources/concepts/score-thresholds)
- [Glossary](/resources/reference/glossary)
- [API reference](https://docs.audd.io)