POST sequence/region/:species

Request multiple types of sequence by a list of regions.

Parameters

Required

NameTypeDescriptionDefaultExample Values
species String Species name/alias - homo_sapiens
human

Optional

NameTypeDescriptionDefaultExample Values
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
coord_system String Filter by coordinate system name - contig
seqlevel
coord_system_version String Filter by coordinate system version - GRCh37
expand_3prime Int Expand the sequence downstream of the sequence by this many basepairs. Only available when using genomic sequence type. - 1000
expand_5prime Int Expand the sequence upstream of the sequence by this many basepairs. Only available when using genomic sequence type. - 1000
format Enum(fasta) Format of the data. - fasta
mask Enum(hard,soft) Request the sequence masked for repeat sequences. Hard will mask all repeats as N's and soft will mask repeats as lower cased characters. Only available when using genomic sequence type. - hard
mask_feature Boolean Mask features on the sequence. If sequence is genomic, mask introns. If sequence is cDNA, mask UTRs. Incompatible with the 'mask' option 0 1

Message

Content-typeFormatExample
application/json{ "regions": array }{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }

Example Requests

/sequence/region/human


{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }
        
use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/sequence/region/human';
my $response = $http->request('POST', $server.$ext, {
  headers => { 
  	'Content-type' => 'application/json',
  	'Accept' => 'application/json'
  },
  content => '{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }'
});

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 = "https://rest.ensembl.org"
ext = "/sequence/region/human"
headers={ "Content-Type" : "application/json", "Accept" : "application/json"}
r = requests.post(server+ext, headers=headers, data='{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }')

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

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

import requests, sys

server = "https://rest.ensembl.org"
ext = "/sequence/region/human"
headers={ "Content-Type" : "application/json", "Accept" : "application/json"}
r = requests.post(server+ext, headers=headers, data='{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }')

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

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

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/sequence/region/human'

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 = '{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }'

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 = "https://rest.ensembl.org";
    String ext = "/sequence/region/human";
    URL url = new URL(server + ext);

    URLConnection connection = url.openConnection();
    HttpURLConnection httpConnection = (HttpURLConnection)connection;
    
    String postBody = "{ \"regions\" : [\"X:1000000..1000100:1\", \"ABBA01004489.1:1..100\"] }";
    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 <- "https://rest.ensembl.org"
ext <- "/sequence/region/human"
r <- POST(paste(server, ext, sep = ""), content_type("application/json"), accept("application/json"), body = '{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }')

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 'https://rest.ensembl.org/sequence/region/human' -H 'Content-type:application/json' \
-H 'Accept:application/json' -X POST -d '{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }'

wget -q --header='Content-type:application/json' --header='Accept:application/json' \
--post-data='{ "regions" : ["X:1000000..1000100:1", "ABBA01004489.1:1..100"] }' \
'https://rest.ensembl.org/sequence/region/human'  -O -

Resource Information

MethodsPOST
Response formatsjson
jsonp
Maximum POST size50
Slice length1e7