POST vep/:species/id

Fetch variant consequences for multiple ids

Parameters

Required

NameTypeDescriptionDefaultExample Values
species String Species name/alias - homo_sapiens
human

Optional

NameTypeDescriptionDefaultExample Values
Blosum62 Boolean Include BLOSUM62 amino acid conservation score (plugin details) 0 -
CSN Boolean Reports Clinical Sequencing Nomenclature (CSN) for variants (plugin details) 0 -
GeneSplicer Boolean Detects splice sites in genomic DNA (plugin details) 0 -
MaxEntScan Boolean Sequence motif and maximum entropy based splice site consensus predictions (plugin details) 0 -
appris Boolean Include APPRIS isoform annotation 0 -
callback String Name of the callback subroutine to be returned by the requested JSONP response. Required ONLY when using JSONP as the serialisation method. Please see the user guide. - randomlygeneratedname
canonical Boolean Include a flag indicating the canonical transcript for a gene 0 -
ccds Boolean Include CCDS transcript identifiers 0 -
dbNSFP String Include fields from dbNSFP, a database of pathogenicity predictions for missense variants. Multiple fields should be separated by commas. See dbNSFP README for field list. (plugin details) Not used LRT_pred,MutationTaster_pred
dbscSNV Boolean Predictions for splicing variants from dbscSNV. (plugin details) 0 -
distance Integer Change the distance to transcript for which VEP assigns upstream and downstream consequences 5000 -
domains Boolean Include names of overlapping protein domains 0 -
failed Boolean When checking for co-located variants, by default variants flagged as failed by Ensembl's QC pipeline will be excluded. Set this flag to 1 to include such variants 0 -
hgvs Boolean Include HGVS nomenclature based on Ensembl stable identifiers 0 -
merged Boolean Use merged Ensembl and RefSeq transcript set to report consequences (human only) 0 -
miRNA Boolean Determines where in the secondary structure of a miRNA a variant falls (plugin details) 0 -
minimal Boolean Convert alleles to their most minimal representation before consequence calculation i.e. sequence that is identical between each pair of reference and alternate alleles is trimmed off from both ends, with coordinates adjusted accordingly. Note this may lead to discrepancies between input coordinates and coordinates reported by VEP relative to transcript sequences 0 -
numbers Boolean Include affected exon and intron positions within the transcript 0 -
protein Boolean Include Ensembl protein identifiers 0 -
refseq Boolean Use RefSeq transcript set to report consequences (human only) 0 -
tsl Boolean Include transcript support level (TSL) annotation 0 -
uniprot Boolean Include best match accessions for translated protein products from three UniProt-related databases (SWISSPROT, TREMBL and UniParc) 0 -
variant_class Boolean Output the Sequence Ontology variant class for the input variant 0 -
xref_refseq Boolean Include aligned RefSeq mRNA identifiers for transcript. NB: theRefSeq and Ensembl transcripts aligned in this way MAY NOT, AND FREQUENTLY WILL NOT, match exactly in sequence, exon structure and protein product 0 -

Message

Content-typeFormatExample
application/json{ "ids": array }{ "ids" : ["rs56116432", "COSM476" ] }

Example Requests

/vep/human/id


{ "ids" : ["rs56116432", "COSM476" ] }
        
use strict;
use warnings;

use HTTP::Tiny;

my $http = HTTP::Tiny->new();

my $server = 'http://rest.ensembl.org';
my $ext = '/vep/human/id';
my $response = $http->request('POST', $server.$ext, {
  headers => { 
  	'Content-type' => 'application/json',
  	'Accept' => 'application/json'
  },
  content => '{ "ids" : ["rs56116432", "COSM476" ] }'
});

die "Failed!\n" unless $response->{success};


use JSON;
use Data::Dumper;
if(length $response->{content}) {
  my $hash = decode_json($response->{content});
  local $Data::Dumper::Terse = 1;
  local $Data::Dumper::Indent = 1;
  print Dumper $hash;
  print "\n";
}

import requests, sys

server = "http://rest.ensembl.org"
ext = "/vep/human/id"
headers={ "Content-Type" : "application/json", "Accept" : "application/json"}
r = requests.post(server+ext, headers=headers, data='{ "ids" : ["rs56116432", "COSM476" ] }')

if not r.ok:
  r.raise_for_status()
  sys.exit()

decoded = r.json()
print repr(decoded)

import requests, sys

server = "http://rest.ensembl.org"
ext = "/vep/human/id"
headers={ "Content-Type" : "application/json", "Accept" : "application/json"}
r = requests.post(server+ext, headers=headers, data='{ "ids" : ["rs56116432", "COSM476" ] }')

if not r.ok:
  r.raise_for_status()
  sys.exit()

decoded = r.json()
print(repr(decoded))

require 'net/http'
require 'uri'

server='http://rest.ensembl.org'
path = '/vep/human/id'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(path, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
request.body = '{ "ids" : ["rs56116432", "COSM476" ] }'

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


require 'rubygems'
require 'json'
require 'yaml'

result = JSON.parse(response.body)
puts YAML::dump(result)

import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.Reader;
import java.io.DataOutputStream;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "http://rest.ensembl.org";
    String ext = "/vep/human/id";
    URL url = new URL(server + ext);

    URLConnection connection = url.openConnection();
    HttpURLConnection httpConnection = (HttpURLConnection)connection;
    
    String postBody = "{ \"ids\" : [\"rs56116432\", \"COSM476\" ] }";
    httpConnection.setRequestMethod("POST");
    httpConnection.setRequestProperty("Content-Type", "application/json");
    httpConnection.setRequestProperty("Accept", "application/json");
    httpConnection.setRequestProperty("Content-Length", Integer.toString(postBody.getBytes().length));
    httpConnection.setUseCaches(false);
    httpConnection.setDoInput(true);
    httpConnection.setDoOutput(true);

    DataOutputStream wr = new DataOutputStream(httpConnection.getOutputStream());
    wr.writeBytes(postBody);
    wr.flush();
    wr.close();
    

    InputStream response = connection.getInputStream();
    int responseCode = httpConnection.getResponseCode();

    if(responseCode != 200) {
      throw new RuntimeException("Response code was not 200. Detected response was "+responseCode);
    }

    String output;
    Reader reader = null;
    try {
      reader = new BufferedReader(new InputStreamReader(response, "UTF-8"));
      StringBuilder builder = new StringBuilder();
      char[] buffer = new char[8192];
      int read;
      while ((read = reader.read(buffer, 0, buffer.length)) > 0) {
        builder.append(buffer, 0, read);
      }
      output = builder.toString();
    } 
    finally {
        if (reader != null) try {
          reader.close(); 
        } catch (IOException logOrIgnore) {
          logOrIgnore.printStackTrace();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "http://rest.ensembl.org"
ext <- "/vep/human/id"
r <- POST(paste(server, ext, sep = ""), content_type("application/json"), accept("application/json"), body = '{ "ids" : ["rs56116432", "COSM476" ] }')

stop_for_status(r)

# use this if you get a simple nested list back, otherwise inspect its structure
# head(data.frame(t(sapply(content(r),c))))
head(fromJSON(toJSON(content(r))))

curl 'http://rest.ensembl.org/vep/human/id' -H 'Content-type:application/json' \
-H 'Accept:application/json' -X POST -d '{ "ids" : ["rs56116432", "COSM476" ] }'

wget -q --header='Content-type:application/json' --header='Accept:application/json' \
--post-data='{ "ids" : ["rs56116432", "COSM476" ] }' \
'http://rest.ensembl.org/vep/human/id'  -O -

Resource Information

MethodsPOST
Response formatsjson
xml
jsonp
Maximum POST size200