curl --request GET \
--url https://api.pav.bio/v1/drugs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.pav.bio/v1/drugs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.pav.bio/v1/drugs', 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.pav.bio/v1/drugs",
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.pav.bio/v1/drugs"
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.pav.bio/v1/drugs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pav.bio/v1/drugs")
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": [
{
"drug_id": 5120,
"name": "duvakitug",
"kind": "originator",
"inn": "duvakitug",
"aliases": [
{
"alias": "TEV-'574",
"kind": "code"
}
],
"modality": "antibody",
"modality_subclass": "sirna",
"modality_formats": [
"bispecific"
],
"highest_phase": "Phase 3",
"program_count": 3,
"companies": [
{
"company_id": 412,
"name": "Sanofi",
"short_name": "sanofi",
"program_count": 2,
"highest_phase": "Phase 3"
}
]
}
],
"pagination": {
"limit": 100,
"offset": 0,
"total": 590355
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}Look up drugs by name
Find drugs by any of their names: INN, research code or brand (duvakitug, TEV-574, Leqvio). Case, spaces, hyphens and trademark signs are ignored, but the name must be complete. Each drug lists every company with programs of it (originator, partners, licensees) and its most advanced phase. Without q, lists drugs by phase; multi_company=true keeps drugs held by more than one company.
curl --request GET \
--url https://api.pav.bio/v1/drugs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.pav.bio/v1/drugs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.pav.bio/v1/drugs', 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.pav.bio/v1/drugs",
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.pav.bio/v1/drugs"
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.pav.bio/v1/drugs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pav.bio/v1/drugs")
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": [
{
"drug_id": 5120,
"name": "duvakitug",
"kind": "originator",
"inn": "duvakitug",
"aliases": [
{
"alias": "TEV-'574",
"kind": "code"
}
],
"modality": "antibody",
"modality_subclass": "sirna",
"modality_formats": [
"bispecific"
],
"highest_phase": "Phase 3",
"program_count": 3,
"companies": [
{
"company_id": 412,
"name": "Sanofi",
"short_name": "sanofi",
"program_count": 2,
"highest_phase": "Phase 3"
}
]
}
],
"pagination": {
"limit": 100,
"offset": 0,
"total": 590355
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}{
"error": {
"code": "not_found",
"message": "program 999999 not found",
"request_id": "3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d"
}
}Authorizations
Use a personal or organization Pav API key from Pav developer settings. Send it as Authorization: Bearer <api_key>.
Query Parameters
Drug name, code or brand. Repeatable (any may match).
"duvakitug"
Drugs with programs at these Pav company ids (and, by default, the companies they own). Repeatable.
412
Include the records of companies the given company owns (acquired companies and subsidiaries). Set false for the company's own records only.
true
Only drugs with programs at more than one company.
true
Lifecycle states to include. Repeatable. Defaults to active. inactive: a program known only from clinical trials whose trials have all closed. discontinued: dropped from the company's pipeline.
active, inactive, discontinued "discontinued"
Maximum drugs to return (1-500).
1 <= x <= 50050
Zero-based row offset.
0 <= x <= 1000000