curl --request GET \
--url https://api.sportquanta.com/v1/nba/team-dvp \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/nba/team-dvp"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sportquanta.com/v1/nba/team-dvp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportquanta.com/v1/nba/team-dvp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportquanta.com/v1/nba/team-dvp"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportquanta.com/v1/nba/team-dvp")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/nba/team-dvp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"season": 123,
"items": [
{
"team_id": "<string>",
"season": 123,
"position": "<string>",
"games": 123,
"row_count": 123,
"points_allowed": 123,
"rebounds_allowed": 123,
"assists_allowed": 123,
"three_pointers_made_allowed": 123,
"steals_allowed": 123,
"blocks_allowed": 123,
"ranks": {
"points": 123,
"rebounds": 123,
"assists": 123,
"three_pointers_made": 123,
"steals": 123,
"blocks": 123
},
"position_source": {
"box_rows": 123,
"fallback_rows": 123,
"box_share": 123,
"fallback_share": 123
},
"excluded_rows": 123,
"id": "<string>",
"canonical_id": "<string>",
"external_ids": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"position": "<string>"
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Defense vs. position
NBA-only route. Reads the derived team_dvp collection — one
record per (team, season, position bucket) carrying per-game
averages of what OPPOSING players at that position produced
against the team across the season’s Final games
(points/rebounds/assists/threes/steals/blocks allowed), plus
per-stat league ranks (1 = stingiest defense), the
position-attribution source breakdown, and the excluded-row
caveat counter. Position buckets are the five fine positions
(PG/SG/SF/PF/C) plus the coarse G/F fallbacks
box scores use for non-starters. Items are sorted by position
bucket then points rank.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
curl --request GET \
--url https://api.sportquanta.com/v1/nba/team-dvp \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/nba/team-dvp"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sportquanta.com/v1/nba/team-dvp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportquanta.com/v1/nba/team-dvp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportquanta.com/v1/nba/team-dvp"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportquanta.com/v1/nba/team-dvp")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/nba/team-dvp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"season": 123,
"items": [
{
"team_id": "<string>",
"season": 123,
"position": "<string>",
"games": 123,
"row_count": 123,
"points_allowed": 123,
"rebounds_allowed": 123,
"assists_allowed": 123,
"three_pointers_made_allowed": 123,
"steals_allowed": 123,
"blocks_allowed": 123,
"ranks": {
"points": 123,
"rebounds": 123,
"assists": 123,
"three_pointers_made": 123,
"steals": 123,
"blocks": 123
},
"position_source": {
"box_rows": 123,
"fallback_rows": 123,
"box_share": 123,
"fallback_share": 123
},
"excluded_rows": 123,
"id": "<string>",
"canonical_id": "<string>",
"external_ids": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"position": "<string>"
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Authorizations
Send a workspace API token in the Authorization: Bearer <token> header.
Query Parameters
Season start year (2025 for the 2025-26 season).
1946 <= x <= 2100Optional filter to one DVP position bucket.
PG, SG, SF, PF, C, G, F Response
Defense-vs-position payload (season, items).
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
live, cache Response cache TTL; independent of source freshness. Omitted when zero.
Endpoint-specific availability context, including soccer roster coverage.