Naar de voorbeelden
GrooveGauge

GrooveGauge API in voorbeelden

Kies een voorbeeld, voeg je sleutel toe en ga aan de slag. Je hebt geen SDK nodig.

Bronvermelding is verplicht. Zet bij content die je via de API toont, deelt of hergebruikt altijd een zichtbare GrooveGauge-vermelding met een link naar de bijbehorende oorspronkelijke pagina. Het auteursrecht op onze eigen redactionele teksten blijft bij GrooveGauge. Lees de uitleg over bronvermelding en AI-integraties.

Basis-URL: https://groovegauge.com/nl/api/v1

Direct naar een voorbeeld

Je eerste werkende aanvraag

Nog geen API-sleutel? Begin hier.
  1. Maak gratis een account en een API-sleutel aan. Bevestig je e-mailadres, kies je voornaam, gebruikersnaam en wachtwoord en maak een sleutel voor je project.
  2. Vervang YOUR_API_KEY in het voorbeeld hieronder. Je ziet de volledige sleutel alleen bij het aanmaken.
  3. Voer het voorbeeld uit op je server of in je terminal. Deze aanvraag haalt een echte review op.

De terminalvoorbeelden gebruiken Bash en cURL. Je kunt ook Node.js met ingebouwde fetch, PHP met cURL of Python 3 zonder extra pakketten gebruiken.

Stel GROOVEGAUGE_API_KEY in op je server. Bij cURL staat ook het export-commando.

cURL
export GROOVEGAUGE_API_KEY='YOUR_API_KEY'

curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  'https://groovegauge.com/nl/api/v1/reviews/103'
Node.js
// quickstart.mjs: run on your server with node quickstart.mjs
const key = process.env.GROOVEGAUGE_API_KEY;
if (!key) throw new Error('Set GROOVEGAUGE_API_KEY first');

const response = await fetch('https://groovegauge.com/nl/api/v1/reviews/103', {
  headers: { Authorization: `Bearer ${key}` },
  signal: AbortSignal.timeout(15000),
});
const body = await response.json();
if (!response.ok) {
  throw new Error(`${response.status}: ${body.error?.message ?? 'Request failed'}`);
}

const review = body.data;
console.log(review.title, review.score, 'Bron: GrooveGauge', review.url);
console.log('Oorspronkelijke redactionele tekst © GrooveGauge');
PHP
<?php
// quickstart.php: run on your server with php quickstart.php
$key = getenv('GROOVEGAUGE_API_KEY');
if (!$key) throw new RuntimeException('Set GROOVEGAUGE_API_KEY first');

$request = curl_init('https://groovegauge.com/nl/api/v1/reviews/103');
curl_setopt_array($request, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 15,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $key],
]);
$raw = curl_exec($request);
if ($raw === false) throw new RuntimeException(curl_error($request));
$status = curl_getinfo($request, CURLINFO_RESPONSE_CODE);
curl_close($request);
$body = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
if ($status < 200 || $status >= 300) {
    throw new RuntimeException($status . ': ' . ($body['error']['message'] ?? 'Request failed'));
}

$review = $body['data'];
echo $review['title'] . ' | ' . ($review['score'] ?? 'No rating') . ' | Bron: GrooveGauge | ' . $review['url'];
echo PHP_EOL . 'Oorspronkelijke redactionele tekst © GrooveGauge';
Python
# quickstart.py: run on your server with python3 quickstart.py
import json
import os
import urllib.error
import urllib.request

key = os.environ['GROOVEGAUGE_API_KEY']
request = urllib.request.Request(
    'https://groovegauge.com/nl/api/v1/reviews/103',
    headers={'Authorization': f'Bearer {key}'},
)
try:
    with urllib.request.urlopen(request, timeout=15) as response:
        body = json.load(response)
except urllib.error.HTTPError as error:
    detail = json.loads(error.read())
    raise RuntimeError(f"{error.code}: {detail['error']['message']}") from error

review = body['data']
print(review['title'], review['score'], 'Bron: GrooveGauge', review['url'])
print('Oorspronkelijke redactionele tekst © GrooveGauge')

Bewaar je sleutel op je server. Laat je website of app je eigen backend aanroepen; deze voorbeelden zijn niet bedoeld voor openbare JavaScript in de browser.

Ingekorte API-response. Klap open voor het volledige voorbeeld.

JSON
{
  "data": {
    "id": 103,
    "title": "The Autumn Effect",
    "type": "album",
    "score": 8.6,
    "score_scale": 10,
    "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect",
    "api_url": "https://groovegauge.com/nl/api/v1/reviews/103"
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}
Volledige response
JSON
{
  "data": {
    "id": 103,
    "title": "The Autumn Effect",
    "type": "album",
    "score": 8.6,
    "score_scale": 10,
    "excerpt": "The Autumn Effect laat goed horen wat sfeer binnen een vrij directe rocksong kan doen. 10 Years heeft zware gitaren en grote refreinen, maar de rustige passages zijn vaak net zo interessant. Een herhaalde gitaarlijn, wat ruimte rond de drums en Jesse Haseks stem kunnen spanning maken lang voordat het volume stijgt. Waking Up introduceert die balans meteen. De zang heeft beheerste intensiteit en d…",
    "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect",
    "api_url": "https://groovegauge.com/nl/api/v1/reviews/103",
    "published_at": "2026-01-02T10:00:00+01:00",
    "spotify": {
      "type": "album",
      "id": "1VlMcoG1aI4E4kBIVoH5cp",
      "url": "https://open.spotify.com/album/1VlMcoG1aI4E4kBIVoH5cp"
    },
    "artists": [
      {
        "id": 20,
        "name": "10 Years",
        "url": "https://groovegauge.com/nl/artist/bio/10-years",
        "api_url": "https://groovegauge.com/nl/api/v1/artists/20",
        "spotify_id": "0REMf7H0VP6DwfZ9MbuWph",
        "spotify_url": "https://open.spotify.com/artist/0REMf7H0VP6DwfZ9MbuWph"
      }
    ],
    "genres": [
      {
        "id": 30,
        "name": "Alternatieve metal",
        "slug": "alternative-metal"
      },
      {
        "id": 4,
        "name": "Metal",
        "slug": "metal"
      },
      {
        "id": 23,
        "name": "Postgrunge",
        "slug": "post-grunge"
      },
      {
        "id": 2,
        "name": "Rock",
        "slug": "rock"
      }
    ],
    "release": {
      "id": 87,
      "title": "The Autumn Effect",
      "type": "album",
      "release_date": "2005-08-16",
      "date_precision": "day",
      "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect",
      "api_url": "https://groovegauge.com/nl/api/v1/releases/87"
    }
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}

Kies een voorbeeld

Alle cURL-voorbeelden gebruiken de omgevingsvariabele GROOVEGAUGE_API_KEY uit het eerste voorbeeld.

Haal de nieuwste albumreviews op

Gebruik type=single voor singlereviews. Laat type weg om beide op te halen.

cURL
curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'type=album' \
  --data-urlencode 'per_page=4' \
  'https://groovegauge.com/nl/api/v1/reviews'

Zoek een artiest op naam

Begin met 10 Years. Gebruik daarna het GrooveGauge-ID uit de response, of volg reviews_url en releases_url.

cURL
curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'q=10 Years' \
  --data-urlencode 'per_page=1' \
  'https://groovegauge.com/nl/api/v1/artists'

Ingekorte API-response. Klap open voor het volledige voorbeeld.

JSON
{
  "data": [
    {
      "id": 20,
      "name": "10 Years",
      "url": "https://groovegauge.com/nl/artist/bio/10-years",
      "api_url": "https://groovegauge.com/nl/api/v1/artists/20",
      "spotify_id": "0REMf7H0VP6DwfZ9MbuWph",
      "spotify_url": "https://open.spotify.com/artist/0REMf7H0VP6DwfZ9MbuWph",
      "reviews_url": "https://groovegauge.com/nl/api/v1/reviews?artist_id=20",
      "releases_url": "https://groovegauge.com/nl/api/v1/releases?artist_id=20"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 1,
    "total": 1,
    "pages": 1
  },
  "links": {
    "self": "https://groovegauge.com/nl/api/v1/artists?page=1&per_page=1&q=10%20Years",
    "next": null,
    "previous": null
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}
Volledige response
JSON
{
  "data": [
    {
      "id": 20,
      "name": "10 Years",
      "url": "https://groovegauge.com/nl/artist/bio/10-years",
      "api_url": "https://groovegauge.com/nl/api/v1/artists/20",
      "spotify_id": "0REMf7H0VP6DwfZ9MbuWph",
      "spotify_url": "https://open.spotify.com/artist/0REMf7H0VP6DwfZ9MbuWph",
      "reviews_url": "https://groovegauge.com/nl/api/v1/reviews?artist_id=20",
      "releases_url": "https://groovegauge.com/nl/api/v1/releases?artist_id=20"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 1,
    "total": 1,
    "pages": 1
  },
  "links": {
    "self": "https://groovegauge.com/nl/api/v1/artists?page=1&per_page=1&q=10%20Years",
    "next": null,
    "previous": null
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}

Haal de reviews en releases van die artiest op

De vorige response geeft artiest-ID 20. Dit zijn twee afzonderlijke lijsten.

cURL
curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'artist_id=20' \
  --data-urlencode 'per_page=4' \
  'https://groovegauge.com/nl/api/v1/reviews'

curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'artist_id=20' \
  --data-urlencode 'per_page=4' \
  'https://groovegauge.com/nl/api/v1/releases'

Zoek met een Spotify-artiest, album of track

Gebruik het ID van 22 tekens uit de Spotify-URL. Een Spotify-album-ID kan ook bij een EP horen. Alleen gecontroleerde koppelingen leveren resultaten op.

cURL
curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'spotify_id=0REMf7H0VP6DwfZ9MbuWph' \
  --data-urlencode 'spotify_type=artist' \
  --data-urlencode 'per_page=3' \
  'https://groovegauge.com/nl/api/v1/search'

curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'spotify_id=1VlMcoG1aI4E4kBIVoH5cp' \
  --data-urlencode 'spotify_type=album' \
  'https://groovegauge.com/nl/api/v1/releases'

curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'spotify_id=6pxbcXuvW2GoEjPZP1c84Q' \
  --data-urlencode 'spotify_type=track' \
  'https://groovegauge.com/nl/api/v1/releases'

Haal een album en de bijbehorende review op

The Autumn Effect is release 87. Bij een release vind je scores onder reviews[].score; alleen reviewobjecten hebben zelf een score-veld. Volg reviews_url voor alle reviews.

cURL
curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  'https://groovegauge.com/nl/api/v1/releases/87'

curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'release_id=87' \
  'https://groovegauge.com/nl/api/v1/reviews'

Ingekorte API-response. Klap open voor het volledige voorbeeld.

JSON
{
  "data": {
    "id": 87,
    "title": "The Autumn Effect",
    "type": "album",
    "release_date": "2005-08-16",
    "date_precision": "day",
    "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect",
    "reviews_url": "https://groovegauge.com/nl/api/v1/reviews?release_id=87",
    "spotify": [
      {
        "type": "album",
        "id": "1VlMcoG1aI4E4kBIVoH5cp",
        "url": "https://open.spotify.com/album/1VlMcoG1aI4E4kBIVoH5cp"
      }
    ],
    "reviews": [
      {
        "id": 103,
        "title": "The Autumn Effect",
        "score": 8.6,
        "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect"
      }
    ]
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}
Volledige response
JSON
{
  "data": {
    "id": 87,
    "title": "The Autumn Effect",
    "type": "album",
    "release_date": "2005-08-16",
    "date_precision": "day",
    "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect",
    "api_url": "https://groovegauge.com/nl/api/v1/releases/87",
    "artists": [
      {
        "id": 20,
        "name": "10 Years",
        "url": "https://groovegauge.com/nl/artist/bio/10-years",
        "api_url": "https://groovegauge.com/nl/api/v1/artists/20",
        "spotify_id": "0REMf7H0VP6DwfZ9MbuWph",
        "spotify_url": "https://open.spotify.com/artist/0REMf7H0VP6DwfZ9MbuWph"
      }
    ],
    "genres": [
      {
        "id": 30,
        "name": "Alternatieve metal",
        "slug": "alternative-metal"
      },
      {
        "id": 4,
        "name": "Metal",
        "slug": "metal"
      },
      {
        "id": 23,
        "name": "Postgrunge",
        "slug": "post-grunge"
      },
      {
        "id": 2,
        "name": "Rock",
        "slug": "rock"
      }
    ],
    "reviews": [
      {
        "id": 103,
        "title": "The Autumn Effect",
        "score": 8.6,
        "excerpt": "The Autumn Effect laat goed horen wat sfeer binnen een vrij directe rocksong kan doen. 10 Years heeft zware gitaren en grote refreinen, maar de rustige passages zijn vaak net zo interessant. Een herhaalde gitaarlijn, wat ruimte rond de drums en Jesse Haseks stem kunnen spanning maken lang voordat het volume stijgt. Waking Up introduceert die balans meteen. De zang heeft beheerste intensiteit en d…",
        "url": "https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect",
        "api_url": "https://groovegauge.com/nl/api/v1/reviews/103"
      }
    ],
    "reviews_url": "https://groovegauge.com/nl/api/v1/reviews?release_id=87",
    "spotify": [
      {
        "type": "album",
        "id": "1VlMcoG1aI4E4kBIVoH5cp",
        "url": "https://open.spotify.com/album/1VlMcoG1aI4E4kBIVoH5cp"
      }
    ]
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}

Zoek genres en filter reviews

Genre 30 is alternatieve metal. Gebruik het numerieke genre-ID, niet de vertaalde naam. Dit voorbeeld selecteert albumreviews.

cURL
curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'per_page=50' \
  'https://groovegauge.com/nl/api/v1/genres'

curl --fail-with-body --silent --show-error --get \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --data-urlencode 'genre_id=30' \
  --data-urlencode 'type=album' \
  --data-urlencode 'per_page=4' \
  'https://groovegauge.com/nl/api/v1/reviews'

Wissel tussen Engels en Nederlands

ID’s, artiestennamen, titels en scores zijn gelijk. Wissel de basis-URL om de taal van fragmenten en paginalinks te kiezen. Ontbreekt een Nederlandse publicatie, dan verschijnt die niet in de lijst en geeft de detail-URL een 404.

cURL
curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  'https://groovegauge.com/en/api/v1/reviews/103'

curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  'https://groovegauge.com/nl/api/v1/reviews/103'

Lees de volgende pagina

Volg links.next tot de waarde null is. Wil je de lus voor /artists, /releases of /genres gebruiken, pas dan de start-URL aan en gebruik alleen ondersteunde filters. Verwijder artist_id=20 om de volledige reviewindex te doorlopen. Vraag de pagina’s na elkaar op.

Node.js
// paginate.mjs: server-side, using the same environment variable
import { setTimeout as sleep } from 'node:timers/promises';
const key = process.env.GROOVEGAUGE_API_KEY;
if (!key) throw new Error('Set GROOVEGAUGE_API_KEY first');

async function getPage(url) {
  for (let attempt = 0; attempt < 3; attempt++) {
    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${key}` },
      signal: AbortSignal.timeout(15000),
    });
    if (response.status === 429 && attempt < 2) {
      const seconds = Number(response.headers.get('Retry-After') ?? '5');
      if (!Number.isFinite(seconds) || seconds > 60) {
        throw new Error('Quota reached. Try again later.');
      }
      await sleep(Math.max(1, seconds) * 1000);
      continue;
    }
    const body = await response.json();
    if (!response.ok) throw new Error(`${response.status}: ${body.error?.message}`);
    return body;
  }
}

let url = 'https://groovegauge.com/nl/api/v1/reviews?artist_id=20&per_page=50';
while (url) {
  const page = await getPage(url);
  for (const review of page.data) console.log(review.title, 'Bron: GrooveGauge', review.url);
  url = page.links.next;
  if (url) await sleep(1100);
}

De pauze voorkomt dat je te snel aanvragen verstuurt. De limieten gelden samen voor je andere sleutels en beide talen, dus een druk account kan alsnog 429 teruggeven. Dit voorbeeld wacht kort en stopt bij een lange wachttijd, in plaats van een hele dag te blijven draaien.

Toon een compact reviewblok

Gebruik de url van de review als openbare link. Escape titels en fragmenten als tekst. De zichtbare bronvermelding van GrooveGauge is verplicht, ook in apps die met AI zijn gebouwd. Zet de vermelding en de oorspronkelijke scoreschaal bij de inhoud.

The Autumn Effect

8.6/10 · Bron: GrooveGauge

The Autumn Effect laat goed horen wat sfeer binnen een vrij directe rocksong kan doen. 10 Years heeft zware gitaren en grote refreinen, maar de rustige passages zijn vaak net zo interessant. Een herhaalde gitaarlijn, wat ruimte rond de drums en Jesse Haseks stem kunnen spanning maken lang voordat het volume stijgt. Waking Up introduceert die balans meteen. De zang heeft beheerste intensiteit en d…

Oorspronkelijke redactionele tekst © GrooveGauge

Lees de volledige review op GrooveGauge
PHP
<?php
// review-card.php: serve this file from your PHP backend
$key = getenv('GROOVEGAUGE_API_KEY');
if (!$key) throw new RuntimeException('Set GROOVEGAUGE_API_KEY first');

$request = curl_init('https://groovegauge.com/nl/api/v1/reviews/103');
curl_setopt_array($request, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 15,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $key],
]);
$raw = curl_exec($request);
if ($raw === false) throw new RuntimeException(curl_error($request));
$status = curl_getinfo($request, CURLINFO_RESPONSE_CODE);
curl_close($request);
$body = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
if ($status < 200 || $status >= 300) {
    throw new RuntimeException($status . ': ' . ($body['error']['message'] ?? 'Request failed'));
}

$review = $body['data'];

// Render the fetched review as HTML.
function escape_html($value): string {
    return htmlspecialchars((string)$value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
$score = $review['score'] === null
    ? 'Geen score'
    : $review['score'] . '/' . $review['score_scale'];
?>
<article>
  <h2><a href="<?= escape_html($review['url']) ?>"><?= escape_html($review['title']) ?></a></h2>
  <p><?= escape_html($score) ?> · Bron: <a href="<?= escape_html($review['url']) ?>">GrooveGauge</a></p>
  <p><?= escape_html($review['excerpt']) ?></p>
  <p>Oorspronkelijke redactionele tekst © GrooveGauge</p>
  <a href="<?= escape_html($review['url']) ?>">Lees de volledige review op GrooveGauge</a>
</article>

Ga om met lege resultaten en fouten

Een lege lijst is een geslaagde aanvraag, geen fout. De artiest kan nog ontbreken, je filter kan geen resultaten geven of een Spotify-koppeling is nog niet gecontroleerd.

JSON
{
  "data": [],
  "meta": {
    "page": 1,
    "per_page": 1,
    "total": 0,
    "pages": 0
  },
  "links": {
    "self": "https://groovegauge.com/nl/api/v1/reviews?page=1&per_page=1&q=NoSuchAlbumExampleQZX",
    "next": null,
    "previous": null
  },
  "attribution": {
    "name": "GrooveGauge",
    "url": "https://groovegauge.com/nl/",
    "required": true,
    "instructions": "Vermeld bij elk gebruik van API-content zichtbaar \"Bron: GrooveGauge\" naast de content, met een link naar de oorspronkelijke review-, artiesten- of releasepagina uit het url-veld. Ontbreekt die URL, link dan naar GrooveGauge. Gebruik bij tekst zonder hyperlinks de volledige bron-URL.",
    "copyright": "© GrooveGauge. Het auteursrecht op onze oorspronkelijke redactionele teksten blijft bij GrooveGauge. API-toegang draagt geen eigendom over.",
    "ai_instructions": "Deze bronvermelding is ook verplicht in met AI gebouwde integraties en bij samenvattingen, vertalingen of herschreven teksten. Behoud de naam GrooveGauge en de oorspronkelijke bronlink; presenteer onze redactionele content niet als eigen werk.",
    "third_party_rights": "Rechten op artwork, foto's en materiaal van andere aanbieders blijven bij de betreffende rechthebbenden.",
    "terms_url": "https://groovegauge.com/nl/api/v1/docs#usage"
  }
}

Lees een foutmelding

HTTP 400 · JSON
{
  "error": {
    "code": "invalid_parameter",
    "message": "Invalid positive integer parameter."
  }
}
HTTPWat je kunt doen
400Controleer parameternamen, positieve ID’s en limieten. Onbekende parameters worden geweigerd.
401Stuur een geldige API-sleutel in Authorization: Bearer. Een inlogcookie van de website is geen API-sleutel.
403De API-toegang van het account is geblokkeerd. Bekijk je accountoverzicht.
404De gegevens bestaan niet of zijn niet gepubliceerd in deze taal.
405Gebruik GET, HEAD of OPTIONS. Je kunt via deze API geen gegevens wijzigen.
429Wacht het aantal seconden uit Retry-After. Herhaal de aanvraag niet meteen.
503Tijdelijk probleem. Wacht volgens Retry-After en probeer het later opnieuw.

Bekijk de status en limietheaders

cURL
curl --include --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  'https://groovegauge.com/nl/api/v1/reviews?per_page=1'

Standaard mag je 60 aanvragen per UTC-minuut doen, 10 per UTC-venster van vijf seconden en 5.000 per UTC-dag. Je accountoverzicht en de responseheaders tonen je eigen limieten. Alle sleutels en beide talen delen het accountquotum.

RateLimit-Reset is een aantal seconden, geen Unix-tijdstempel. Bewaar X-Request-ID als je een mislukte aanvraag wilt onderzoeken.

Gebruik conditionele aanvragen

Lees ETag uit een response en stuur die waarde mee in If-None-Match voor dezelfde URL. Als de gegevens gelijk zijn, krijg je HTTP 304 zonder JSON-body. Controleer daarom eerst de status voordat je response.json() aanroept. Ook HEAD- en 304-aanvragen tellen mee voor je quotum.

cURL
curl --include --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  'https://groovegauge.com/nl/api/v1/reviews/103'

# Replace this with the ETag value from the first response, including its quotes.
GROOVEGAUGE_ETAG='"ETAG_FROM_FIRST_RESPONSE"'
curl --include --silent --show-error \
  --header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
  --header "If-None-Match: $GROOVEGAUGE_ETAG" \
  'https://groovegauge.com/nl/api/v1/reviews/103'

Beknopt overzicht

EndpointOndersteunde filters
/reviewspage, per_page, q, artist_id, release_id, genre_id, type, spotify_id, spotify_type
/artistspage, per_page, q, genre_id, spotify_id, spotify_type=artist
/releasespage, per_page, q, artist_id, genre_id, type, spotify_id, spotify_type
/genrespage, per_page
/searchpage, per_page, q, spotify_id, spotify_type
  • GET /reviews/103, /artists/20, /releases/87 en /genres/30 geven één object in data. Detail-URL’s accepteren geen queryparameters.
  • Lijsten geven een array in data, met meta, links en attribution. Standaard per_page=20, maximaal 50. Zoeken geeft standaard 10 per groep, maximaal 20. page ligt tussen 1 en 10.000.
  • q is een letterlijke zoekterm van 2 tot 120 tekens; hoofdletters maken geen verschil. Zoeken vereist q of spotify_id. Voor spotify_type is ook spotify_id nodig.
  • Reviewtypes: album, single. Releasetypes ondersteunen daarnaast ep, live en compilation.
  • Een GrooveGauge-ID is een geheel getal. Een Spotify-ID is een tekenreeks van 22 tekens. Houd die twee uit elkaar.
  • Een reviewscore is een getal of null, op een schaal van 10. Een release zonder review heeft reviews: []; maak daar geen nulscore van.
  • Reviewfragmenten bevatten maximaal 400 Unicode-tekens inclusief het beletselteken. Bij korte reviews verschijnt maximaal 60% van de tekst; onder 40 tekens blijft het fragment leeg. Volledige reviews zijn niet beschikbaar via de API.
  • Datums volgen de bekende precisie. release_date kan een jaar, maand, volledige datum of null zijn. Controleer date_precision. published_at is de publicatiedatum van de review.
  • De url van een release wijst naar de review als die gepubliceerd is, anders naar de releasepagina. Artiestenlinks kunnen naar de Engelse versie wijzen als er nog geen Nederlandse bio is. JSON-veldnamen blijven Engels.
  • Gegevensendpoints en de JSON-API-index vereisen een Bearer-sleutel. Deze documentatie, het OpenAPI-bestand en OPTIONS-preflightaanvragen zijn openbaar. Alleen GET, HEAD en OPTIONS worden ondersteund.

Download de OpenAPI-specificatie met aanvraag- en responsevoorbeelden

Bronvermelding, auteursrecht en AI-tools

Bij elk gebruik van content uit deze API is bronvermelding van GrooveGauge verplicht. Zet een zichtbare GrooveGauge-vermelding bij ieder reviewfragment, cijfer, artiestenbeschrijving of release-item dat je toont, deelt of hergebruikt. Link naar de oorspronkelijke GrooveGauge-pagina via het url-veld van dat item. Gebruik de homepage alleen als er geen eigen pagina beschikbaar is. Een vermelding in de code, JSON, een Over ons-pagina of algemene footer vervangt de bronvermelding naast de content niet.

Kan een uitvoer geen klikbare links bevatten, voeg dan de oorspronkelijke pagina-URL als gewone tekst toe. Behoud de bronvermelding ook wanneer je content exporteert of elders deelt.

Het auteursrecht op de eigen redactionele teksten van GrooveGauge blijft bij GrooveGauge. Toegang tot de API draagt dat auteursrecht niet over en maakt de teksten niet rechtenvrij. Voor artwork, foto’s, artiestennamen en gegevens van andere aanbieders gelden hun eigen rechten; GrooveGauge claimt daarop geen eigendom.

Bouwen met AI

Dezelfde bronvermelding is verplicht in apps die met AI zijn gebouwd en bij AI-samenvattingen, vertalingen of herschreven teksten op basis van onze content. Behoud de GrooveGauge-vermelding en de oorspronkelijke paginalink wanneer je teksten inkort, anders opmaakt, vertaalt of parafraseert. Maak duidelijk welke bewerkingen van jou zijn en wat de oorspronkelijke tekst is.

Geef de volgende instructie mee wanneer je een AI-tool je integratie laat bouwen:

Instructie voor je AI-tool
Zet bij ieder item uit de GrooveGauge API dat deze integratie toont, deelt
of hergebruikt een zichtbare vermelding "Bron: GrooveGauge". Link die naar de
oorspronkelijke GrooveGauge-pagina via het url-veld, niet naar de API-URL.
Behoud deze vermelding en link in samenvattingen, vertalingen, herschreven
teksten en exports. Het auteursrecht op de eigen redactionele teksten
blijft bij GrooveGauge. Kan de uitvoer geen links bevatten, vermeld dan de
oorspronkelijke pagina-URL als gewone tekst.

Een bronvermelding om over te nemen

Zet deze link naast de content waarnaar hij verwijst. Vervang de voorbeeld-URL door de url van het betreffende item.

HTML
<p>
  Bron: <a href="https://groovegauge.com/nl/album-reviews/10-years-the-autumn-effect">GrooveGauge</a>
  · Oorspronkelijke redactionele tekst © GrooveGauge
</p>

Elke geslaagde dataresponse bevat een attribution-object. Geef dit door via je backend en behoud het in opgeslagen of geëxporteerde responses. Je interface moet de bronvermelding en oorspronkelijke paginalink daarnaast zichtbaar tonen aan de lezer.

Houd scores op de oorspronkelijke schaal van 10. De API biedt compacte muziekinformatie en reviewfragmenten, geen volledige artikelen, biografieën of inzendings- en contactgegevens.

Je API-overzicht toont verbruik, fouten, limieten, responstijden en cachehits. Aanvraagdetails worden 30 dagen bewaard en dagtotalen 366 dagen. API-logs bewaren geen ruwe sleutels, autorisatieheaders of zoektekst; IP-adressen worden alleen als keyed hash opgeslagen.

De JSON-voorbeelden zijn momentopnamen van gepubliceerde gegevens. Resultaten en aantallen kunnen veranderen wanneer de catalogus groeit.