This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

API services

How to import and get data!

Every OpenDataBio installation provide a API service, allowing users to GET data programmatically, and collaborators to POST new data into its database. The service is open access to public data, requires user authentication to POST data or GET data of restricted access.

The OpenDataBio API (Application Programming Interface -API) allows users to interact with an OpenDataBio database for exporting, importing and updating data without using the web-interface.

The OpenDataBio R package is a client for this API, allowing the interaction with the data repository directly from R and illustrating the API capabilities so that other clients can be easily built.

The OpenDataBio API allows querying of the database, data importation and data edition (update) through a REST inspired interface. All API requests and responses are formatted in JSON.

The API call

A simple call to the OpenDataBio API has four independent pieces:

  1. HTTP-verb - either GET for exports or POST for imports.
  2. base-URL - the URL used to access your OpenDataBio server + plus /api/v0. For, example, http://opendatabio.inpa.gov.br/api/v0
  3. endpoint - represents the object or collection of objects that you want to access, for example, for querying taxonomic names, the endpoint is “taxons”
  4. request-parameters - represent filtering and processing that should be done with the objects, and are represented in the API call after a question mark. For example, to retrieve only valid taxonomic names (non synonyms) end the request with ?valid=1.

The API call above can be entered in a browser to GET public access data. For example, to get the list of valid taxons from an OpenDataBio installation the API request could be:

https://opendb.inpa.gov.br/api/v0/taxons?valid=1&limit=10

When using the OpenDataBio R package this call would be odb_get_taxons(list(valid=1)).

A response would be something like:

{
  "meta":
  {
    "odb_version":"0.9.1-alpha1",
    "api_version":"v0",
    "server":"http://opendb.inpa.gov.br",
    "full_url":"https://opendb.inpa.gov.br/api/v0/taxons?valid=1&limit1&offset=100"},
    "data":
    [
      {
        "id":62,
        "parent_id":25,
        "author_id":null,
        "scientificName":"Laurales",
        "taxonRank":"Ordem",
        "scientificNameAuthorship":null,
        "namePublishedIn":"Juss. ex Bercht. & J. Presl. In: Prir. Rostlin: 235. (1820).",
        "parentName":"Magnoliidae",
        "family":null,
        "taxonRemarks":null,
        "taxonomicStatus":"accepted",
        "ScientificNameID":"http:\/\/tropicos.org\/Name\/43000015 | https:\/\/www.gbif.org\/species\/407",
        "basisOfRecord":"Taxon"
    }]}

API Authentication

  1. Not required for getting any data with public access in the ODB database, which by default includes locations, taxons, bibliographic references, persons and traits.
  2. Authentication Required to GET any data that is not of public access, and is required to POST and PUT data.
  • Authentication is done using an API token, that can be found under your user profile on the web interface. The token is assigned to a single database user, and should not be shared, exposed, e-mailed or stored in version controls.
  • To authenticate against the OpenDataBio API, use the token in the “Authorization” header of the API request. When using the R client, pass the token to the odb_config function cfg = odb_config(token="your-token-here").
  • The token controls the data you can get and can edit

Users will only have access to the data for which the user has permission and to any data with public access in the database, which by default includes locations, taxons, bibliographic references, persons and traits. Measurements, individuals, and Vouchers access depends on permissions understood by the users token.


API versions

The OpenDataBio API follows its own version number. This means that the client can expect to use the same code and get the same answers regardless of which OpenDataBio version that the server is running. All changes done within the same API version (>= 1) should be backward compatible. Our API versioning is handled by the URL, so to ask for a specific API version, use the version number between the base URL and endpoint:

https://opendatabio.inpa.gov.br/opendatabio/api/v1/taxons

https://opendatabio.inpa.gov.br/opendatabio/api/v2/taxons

1 - Quick reference

List of endpoints and parameters!

GET DATA (downloads)

Shared get-parameters

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
limitNoMaximum number of records to return.100
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1

Endpoint parameters

EndpointDescriptionParameters
/Tests your access/token.
bibreferencesBibliographic references (GET lists, POST creates).id, bibkey, biocollection, dataset, fields, job_id, limit, offset, save_job, search, taxon, taxon_root
biocollectionsBiocollections (GET lists, POST creates).id, acronym, fields, irn, job_id, limit, name, offset, save_job, search
datasetsDatasets and published dataset files (GET lists, POST creates via import job).id, bibreference, fields, file_name, has_versions, include_url, limit, list_versions, name, offset, project, save_job, search, summarize, tag, tagged_with, taxon, taxon_root, traits
individualsIndividuals (GET lists, POST creates, PUT updates).id, dataset, date_max, date_min, fields, job_id, limit, location, location_root, odbrequest_id, offset, person, project, save_job, tag, taxon, taxon_root, trait, vernacular
individual-locationsOccurrences for individuals with multiple locations (GET lists, POST/PUT upserts).id, dataset, date_max, date_min, fields, individual, limit, location, location_root, offset, person, project, save_job, tag, taxon, taxon_root
languagesLists available interface/data languages.fields, limit, offset
locationsLocations (GET lists, POST creates, PUT updates).id, adm_level, dataset, fields, job_id, lat, limit, location_root, long, name, offset, parent_id, project, querytype, root, save_job, search, taxon, taxon_root, trait
measurementsTrait measurements (GET lists, POST creates/imports via ImportMeasurements job, PUT bulk updates).id, bibreference, dataset, date_max, date_min, fields, individual, job_id, limit, location, location_root, measured_id, measured_type, offset, person, project, save_job, taxon, taxon_root, trait, trait_type, voucher
mediaMedia metadata (GET lists, POST creates, PUT updates).id, dataset, fields, individual, job_id, limit, location, location_root, media_id, media_uuid, offset, person, project, save_job, tag, taxon, taxon_root, uuid, voucher
personsPeople (GET lists, POST creates, PUT updates).id, abbrev, email, fields, job_id, limit, name, offset, save_job, search
projectsProjects (GET lists).id, fields, job_id, limit, offset, save_job, search, tag
taxonsTaxonomic names (GET lists, POST creates).id, bibreference, biocollection, dataset, external, fields, job_id, level, limit, location_root, name, offset, person, project, root, save_job, taxon_root, trait, valid, vernacular
traitsTrait definitions (GET lists, POST creates).id, bibreference, categories, dataset, fields, job_id, language, limit, name, object_type, offset, save_job, search, tag, taxon, taxon_root, trait, type
vernacularsVernacular names (GET lists, POST creates).id, fields, individual, job_id, limit, location, location_root, offset, save_job, taxon, taxon_root
vouchersVoucher specimens (GET lists, POST creates, PUT updates).id, bibreference, bibreference_id, biocollection, biocollection_id, collector, dataset, date_max, date_min, fields, individual, job_id, limit, location, location_root, main_collector, number, odbrequest_id, offset, person, project, save_job, taxon, taxon_root, trait, vernacular
userjobsBackground jobs (imports/exports) (GET lists).id, fields, get_file, limit, offset, status
activitiesLists activity log entries.id, description, fields, individual, language, limit, location, log_name, measurement, offset, save_job, subject, subject_id, taxon, taxon_root, voucher
tagsTags/keywords (GET lists).id, dataset, fields, job_id, language, limit, name, offset, project, save_job, search, trait

POST DATA (imports)

EndpointDescriptionParameters
bibreferencesBibliographic references (GET lists, POST creates).bibtex, doi
biocollectionsBiocollections (GET lists, POST creates).acronym, name
individualsIndividuals (GET lists, POST creates, PUT updates).altitude, angle, biocollection, biocollection_number, biocollection_type, collector, dataset, date, distance, identification_based_on_biocollection, identification_based_on_biocollection_number, identification_date, identification_individual, identification_notes, identifier, latitude, location, location_date_time, location_notes, longitude, modifier, notes, tag, taxon, x, y
individual-locationsOccurrences for individuals with multiple locations (GET lists, POST/PUT upserts).altitude, angle, distance, individual, latitude, location, location_date_time, location_notes, longitude, x, y
locationsLocations (GET lists, POST creates, PUT updates).adm_level, altitude, azimuth, datum, geojson, geom, ismarine, lat, long, name, notes, parent, startx, starty, x, y
locations-validationValidates coordinates against registered locations (POST).latitude, longitude
measurementsTrait measurements (GET lists, POST creates/imports via ImportMeasurements job, PUT bulk updates).bibreference, dataset, date, duplicated, link_id, location, notes, object_id, object_type, parent_measurement, person, trait_id, value
mediaMedia metadata (GET lists, POST creates, PUT updates).collector, dataset, date, filename, latitude, license, location, longitude, notes, object_id, object_type, project, tags, title_en, title_pt
personsPeople (GET lists, POST creates, PUT updates).abbreviation, biocollection, email, full_name, institution
taxonsTaxonomic names (GET lists, POST creates).author, author_id, bibreference, gbif, ipni, level, mobot, mycobank, name, parent, person, valid, zoobank
traitsTrait definitions (GET lists, POST creates).bibreference, categories, description, export_name, link_type, name, objects, parent, range_max, range_min, tags, type, unit, value_length, wavenumber_max, wavenumber_min
vernacularsVernacular names (GET lists, POST creates).citations, individuals, language, name, notes, parent, taxons, type
vouchersVoucher specimens (GET lists, POST creates, PUT updates).biocollection, biocollection_number, biocollection_type, collector, dataset, date, individual, notes, number
datasetsDatasets and published dataset files (GET lists, POST creates via import job).description, license, name, privacy, project_id, title

PUT DATA (updates)

EndpointDescriptionParameters
individualsIndividuals (GET lists, POST creates, PUT updates).id, collector, dataset, date, identification_based_on_biocollection, identification_based_on_biocollection_number, identification_date, identification_individual, identification_notes, identifier, individual_id, modifier, notes, tag, taxon
individual-locationsOccurrences for individuals with multiple locations (GET lists, POST/PUT upserts).id, altitude, angle, distance, individual, individual_location_id, latitude, location, location_date_time, location_notes, longitude, x, y
locationsLocations (GET lists, POST creates, PUT updates).id, adm_level, altitude, datum, geom, ismarine, lat, location_id, long, name, notes, parent, startx, starty, x, y
measurementsTrait measurements (GET lists, POST creates/imports via ImportMeasurements job, PUT bulk updates).id, bibreference, dataset, date, duplicated, link_id, location, measurement_id, notes, object_id, object_type, parent_measurement, person, trait_id, value
mediaMedia metadata (GET lists, POST creates, PUT updates).id, collector, dataset, date, latitude, license, location, longitude, media_id, media_uuid, notes, project, tags, title_en, title_pt
personsPeople (GET lists, POST creates, PUT updates).id, abbreviation, biocollection, email, full_name, institution, person_id
vouchersVoucher specimens (GET lists, POST creates, PUT updates).id, biocollection, biocollection_number, biocollection_type, collector, dataset, date, individual, notes, number, voucher_id

Nomenclature types

Nomenclature types numeric codes
NotType : 0Isosyntype : 8
Type : 1Neotype : 9
Holotype : 2Epitype : 10
Isotype : 3Isoepitype : 11
Paratype : 4Cultivartype : 12
Lectotype : 5Clonotype : 13
Isolectotype : 6Topotype : 14
Syntype : 7Phototype : 15

Taxonomic ranks

CodeRank
-100clade
0kingdom
10subkingd.
30div., phyl., phylum, division
40subdiv.
60cl., class
70subcl., subclass
80superord., superorder
90ord., order
100subord.
120fam., family
130subfam., subfamily
150tr., tribe
180gen., genus
190subg., subgenus, sect.
210section, sp., spec., species
220subsp., subspecies
240var., variety
270f., fo., form

2 - GET data

How to get data using the API!

Shared GET parameters

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
limitNoMaximum number of records to return.100
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1

GET endpoints

/ (GET)

Tests your access/token.

No parameters for this endpoint.


bibreferences (GET)

Bibliographic references (GET lists, POST creates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
bibkeyNoBibreference key or list of keys.ducke1953,mayr1992
biocollectionNoBiocollection id/name/acronym; returns references cited by vouchers in those collections.INPA
datasetNoDataset id or name; returns bibreferences linked to the dataset.Forest1
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search on bibtex using boolean mode; spaces act as AND.Amazon forest
taxonNoTaxon id or canonical name list; matches references linked to the taxon.Ocotea guianensis or 120,455
taxon_rootNoTaxon id/name including descendants.Lauraceae

Fields returned

Fields (simple): id, bibkey, year, author, title, doi, url, bibtex

Fields (all): id, bibkey, year, author, title, doi, url, bibtex

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 2,
            "bibkey": "Riberiroetal1999FloraDucke",
            "year": 1999,
            "author": "José Eduardo Lahoz Da Silva Ribeiro and Michael John Gilbert Hopkins and Alberto Vicentini and Cynthia Anne Sothers and Maria Auxiliadora Da Silva Costa and Joneide Mouzinho De Brito and Maria Anália Duarte De Souza and Lúcia Helena Pinheiro Martins and Lúcia Garcez Lohmann and Paulo Apóstolo Costa Lima Assunção and Everaldo Da Costa Pereira and Cosme Fernandes Da Silva and Mariana Rabello Mesquita and Lilian Costa Procópio",
            "title": "Flora Da Reserva Ducke: Guia De Identificação Das Plantas Vasculares De Uma Floresta De Terra Firme Na Amazônica Central",
            "doi": null,
            "url": null,
            "bibtex": "@Article{Riberiroetal1999FloraDucke,\r\n  title = {Flora da Reserva Ducke: Guia de Identifica{\\c{c}}{\\~a}o das Plantas Vasculares de uma Floresta de Terra Firme na Amaz{\\^o}nica Central},\r\n  author = {José Eduardo Lahoz da Silva Ribeiro and Michael John Gilbert Hopkins and Alberto Vicentini and Cynthia Anne Sothers and Maria Auxiliadora da Silva Costa and Joneide Mouzinho de Brito and Maria Anália Duarte de Souza and Lúcia Helena Pinheiro Martins and Lúcia Garcez Lohmann and Paulo Apóstolo Costa Lima Assunç{ã}o and Everaldo da Costa Pereira and Cosme Fernandes da Silva and Mariana Rabello Mesquita and Lilian Costa Procópio},\r\n  journal = {Flora da Reserva Ducke: Guia de Identifica{\\c{c}}{\\~a}o das Plantas Vasculares de uma Floresta de Terra Firme na Amaz{\\^o}nica Central},\r\n  year = {1999},\r\n  publisher = {INPA-DFID Manaus},\r\n  pages = {819p},\r\n}"
        },
        {
            "id": 3,
            "bibkey": "Sutter2006female",
            "year": 2006,
            "author": "D. Merino Sutter and P. I. Forster and P. K. Endress",
            "title": "Female Flowers And Systematic Position Of Picrodendraceae (Euphorbiaceae S.l., Malpighiales)",
            "doi": "10.1007/s00606-006-0414-0",
            "url": "http://dx.doi.org/10.1007/s00606-006-0414-0",
            "bibtex": "@article{Sutter2006female,\n     author = {D. Merino Sutter and P. I. Forster and P. K. Endress},\n     year = {2006},\n     title = {Female flowers and systematic position of Picrodendraceae (Euphorbiaceae s.l., Malpighiales)},\n     issn = {0378-2697 | 1615-6110},\n     issue = {1-4},\n     url = {http://dx.doi.org/10.1007/s00606-006-0414-0},\n     doi = {10.1007/s00606-006-0414-0},\n     volume = {261},\n     page = {187-215},\n     journal = {Plant Systematics and Evolution},\n     journal_short = {Plant Syst. Evol.},\n     published = {Springer Science and Business Media LLC}\n}"
        }
    ]
}

biocollections (GET)

Biocollections (GET lists, POST creates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
acronymNoBiocollection acronym.INPA
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
irnNoIndex Herbariorum IRN for filtering biocollections.123456
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
nameNoExact biocollection name (string).Instituto Nacional de Pesquisas da Amazônia
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search parameter.Silva

Fields returned

Fields (simple): id, acronym, name, irn

Fields (all): id, acronym, name, irn, country, city, address

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 1,
            "acronym": "INPA",
            "name": "Instituto Nacional de Pesquisas da Amazônia",
            "irn": 124921,
            "country": null,
            "city": null,
            "address": null
        },
        {
            "id": 2,
            "acronym": "SPB",
            "name": "Universidade de São Paulo",
            "irn": 126324,
            "country": null,
            "city": null,
            "address": null
        }
    ]
}

datasets (GET)

Datasets and published dataset files (GET lists, POST creates via import job).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
bibreferenceNoBibreference id or bibkey.34 or ducke1953
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
file_nameNoDataset version file name to download.2_Organisms.csv
has_versionsNoWhen 1, returns only datasets that have public versions.1
include_urlNoWhen 1 with list_versions, include file download URL.1
limitNoMaximum number of records to return.100
list_versionsNoIf true, lists dataset version files for given id(s).1
nameNoTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
projectNoProject id or acronym.PDBFF or 2
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search parameter.Silva
summarizeNoDataset id to return content/taxonomic/trait summaries.3
tagNoIndividual tag/number/code.A-1234
tagged_withNoTag ids (comma) or text to filter datasets by tags (supports id list or full-text).12,13 or canopy leaf
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae
traitsNoTrait ids list (comma-separated) for filtering datasets.12,15

Fields returned

Fields (simple): id, name, title, projectName, description, notes, contactEmail, taggedWidth, uuid

Fields (all): id, name, title, projectName, notes, privacyLevel, policy, description, measurements_count, contactEmail, taggedWidth, uuid

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 4,
            "name": "PDBFF-FITO 1ha core plots 1-10cm dbh - TREELETS",
            "title": "Arvoretas (1cm>DAP",
            "projectName": "Projeto Dinâmica Biológica de Fragmentos Florestais (PDBFF-Data)",
            "notes": null,
            "privacyLevel": "Restrito a usuários autorizados",
            "policy": null,
            "description": "Contém o único censo de árvores de pequeno porte 1-10cm de diâmetro nas parcelas de 1ha do PDBFF, em 11 das 69 de parcelas permanentes de 1ha do Programa de Monitoramento de Plantas do PDBFF.",
            "measurements_count": null,
            "contactEmail": "example",
            "taggedWidth": "Parcelas florestais | PDBFF | Fitodemográfico",
            "uuid": "e1d8ce8d-4847-11f0-8e9f-9cb654b86224"
        }
    ]
}

individuals (GET)

Individuals (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
datasetNoDataset id/name, filter records that belong to the dataset informed3 or FOREST1
date_maxNoInclusive end date (YYYY-MM-DD) compared against individual date.2024-12-31
date_minNoInclusive start date (YYYY-MM-DD) compared against individual date.2020-01-01
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
locationNoLocation id/name list; matches individuals at those exact locations.Parcela 25ha or 55,60
location_rootNoLocation id/name; includes descendants of the informed locations.Parcela 25ha get subplots in this case
odbrequest_idNoRequest id to filter individuals linked to that ODB request.12
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
personNoCollector person id/name/email list; filters main/associated collectors.Silva, J.B. or 23,10
projectNoProject id/name; matches records whose dataset belongs to the project.PDBFF
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
tagNoIndividual tag/number filter; supports list separated by comma.A-123,2001
taxonNoTaxon id/name list; matches identification taxon only (no descendants).Licaria guianensis,Minquartia guianensis or 456,457
taxon_rootNoTaxon id/name list; includes descendants of each taxon.Lauraceae,Fabaceae or 10,20
traitNoTrait id list; only used together with dataset to filter by measurements.12,15
vernacularNoVernacular id/name list to match linked vernaculars.castanha|12

Fields returned

Fields (simple): id, basisOfRecord, organismID, recordedByMain, recordNumber, recordedDate, family, scientificName, identificationQualifier, identifiedBy, dateIdentified, locationName, locationParentName, decimalLatitude, decimalLongitude, x, y, gx, gy, angle, distance, datasetName

Fields (all): id, basisOfRecord, organismID, recordedByMain, recordNumber, recordedDate, recordedBy, scientificName, scientificNameAuthorship, taxonPublishedStatus, genus, family, identificationQualifier, identifiedBy, dateIdentified, identificationRemarks, identificationBiocollection, identificationBiocollectionReference, locationName, higherGeography, decimalLatitude, decimalLongitude, georeferenceRemarks, locationParentName, x, y, gx, gy, angle, distance, organismRemarks, datasetName, uuid

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 306246,
            "basisOfRecord": "Organism",
            "organismID": "2639_Spruce_1852",
            "recordedByMain": "Spruce, R.",
            "recordNumber": "2639",
            "recordedDate": "1852-10",
            "recordedBy": "Spruce, R.",
            "scientificName": "Ecclinusa lanceolata",
            "scientificNameAuthorship": "(Mart. & Eichler) Pierre",
            "taxonPublishedStatus": "published",
            "genus": "Ecclinusa",
            "family": "Sapotaceae",
            "identificationQualifier": "",
            "identifiedBy": "Spruce, R.",
            "dateIdentified": "1852-10-00",
            "identificationRemarks": "",
            "identificationBiocollection": null,
            "identificationBiocollectionReference": null,
            "locationName": "São Gabriel da Cachoeira",
            "higherGeography": "São Gabriel da Cachoeira < Amazonas < Brasil",
            "decimalLatitude": 1.1841927,
            "decimalLongitude": -66.80167715,
            "georeferenceRemarks": "decimal coordinates are the CENTROID of the footprintWKT geometry",
            "locationParentName": "Amazonas",
            "x": null,
            "y": null,
            "gx": null,
            "gy": null,
            "angle": null,
            "distance": null,
            "organismRemarks": "prope Panure ad Rio Vaupes Amazonas, Brazil",
            "datasetName": "Exsicatas LABOTAM",
            "uuid": "c01000f0-f437-11ef-b90b-9cb654b86224"
        }
    ]
}

individual-locations (GET)

Occurrences for individuals with multiple locations (GET lists, POST/PUT upserts).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
datasetNoDataset id/name; filters by dataset of the linked individual.FOREST1
date_maxNoUpper bound date/time; compares date_time or individual date when empty.2024-12-31
date_minNoLower bound date/time; compares date_time or individual date when empty.2020-01-01
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
individualNoIndividual id list whose occurrences will be returned.12,44
limitNoMaximum number of records to return.100
locationNoLocation id or name.Parcela 25ha or 55
location_rootNoLocation id/name with descendants included.Amazonas or 10
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
personNoCollector person id/name/email list; filters by individual collectors.J.Silva|23
projectNoProject id/name; matches occurrences whose individual belongs to datasets in project.PDBFF
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
tagNoIndividual tag/number list; matches by individuals.tag columnA-123,B-2
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae

Fields returned

Fields (simple): id, individual_id, basisOfRecord, occurrenceID, organismID, recordedDate, locationName, higherGeography, decimalLatitude, decimalLongitude, x, y, angle, distance, minimumElevation, occurrenceRemarks, scientificName, family, datasetName

Fields (all): id, individual_id, basisOfRecord, occurrenceID, organismID, scientificName, family, recordedDate, locationName, higherGeography, decimalLatitude, decimalLongitude, georeferenceRemarks, x, y, angle, distance, minimumElevation, occurrenceRemarks, organismRemarks, datasetName

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 306244,
            "individual_id": 306246,
            "basisOfRecord": "Occurrence",
            "occurrenceID": "2639_Spruce_1852.1852-10",
            "organismID": "2639_Spruce_1852",
            "scientificName": "Ecclinusa lanceolata",
            "family": "Sapotaceae",
            "recordedDate": "1852-10",
            "locationName": "São Gabriel da Cachoeira",
            "higherGeography": "Brasil > Amazonas > São Gabriel da Cachoeira",
            "decimalLatitude": 1.1841927,
            "decimalLongitude": -66.80167715,
            "georeferenceRemarks": "decimal coordinates are the CENTROID of the footprintWKT geometry",
            "x": null,
            "y": null,
            "angle": null,
            "distance": null,
            "minimumElevation": null,
            "occurrenceRemarks": null,
            "organismRemarks": "prope Panure ad Rio Vaupes Amazonas, Brazil",
            "datasetName": "Exsicatas LABOTAM"
        }
    ]
}

languages (GET)

Lists available interface/data languages.

ParameterRequiredDescriptionExample
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
limitNoMaximum number of records to return.100
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 1,
            "code": "en",
            "name": "English",
            "is_locale": 1,
            "created_at": null,
            "updated_at": null
        }
    ]
}

locations (GET)

Locations (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
adm_levelNoOne or more adm_level codes10,100
datasetNoDataset id/name; expands to all locations used by that dataset.FOREST1
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
latNoLatitude (decimal degrees) used with querytype.-3.11
limitNoMaximum number of records to return.100
location_rootNoAlias of root for compatibility.Amazonas
longNoLongitude (decimal degrees) used with querytype.-60.02
nameNoExact name match; accepts list of names or ids.Manaus or 10
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
parent_idNoParent id for hierarchical queries.210
projectNoProject id or acronym.PDBFF or 2
querytypeNoWhen lat/long are provided: exact|parent|closest geometric search.parent
rootNoLocation id/name; returns it and all descendants and related locationsAmazonas or "Parque Nacional do Jaú" ...
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoPrefix search on name (SQL LIKE name%).Mana search for names that starts "mana"
taxonNoTaxon id/name list; filters locations by linked identifications.Euterpe precatoria
taxon_rootNoTaxon id/name list; includes descendants when filtering linked identifications.Euterpe - finds alls records that belongs to this genus
traitNoTrait id/name; only works together with dataset to filter by measurements.DBH

Fields returned

Fields (simple): id, basisOfRecord, locationName, adm_level, country_adm_level, x, y, startx, starty, distance_to_search, parent_id, parentName, higherGeography, footprintWKT, locationRemarks, decimalLatitude, decimalLongitude, georeferenceRemarks, geodeticDatum

Fields (all): id, basisOfRecord, locationName, adm_level, country_adm_level, x, y, startx, starty, distance_to_search, parent_id, parentName, higherGeography, footprintWKT, locationRemarks, decimalLatitude, decimalLongitude, georeferenceRemarks, geodeticDatum

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 27297,
            "basisOfRecord": "Location",
            "locationName": "Parcela 1105",
            "adm_level": 100,
            "country_adm_level": "Parcela",
            "x": "100.00",
            "y": "100.00",
            "startx": null,
            "starty": null,
            "distance_to_search": null,
            "parent_id": 27277,
            "parentName": "Fazenda Esteio",
            "higherGeography": "Brasil > Amazonas > Rio Preto da Eva > Fazenda Esteio > Parcela 1105",
            "footprintWKT": "POLYGON((-59.81371985 -2.42215752,-59.81360263 -2.42126619,-59.81270751 -2.42136656,-59.81282469 -2.42225788,-59.81371985 -2.42215752))",
            "locationRemarks": "source: Polígono desenhado a partir das coordenadas de GPS dos vértices; georeferencedBy: Diogo Martins Rosa & Ana Andrade; fundedBy: Edital CNPq-Brasil/LBA 458027/2013-8; geometryBy: Alberto Vicentini; geometryDate: 2021-09-29; warning: Conflito com polígono da UC de 2021. Este polígono deveria ter a mesma geometria do polígono correspondente que faz parte da UC ARIE PDBFF, mas como ele foi gerado pelas coordenadas de campo, foi mantida essa geometria. A UC, portanto, não protege adequadamente essa parcela de monitoramento.",
            "decimalLatitude": -2.42215752,
            "decimalLongitude": -59.81371985,
            "georeferenceRemarks": "decimal coordinates are the START POINT in footprintWKT geometry",
            "geodeticDatum": null
        }
    ]
}

measurements (GET)

Trait measurements (GET lists, POST creates/imports via ImportMeasurements job, PUT bulk updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
bibreferenceNoBibreference id or bibkey.34 or ducke1953
datasetNoDataset id or acronym.3 or FOREST1
date_maxNoFilter records occurring on/before this date (YYYY-MM-DD).2024-12-31
date_minNoFilter records occurring on/after this date (YYYY-MM-DD).2020-01-01
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
locationNoLocation id or name.Parcela 25ha or 55
location_rootNoLocation id/name with descendants included.Amazonas or 10
measured_idNoMeasurement filter: id of the measured object (matches measured_type).4521
measured_typeNoMeasurement filter: class name of measured object (Individual, Location, Taxon, Voucher, Media).Media
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
personNoPerson id, abbreviation, full name or email (supports lists with | or ;).J.Silva|M.Costa
projectNoProject id or acronym.PDBFF or 2
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae
traitNoTrait id or export_name filter.DBH
trait_typeNoFilter measurements by trait type code.1
voucherNoVoucher id for filtering measurements.102

Fields returned

Fields (simple): id, basisOfRecord, measured_type, measured_id, measurementType, measurementValue, measurementUnit, measurementDeterminedBy, measurementDeterminedDate, scientificName, datasetName, family, sourceCitation

Fields (all): id, basisOfRecord, measured_type, measured_id, measurementType, measurementValue, measurementUnit, measurementDeterminedDate, measurementDeterminedBy, measurementRemarks, resourceRelationship, resourceRelationshipID, relationshipOfResource, scientificName, family, datasetName, measurementMethod, sourceCitation, measurementLocationId, measurementParentId, decimalLatitude, decimalLongitude

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 1,
            "basisOfRecord": "MeasurementsOrFact",
            "measured_type": "App\\Models\\Individual",
            "measured_id": 86947,
            "measurementType": "treeDbh",
            "measurementValue": 13,
            "measurementUnit": "cm",
            "measurementDeterminedDate": "1979-11-14",
            "measurementDeterminedBy": "Menezes, J.F. | Bahia, R.P. | Lima, J. | Santos, R.M. | Ferreira, A.J.C. | Cardoso, Romeu M.",
            "measurementRemarks": null,
            "resourceRelationship": null,
            "resourceRelationshipID": "1202-1371_Menezes_1979",
            "relationshipOfResource": "measurement of",
            "scientificName": "Paramachaerium ormosioides",
            "family": "Fabaceae",
            "datasetName": "Censos 01 - PDBFF-FITO ForestPlots - 1979-1980",
            "measurementMethod": "Name: Diameter at breast height - DBH | Definition:Diameter at breast height,, i.e. ca. 1.3 meters from the base of the trunk",
            "sourceCitation": null,
            "measurementLocationId": 28280,
            "measurementParentId": null,
            "decimalLatitude": -2.40371599,
            "decimalLongitude": -59.87090972
        }
    ]
}

media (GET)

Media metadata (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
datasetNoDataset id or acronym.3 or FOREST1
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
locationNoLocation id or name.Parcela 25ha or 55
location_rootNoLocation id/name with descendants included.Amazonas or 10
media_idNoMedia numeric id.88
media_uuidNoMedia UUID.a3f0a4ac-6b5b-11ed-b8c0-0242ac120002
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
personNoPerson id, abbreviation, full name or email (supports lists with | or ;).J.Silva|M.Costa
projectNoProject id or acronym.PDBFF or 2
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
tagNoIndividual tag/number/code.A-1234
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae
uuidNo
voucherNoVoucher id for filtering measurements.102

Fields returned

Fields (simple): id, model_type, model_id, basisOfRecord, recordedBy, recordedDate, dwcType, resourceRelationship, resourceRelationshipID, relationshipOfResource, scientificName, family, datasetName, projectName, taggedWith, accessRights, license, file_name, file_url, citation, uuid

Fields (all): id, model_type, model_id, basisOfRecord, recordedBy, recordedDate, dwcType, resourceRelationship, resourceRelationshipID, relationshipOfResource, scientificName, family, datasetName, projectName, taggedWith, accessRights, bibliographicCitation, license, file_name, file_url, citation, uuid, bibtex, userName, created_at

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 20211,
            "model_type": "App\\Models\\Individual",
            "model_id": 111785,
            "basisOfRecord": "MachineObservation",
            "recordedBy": "Francisco Javier Farroñay Pacaya",
            "recordedDate": "2025-03-09",
            "dwcType": "StillImage",
            "resourceRelationship": "Organism",
            "resourceRelationshipID": "3402-1134_Pereira_1986",
            "relationshipOfResource": "StillImage of ",
            "scientificName": "Sacoglottis guianensis",
            "family": "Humiriaceae",
            "datasetName": "Unknown dataset",
            "projectName": "Projeto Dinâmica Biológica de Fragmentos Florestais",
            "taggedWith": "Folha abaxial",
            "accessRights": "Open access.",
            "bibliographicCitation": "Sacoglottis guianensis (Humiriaceae). (2025). By Francisco Javier Farroñay Pacaya. Collection: Pereira, M.J.R. #3402-1134 on 1986-01-24, from Quadrante 52, Parcela 3402-3, Reserva 3402, Cabo Frio, Fazenda Porto Alegre, Amazonas, Brasil (PDBFF). Project: PDBFF-Data. Instituto Nacional de Pesquisas da Amazônia (INPA), Manaus, Amazonas, Brasil. Type: Image. License: CC-BY-NC-SA 4.0. uuid: inpa-odb-3f139ba4-f22b-42d8-9e74-c340309061c2, url: http://localhost/opendatabio",
            "license": "CC-BY-NC-SA 4.0",
            "file_name": "67ce28cd76f4a.jpg",
            "file_url": "http://localhost/opendatabio/storage/media/20211/67ce28cd76f4a.jpg",
            "citation": "Sacoglottis guianensis (Humiriaceae). (2025). By Francisco Javier Farroñay Pacaya. Collection: Pereira, M.J.R. #3402-1134 on 1986-01-24, from Quadrante 52, Parcela 3402-3, Reserva 3402, Cabo Frio, Fazenda Porto Alegre, Amazonas, Brasil (PDBFF). Project: PDBFF-Data. Instituto Nacional de Pesquisas da Amazônia (INPA), Manaus, Amazonas, Brasil. Type: Image. License: CC-BY-NC-SA 4.0. uuid: inpa-odb-3f139ba4-f22b-42d8-9e74-c340309061c2, url: http://localhost/opendatabio",
            "uuid": "3f139ba4-f22b-42d8-9e74-c340309061c2",
            "bibtex": "@misc{Farronay_2025_20211,\n{\n    \"title\": \" Sacoglottis guianensis (Humiriaceae)\",\n    \"year\": \"(2025)\",\n    \"author\": \"Francisco Javier Farroñay Pacaya\",\n    \"howpublished\": \"{http:\\/\\/localhost\\/opendatabio\\/media\\/uuid\\/3f139ba4-f22b-42d8-9e74-c340309061c2}\",\n    \"license\": \"CC-BY-NC-SA 4.0\",\n    \"note\": \"Type: Image; Collection: Pereira, M.J.R. #3402-1134 on 1986-01-24, from Quadrante 52, Parcela 3402-3, Reserva 3402, Cabo Frio, Fazenda Porto Alegre, Amazonas, Brasil (PDBFF); Coordinates: POINT(-59.91500315727877 -2.3929141688648765); License: CC-BY-NC-SA 4.0; Project: PDBFF-Data.; Accessed: 2026-02-04\",\n    \"publisher\": \"Instituto Nacional de Pesquisas da Amazônia (INPA), Manaus, Amazonas, Brasil\"\n}\n}",
            "userName": "example",
            "created_at": "2025-03-09T23:48:29.000000Z"
        }
    ]
}

persons (GET)

People (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
abbrevNoAbbreviation search for persons.Silva, J.B, Pilco, M.V.
emailNoEmail address.user@example.org
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
nameNoTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search parameter.Silva

Fields returned

Fields (simple): id, full_name, abbreviation, emailAddress, institution, notes

Fields (all): id, full_name, abbreviation, emailAddress, institution, notes

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 3127,
            "full_name": "Raimundo Afeganistão",
            "abbreviation": "AFEGANISTÃO, R.",
            "emailAddress": null,
            "institution": null,
            "notes": "PDBFF"
        },
        {
            "id": 14,
            "full_name": "Maria de Fátima  Agra",
            "abbreviation": "Agra, M.F.",
            "emailAddress": null,
            "institution": null,
            "notes": null
        },
        {
            "id": 15,
            "full_name": "J. L. A. Aguiar Jr",
            "abbreviation": "Aguiar Jr., J.L.A.",
            "emailAddress": null,
            "institution": null,
            "notes": null
        }
    ]
}

projects (GET)

Projects (GET lists).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search parameter.Silva
tagNoIndividual tag/number/code.A-1234

Fields returned

Fields (simple): id, acronym, name, description

Fields (all): id, acronym, name, description, pages, urls, created_at, updated_at

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 1,
            "acronym": "PDBFF-Data",
            "name": "Projeto Dinâmica Biológica de Fragmentos Florestais",
            "description": "Este espaço agrega conjuntos de dados de monitoramentos e pesquisas realizadas nas áreas amostrais do PDBFF,  localizadas na Área de Relevante Interesse Ecológico - ARIE PDBFF.",
            "pages": {
                "en": null,
                "pt-br": null
            },
            "urls": [
                {
                    "url": "https://alfa-pdbff.site/",
                    "label": null,
                    "icon": "fa-solid fa-globe"
                }
            ],
            "created_at": "2022-10-31T07:01:18.000000Z",
            "updated_at": "2023-11-17T21:08:55.000000Z"
        }
    ]
}

taxons (GET)

Taxonomic names (GET lists, POST creates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
bibreferenceNoBibreference id or bibkey.34 or ducke1953
biocollectionNoBiocollection id, name or acronym.INPA
datasetNoDataset id or acronym.3 or FOREST1
externalNoFlag to include external ids (Tropicos, IPNI, etc.).1
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
levelNoTaxon rank code or string.210 or species
limitNoMaximum number of records to return.100
location_rootNoLocation id/name with descendants included.Amazonas or 10
nameNoTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
personNoPerson id, abbreviation, full name or email (supports lists with | or ;).J.Silva|M.Costa
projectNoProject id or acronym.PDBFF or 2
rootNoRoot id for hierarchical queries (taxon or location).120
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
taxon_rootNoTaxon id/name including descendants.Lauraceae
traitNoTrait id or export_name filter.DBH
validNoWhen 1, return only valid taxon names.1
vernacularNoVernacular id or name list used to filter individuals.castanha|12

Fields returned

Fields (simple): id, parent_id, author_id, scientificName, taxonRank, scientificNameAuthorship, namePublishedIn, parentName, family, taxonRemarks, taxonomicStatus, scientificNameID, basisOfRecord

Fields (all): id, senior_id, parent_id, author_id, scientificName, taxonRank, scientificNameAuthorship, namePublishedIn, parentName, family, higherClassification, taxonRemarks, taxonomicStatus, acceptedNameUsage, acceptedNameUsageID, parentNameUsage, scientificNameID, basisOfRecord

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 16332,
            "senior_id": null,
            "parent_id": 16331,
            "author_id": null,
            "scientificName": "Aiouea grandifolia",
            "taxonRank": "Species",
            "scientificNameAuthorship": "van der Werff",
            "namePublishedIn": null,
            "parentName": "Aiouea",
            "family": "Lauraceae",
            "higherClassification": "Eukaryota > Plantae > Viridiplantae > Embryophytes > Spermatopsida > Angiosperms > Magnoliidae > Laurales > Lauraceae > Aiouea",
            "taxonRemarks": null,
            "taxonomicStatus": "accepted",
            "acceptedNameUsage": null,
            "acceptedNameUsageID": null,
            "parentNameUsage": "Aiouea",
            "scientificNameID": "https://tropicos.org/Name/17806050 | https://www.gbif.org/species/4175896",
            "basisOfRecord": "Taxon"
        }
    ]
}

traits (GET)

Trait definitions (GET lists, POST creates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
bibreferenceNoBibreference id or bibkey.34 or ducke1953
categoriesNoTrait categories JSON list with lang/rank/name/description.[{\"lang\":\"en\",\"rank\":1,\"name\":\"small\"}]
datasetNoDataset id or acronym.3 or FOREST1
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
languageNoLanguage id/code/nameen or 1 or english or portuguese
limitNoMaximum number of records to return.100
nameNoTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
object_typeNoMeasured object type: Individual, Location, Taxon, Voucher, or Media.Individual
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search parameter.Silva
tagNoIndividual tag/number/code.A-1234
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae
traitNoTrait id or export_name filter.DBH
typeNoGeneric type parameter (trait type code or vernacular type such as use/generic/etimology).use or 10

Fields returned

Fields (simple): id, type, typename, export_name, unit, range_min, range_max, link_type, value_length, name, description, objects, measurementType, categories

Fields (all): id, type, typename, export_name, measurementType, measurementUnit, range_min, range_max, link_type, value_length, name, description, objects, measurementMethod, MeasurementTypeBibkeys, TaggedWith, categories

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 206,
            "type": 1,
            "typename": "QUANT_REAL",
            "export_name": "treeDbh",
            "measurementType": "treeDbh",
            "measurementUnit": "cm",
            "range_min": 0.1,
            "range_max": 700,
            "link_type": null,
            "value_length": null,
            "name": "Diâmetro à altura do peito – DAP",
            "description": "Diâmetro à altura do peito, i.e. medido a ca. 1.3m desde a base do caule",
            "objects": "App\\Models\\Individual | App\\Models\\Voucher | App\\Models\\Location | App\\Models\\Taxon | App\\Models\\Media",
            "measurementMethod": "Name: Diameter at breast height - DBH | Definition:Diameter at breast height,, i.e. ca. 1.3 meters from the base of the trunk",
            "MeasurementTypeBibkeys": "",
            "TaggedWith": "",
            "categories": null
        },
        {
            "id": 207,
            "type": 1,
            "typename": "QUANT_REAL",
            "export_name": "treeDbhPom",
            "measurementType": "treeDbhPom",
            "measurementUnit": "m",
            "range_min": 0,
            "range_max": 15,
            "link_type": null,
            "value_length": null,
            "name": "Ponto de medição do DAP",
            "description": "Ponto de medição do DAP, necessário quando impossível medir a 1.3 m",
            "objects": "App\\Models\\Individual",
            "measurementMethod": "Name: DBH Point of Measurement | Definition:DAP measuring height, necessary when impossible to measure at 1.3 m",
            "MeasurementTypeBibkeys": "",
            "TaggedWith": "",
            "categories": null
        },
        {
            "id": 524,
            "type": 2,
            "typename": "CATEGORICAL",
            "export_name": "stemType",
            "measurementType": "stemType",
            "measurementUnit": null,
            "range_min": null,
            "range_max": null,
            "link_type": null,
            "value_length": null,
            "name": "Tipo de fuste",
            "description": "Tipo de fuste",
            "objects": "App\\Models\\Voucher | App\\Models\\Individual | App\\Models\\Taxon",
            "measurementMethod": "Name: Type of stem | Definition:Type of stem | Categories: CategoryName: Main stem | Definition:The main trunk, usually the thickest. | CategoryName: Secondary stem | Definition:A secondary trunk, there is a thicker one, which defines the area better. A shoot below 1.3 m high is a secondary trunk.",
            "MeasurementTypeBibkeys": "",
            "TaggedWith": "",
            "categories": [
                {
                    "id": 12990,
                    "name": "Fuste principal",
                    "description": "O tronco principal, geralmente o mais grosso.",
                    "rank": 1,
                    "belongs_to_trait": "stemType"
                },
                {
                    "id": 12991,
                    "name": "Fuste secundário",
                    "description": "Um tronco secundário, há outro mais grosso, que define melhor a área. Um rebroto abaixo de 1.3 m de altura é um tronco secundário.",
                    "rank": 2,
                    "belongs_to_trait": "stemType"
                }
            ]
        }
    ]
}

vernaculars (GET)

Vernacular names (GET lists, POST creates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
locationNoLocation id or name.Parcela 25ha or 55
location_rootNoLocation id/name with descendants included.Amazonas or 10
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae

Fields returned

Fields (simple): id, name, languageName, notes, locationsList, taxonsList, individualsList, citationsArray

Fields (all): id, name, languageName, languageCode, notes, taxonsList, taxonsListArray, individualsList, individualsListArray, locationsList, locationsListArray, variantsList, variantsListArray, citationsArray, createdBy, created_at, updated_at

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 1,
            "name": "itaúba-preta",
            "languageName": "Portuguese",
            "languageCode": "pt-br",
            "notes": null,
            "taxonsList": "Mezilaurus duckei",
            "taxonsListArray": [
                {
                    "id": 19774,
                    "scientificName": "Mezilaurus duckei",
                    "family": "Lauraceae"
                }
            ],
            "individualsList": "7739_Macedo_2023",
            "individualsListArray": [
                {
                    "id": 510747,
                    "uuid": "c75d9233-f437-11ef-b90b-9cb654b86224",
                    "organismId": "7739_Macedo_2023",
                    "scientificName": "Mezilaurus duckei",
                    "family": "Lauraceae"
                }
            ],
            "locationsList": null,
            "locationsListArray": [],
            "variantsList": "itaúba",
            "variantsListArray": [
                {
                    "id": 2,
                    "name": "itaúba",
                    "languageName": "Tupi",
                    "languageCode": "tup"
                }
            ],
            "citationsArray": [
                {
                    "id": 2,
                    "citation": "ita = pedra; uba = árvore;  preta em referência a cor da madeira",
                    "bibreference_id": null,
                    "bibreference_name": null,
                    "notes": null,
                    "type": "etimology",
                    "createdBy": "example"
                }
            ],
            "createdBy": "example",
            "created_at": "2025-12-15T20:17:16.000000Z",
            "updated_at": "2025-12-15T21:04:53.000000Z"
        }
    ]
}

vouchers (GET)

Voucher specimens (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
bibreferenceNoBibreference id or bibkey.34 or ducke1953
bibreference_idNoBibReference id list for voucher filtering.10,11
biocollectionNoBiocollection id, name or acronym.INPA
biocollection_idNoBiocollection id list for voucher filtering.1,5
collectorNoCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetNoDataset id or acronym.3 or FOREST1
date_maxNoFilter records occurring on/before this date (YYYY-MM-DD).2024-12-31
date_minNoFilter records occurring on/after this date (YYYY-MM-DD).2020-01-01
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
job_idNoJob id to reuse affected ids or filter results from a job.1024
limitNoMaximum number of records to return.100
locationNoLocation id or name.Parcela 25ha or 55
location_rootNoLocation id/name with descendants included.Amazonas or 10
main_collectorNoBoolean (1) to filter vouchers by main collector only.1
numberNoCollector number/code (voucher/individual tag when different from individual).1234A
odbrequest_idNoFilter individuals linked to a given request id.12
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
personNoPerson id, abbreviation, full name or email (supports lists with | or ;).J.Silva|M.Costa
projectNoProject id or acronym.PDBFF or 2
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae
traitNoTrait id or export_name filter.DBH
vernacularNoVernacular id or name list used to filter individuals.castanha|12

Fields returned

Fields (simple): id, individual_id, basisOfRecord, occurrenceID, organismID, collectionCode, catalogNumber, typeStatus, recordedByMain, recordNumber, recordedDate, recordedBy, scientificName, family, identificationQualifier, identifiedBy, dateIdentified, identificationRemarks, locationName, decimalLatitude, decimalLongitude, occurrenceRemarks, datasetName

Fields (all): id, individual_id, basisOfRecord, occurrenceID, organismID, collectionCode, catalogNumber, typeStatus, recordedByMain, recordNumber, recordedDate, recordedBy, scientificName, scientificNameAuthorship, taxonPublishedStatus, genus, family, identificationQualifier, identifiedBy, dateIdentified, identificationRemarks, locationName, higherGeography, decimalLatitude, decimalLongitude, georeferenceRemarks, occurrenceRemarks, datasetName, uuid

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 72209,
            "individual_id": 306246,
            "basisOfRecord": "PreservedSpecimens",
            "occurrenceID": "2639.Spruce.K.K000640463",
            "organismID": "2639_Spruce_1852",
            "collectionCode": "K",
            "catalogNumber": "K000640463",
            "typeStatus": "Tipo",
            "recordedByMain": "Spruce, R.",
            "recordNumber": "2639",
            "recordedDate": "1852-10",
            "recordedBy": "Spruce, R.",
            "scientificName": "Ecclinusa lanceolata",
            "scientificNameAuthorship": "(Mart. & Eichler) Pierre",
            "taxonPublishedStatus": "published",
            "genus": "Ecclinusa",
            "family": "Sapotaceae",
            "identificationQualifier": "",
            "identifiedBy": "Spruce, R.",
            "dateIdentified": "1852-10-00",
            "identificationRemarks": "",
            "locationName": "São Gabriel da Cachoeira",
            "higherGeography": "Brasil > Amazonas > São Gabriel da Cachoeira",
            "decimalLatitude": 1.1841927,
            "decimalLongitude": -66.80167715,
            "georeferenceRemarks": "decimal coordinates are the CENTROID of the footprintWKT geometry",
            "occurrenceRemarks": "OrganismRemarks = prope Panure ad Rio Vaupes Amazonas, Brazil",
            "datasetName": "Exsicatas LABOTAM",
            "uuid": "6302316f-2b48-43b5-816b-005df70d15c9"
        }
    ]
}

userjobs (GET)

Background jobs (imports/exports) (GET lists).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
get_fileNoWhen 1 and used with userjobs id, returns job prepared file.1
limitNoMaximum number of records to return.100
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
statusNoJob status filter (Submitted, Processing, Success, Failed, Cancelled).Success

Fields returned

Fields (simple): id, dispatcher, status, percentage, created_at, affected_ids, affected_model

Fields (all): id, dispatcher, status, percentage, created_at, updated_at, affected_ids, affected_model, log

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 23652,
            "dispatcher": "App\\Jobs\\BatchUpdateIndividuals",
            "status": "Success",
            "percentage": "100%",
            "created_at": "2025-12-10T14:36:25.000000Z",
            "updated_at": "2025-12-10T14:36:28.000000Z",
            "affected_ids": [
                86136,
                57362,
                85053,
                72256,
                74543
            ],
            "affected_model": "App\\Models\\Individual",
            "log": "[]"
        }
    ]
}

activities (GET)

Lists activity log entries.

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
descriptionNoTranslatable description text. Accepts a plain string or a JSON map of language codes to descriptions.{"en":"Tree height at breast height","pt-br":"Altura da árvore à altura do peito"}
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
languageNoLanguage id/code/nameen or 1 or english or portuguese
limitNoMaximum number of records to return.100
locationNoLocation id or name.Parcela 25ha or 55
log_nameNoActivity log name filter.default
measurementNoActivity filter: measurement id.55
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
subjectNoActivity filter: subject type (class basename).Individual
subject_idNoActivity filter: subject id.12
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
taxon_rootNoTaxon id/name including descendants.Lauraceae
voucherNoVoucher id for filtering measurements.102

Fields returned

Fields (simple): id, log_name, description, subject_type, subject_name, subject_id, modified_by, properties, created_at, updated_at

Fields (all): id, log_name, description, subject_type, subject_id, subject_name, modified_by, properties, created_at, updated_at

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "field_key": "taxon_id",
            "field": "Taxon",
            "old_value": "Burseraceae",
            "new_value": "Protium hebetatum forma.b.fito",
            "id": 1411696,
            "log_name": "individual",
            "description": "identification updated",
            "subject_type": "App\\Models\\Individual",
            "subject_id": 301705,
            "subject_name": null,
            "modified_by": "example"
        },
        {
            "field_key": "person_id",
            "field": "Person",
            "old_value": "Macedo, M.T.S",
            "new_value": "Pilco, M.V.",
            "id": 1411696,
            "log_name": "individual",
            "description": "identification updated",
            "subject_type": "App\\Models\\Individual",
            "subject_id": 301705,
            "subject_name": null,
            "modified_by": "example"
        },
        {
            "field_key": "notes",
            "field": "Notes",
            "old_value": "Identificação feita em campo, anotada na planilha de dados.",
            "new_value": null,
            "id": 1411696,
            "log_name": "individual",
            "description": "identification updated",
            "subject_type": "App\\Models\\Individual",
            "subject_id": 301705,
            "subject_name": null,
            "modified_by": "example"
        },
        {
            "field_key": "date",
            "field": "Date",
            "old_value": "2022-06-17",
            "new_value": "2022-11-23",
            "id": 1411696,
            "log_name": "individual",
            "description": "identification updated",
            "subject_type": "App\\Models\\Individual",
            "subject_id": 301705,
            "subject_name": null,
            "modified_by": "example"
        }
    ]
}

tags (GET)

Tags/keywords (GET lists).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records.1,2,3
datasetNoDataset id or acronym.3 or FOREST1
fieldsNoComma separated list of the fields to include in the response or special words all/simple/raw, default to simpleid,scientificName or all
job_idNoJob id to reuse affected ids or filter results from a job.1024
languageNoLanguage id/code/nameen or 1 or english or portuguese
limitNoMaximum number of records to return.100
nameNoTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
offsetNoThe starting position of the record set to be exported. Used together with limit to limit results.10000
projectNoProject id or acronym.PDBFF or 2
save_jobNoIf 1, save the results as file to download later via userjobs + get_file = T1
searchNoFull-text search parameter.Silva
traitNoTrait id or export_name filter.DBH

Fields returned

Fields (simple): id, name, description

Fields (all): id, name, description, counts

Response example

{
    "meta": {
        "odb_version": "0.10.0-alpha1",
        "api_version": "v0",
        "server": "http://localhost/opendatabio"
    },
    "data": [
        {
            "id": 11,
            "name": "Folhas adaxial",
            "description": "Images of the adaxial surface of leaves",
            "counts": {
                "Media": 1852,
                "Project": 0,
                "Dataset": 0,
                "ODBTrait": 0
            }
        },
        {
            "id": 12,
            "name": "Folha forma",
            "description": "Imagem mostrando uma folha ou o formato da folha.",
            "counts": {
                "Media": 713,
                "Project": 0,
                "Dataset": 0,
                "ODBTrait": 0
            }
        },
        {
            "id": 13,
            "name": "Frutos",
            "description": "Imagens com frutos",
            "counts": {
                "Media": 2595,
                "Project": 0,
                "Dataset": 0,
                "ODBTrait": 0
            }
        }
    ]
}

3 - Post data

How to import data to OpenDataBio using the API

Importing data

Structured custom data in the notes field

The notes field of any model is for plain text or a text formatted as a JSON object containing structured data. Json allows you to store custom structured data in any model that has the notes field. For example, you may want to store secondary fields from source datasets during import, or any additional data not provided by the OpenDataBio database structure. This data is not validated by OpenDataBio and the standardization of tags and values is up to you. Json notes will be imported and exported as JSON text and will be presented in the interface as a formatted table; URLs in your Json will be presented as links in this table.

POST endpoints

bibreferences (POST)

Bibliographic references (GET lists, POST creates).

ParameterRequiredDescriptionExample
bibtexNoBibTeX formatted reference string. (Provide doi or bibtex.)@article{mykey,...}
doiNoDOI number or URL. (Provide doi or bibtex.)10.1234/abcd.2020.1

biocollections (POST)

Biocollections (GET lists, POST creates).

ParameterRequiredDescriptionExample
acronymYesBiocollection acronym.INPA
nameYesTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}

individuals (POST)

Individuals (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
altitudeNoElevation in meters.75
angleNoAzimuth from reference point, in degrees.45
biocollectionNoBiocollection id, name or acronym.INPA
biocollection_numberNoCatalogue number/code inside the biocollection.12345
biocollection_typeNoNomenclatural type code or name.Holotype or 2
collectorYesCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetYesDataset id or acronym.3 or FOREST1
dateYesDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day. (At least the year must be provided.)2024-05-20 or {\"year\":1888,\"month\":5}
distanceNoDistance from reference point in meters.12.5
identification_based_on_biocollectionNoBiocollection name/id used as reference for identification.INPA
identification_based_on_biocollection_numberNoCatalogNumber in the reference biocollection8765
identification_dateNoIdentification date (full or incomplete).2023-06-NA
identification_individualNoID/organismID of another individual that provides the taxonomic identification for the individual’s record3245 or REC-123
identification_notesNoNotes for the identification.Checked with microscope
identifierNoPerson(s) responsible for identification; accept id, abbreviation, name or email; separate multiple with | or ;.Costa, A.|Lima, B. or 1|2|3 or Adolpho Ducke|José Ramos|Paulo Apóstolo Costa Lima Assunção
latitudeNoLatitude in decimal degrees (negative for south). (Required when location is not provided.)-3.101
locationNoLocation id or name. (Required when latitude/longitude are not provided.)Parcela 25ha or 55
location_date_timeNoDate or date+time for the occurrence/location event. (Required when adding multiple locations or when different from individual date.)2023-08-14 12:30:00
location_notesNoNotes for the occurrence/location entry.Near trail marker 10
longitudeNoLongitude in decimal degrees (negative for west). (Required when location is not provided.)-60.12
modifierNoIdentification modifier code/name (s.s.=1, s.l.=2, cf.=3, aff.=4, vel aff.=5).3
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
tagYesIndividual tag/number/code.A-1234
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789
xNoX coordinate for plots or individual position.12.3
yNoY coordinate for plots or individual position.8.7

individual-locations (POST)

Occurrences for individuals with multiple locations (GET lists, POST/PUT upserts).

ParameterRequiredDescriptionExample
altitudeNoElevation in meters.75
angleNoAzimuth from reference point, in degrees.45
distanceNoDistance from reference point in meters.12.5
individualYesIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
latitudeNoLatitude in decimal degrees (negative for south). (Required when location is not provided.)-3.101
locationNoLocation id or name. (Required when latitude/longitude are not provided.)Parcela 25ha or 55
location_date_timeYesDate or date+time for the occurrence/location event.2023-08-14 12:30:00
location_notesNoNotes for the occurrence/location entry.Near trail marker 10
longitudeNoLongitude in decimal degrees (negative for west). (Required when location is not provided.)-60.12
xNoX coordinate for plots or individual position.12.3
yNoY coordinate for plots or individual position.8.7

locations (POST)

Locations (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
adm_levelYesLocation administrative level code (e.g. 100=plot, 10=country).100
altitudeNoElevation in meters.75
azimuthNoAzimuth (degrees) used to build plot/transect geometry when location is a POINT.90
datumNoSpatial datum/projection string.EPSG:4326-WGS 84
geojsonNoSingle GeoJSON Feature with geometry and at least name + adm_level properties.{\"type\":\"Feature\",\"properties\":{\"name\":\"Plot A\",\"adm_level\":100},\"geometry\":{...}}
geomNoWKT geometry (POINT, LINESTRING, POLYGON, MULTIPOLYGON). (Provide geom or lat+long.)POLYGON((-60 -3,-60.1 -3,-60.1 -3.1,-60 -3.1,-60 -3))
ismarineNoFlag to allow marine/offshore locations outside country polygons.1
latNoLatitude in decimal degrees (negative for south). (Provide geom or lat+long.)-3.101
longNoLongitude in decimal degrees (negative for west). (Provide geom or lat+long.)-60.12
nameYesTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
parentNoParent id/name; for traits this is another trait export_name/id to define hierarchy.woodDensity
startxNoStart X coordinate for subplot relative to parent plot.5.5
startyNoStart Y coordinate for subplot relative to parent plot.10.0
xNoX coordinate for plots or individual position.12.3
yNoY coordinate for plots or individual position.8.7

locations-validation (POST)

Validates coordinates against registered locations (POST).

ParameterRequiredDescriptionExample
latitudeYesLatitude in decimal degrees (negative for south).-3.101
longitudeYesLongitude in decimal degrees (negative for west).-60.12

measurements (POST)

Trait measurements (GET lists, POST creates/imports via ImportMeasurements job, PUT bulk updates).

ParameterRequiredDescriptionExample
bibreferenceNoBibreference id or bibkey.34 or ducke1953
datasetYesDataset id/name where the measurement will be stored; falls back to authenticated user default dataset if omitted.3 or FOREST1
dateYesMeasurement date; accepts YYYY-MM-DD, YYYY-MM, YYYY, or array/year-month-day fields (date_year/date_month/date_day).2024-05-10 or {\"year\":2024,\"month\":5}
duplicatedNoInteger allowing repeated measurements on the same date/object; must be higher than existing duplicates.2
link_idNoRequired for LINK trait types: id of the linked object (e.g., Taxon id). (Required when trait type is Link.)55
locationNoLocation id or name.Parcela 25ha or 55
notesNoOptional free text or JSON notes stored with the measurement.{\"method\":\"caliper\"}
object_idYesRequired. Id of the measured object (Individual, Location, Taxon, Voucher, Media). Alias: measured_id.4521
object_typeYesRequired when not provided in header. Class basename or FQCN of the measured object (Individual, Location, Taxon, Voucher, Media). Alias: measured_type.Individual
parent_measurementNoWhen trait depends on another measurement, provide the parent measurement id for the same object and date.3001
personYesPerson id, abbreviation, full name or email (supports lists with | or ;).J.Silva|M.Costa
trait_idYesRequired. Trait id or export_name to be measured (also accepts trait key “trait”).DBH or 12
valueNoInput varies by trait type: QUANT_INTEGER (0) = integer number; QUANT_REAL (1) = decimal number with dot separator; CATEGORICAL or ORDINAL (2/4) = single category id or translated name; CATEGORICAL_MULTIPLE (3) = list of category ids/names separated by | ; or , (or an array); TEXT (5) = free text string; COLOR (6) = hex color like #A1B2C3 or #ABC; LINK (7) = send link_id pointing to the linked object (value may be blank or a numeric qualifier); SPECTRAL (8) = semicolon-separated numeric series whose length equals trait value_length; GENEBANK (9) = GenBank accession string (validated against NCBI). (Required unless trait type is Link.)QUANT_REAL: 23.4 | CATEGORICAL: 15 or Dead | CATEGORICAL_MULTIPLE: 12;14 or Alternate;Opposite | SPECTRAL: 0.12;0.11;0.10

media (POST)

Media metadata (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
collectorNoCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetNoDataset id or acronym.3 or FOREST1
dateNoDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day.2024-05-20 or {\"year\":1888,\"month\":5}
filenameYesExact media file name inside the ZIP when importing media.IMG_0001.jpg
latitudeNoLatitude in decimal degrees (negative for south).-3.101
licenseNoPublic license code for media (CC0, CC-BY, CC-BY-SA, etc.).CC-BY-SA
locationNoLocation id or name.Parcela 25ha or 55
longitudeNoLongitude in decimal degrees (negative for west).-60.12
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
object_idYesId of object the media belongs to (Individual, Location, Taxon, Voucher).4521
object_typeYesThe object type the media belongs to, one of Individual, Location, Taxon, Voucher, or Media.Individual
projectNoProject id or acronym.PDBFF or 2
tagsNoTag ids or names list for media or filters (use | or ;).flower|leaf
title_enNoMedia title in English.Leaf detail
title_ptNoMedia title in Portuguese.Detalhe da folha

persons (POST)

People (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
abbreviationNoStandard abbreviation for a person or biocollection.Silva, J.B, Pilco, M.V.
biocollectionNoBiocollection id, name or acronym.INPA
emailNoEmail address.user@example.org
full_nameYesPerson full name.Joao Silva
institutionNoInstitution associated with a person.INPA

taxons (POST)

Taxonomic names (GET lists, POST creates).

ParameterRequiredDescriptionExample
authorNoTaxon author string for unpublished names.Smith & Jones
author_idNoPerson id/name/email for the author of an unpublished taxon. (Required for unpublished names (or use person).)25 or Pilco, M.V.
bibreferenceNoBibreference id or bibkey.34 or ducke1953
gbifNoGBIF nubKey for a taxon.28792
ipniNoIPNI id for a taxon.123456-1
levelNoTaxon rank code or string.210 or species
mobotNoTropicos id for a taxon.12345678
mycobankNoMycoBank id for a taxon.MB123456
nameYesTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
parentNoParent id/name; for traits this is another trait export_name/id to define hierarchy. (Required for unpublished names.)woodDensity
personNoPerson id, abbreviation, full name or email (supports lists with | or ;). (Required for unpublished names (or use author_id).)J.Silva|M.Costa
validNoWhen 1, return only valid taxon names.1
zoobankNoZooBank id for a taxon.urn:lsid:zoobank.org:act:12345678

traits (POST)

Trait definitions (GET lists, POST creates).

ParameterRequiredDescriptionExample
bibreferenceNoBibreference id or bibkey.34 or ducke1953
categoriesNoTrait categories JSON list with lang/rank/name/description. (Required for categorical and ordinal traits.)[{\"lang\":\"en\",\"rank\":1,\"name\":\"small\"}]
descriptionYesTranslatable description text. Accepts a plain string or a JSON map of language codes to descriptions.{"en":"Tree height at breast height","pt-br":"Altura da árvore à altura do peito"}
export_nameYesUnique export name for trait.treeDbh,plantHeight
link_typeNoClass name for Link trait target (e.g. Taxon). (Required for Link traits.)Taxon
nameYesTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
objectsYesTrait target objects (comma separated).Individual,Voucher
parentNoParent trait id or export_name; when set, measurements of this trait must also include a measurement for the parent trait.woodDensity
range_maxNoMaximum allowed numeric value for quantitative traits.999.9
range_minNoMinimum allowed numeric value for quantitative traits.0.01
tagsNoTag ids or names list for media or filters (use | or ;).flower|leaf
typeYesGeneric type parameter (trait type code or vernacular type such as use/generic/etimology).use or 10
unitNo(Required for quantitative traits.)
value_lengthNoNumber of values for spectral trait types. (Required for spectral traits.)1024
wavenumber_maxNoMaximum wavenumber for spectral traits. (Required for spectral traits.)25000
wavenumber_minNoMinimum wavenumber for spectral traits. (Required for spectral traits.)4000

vernaculars (POST)

Vernacular names (GET lists, POST creates).

ParameterRequiredDescriptionExample
citationsNoList of citations (text + bibreference) for vernaculars.[{\"citation\":\"Silva 2020\",\"bibreference\":12}]
individualsNoList of individual ids/fullnames for vernacular links.12|23|45
languageYesLanguage id/code/nameen or 1 or english or portuguese
nameYesTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
parentNoParent id/name; for traits this is another trait export_name/id to define hierarchy.woodDensity
taxonsNoList of taxon ids/names (vernacular links).Euterpe edulis|Euterpe precatoria
typeNoGeneric type parameter (trait type code or vernacular type such as use/generic/etimology).use or 10

vouchers (POST)

Voucher specimens (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
biocollectionYesBiocollection id, name or acronym.INPA
biocollection_numberNoCatalogue number/code inside the biocollection.12345
biocollection_typeNoNomenclatural type code or name.Holotype or 2
collectorNoCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetNoDataset id or acronym.3 or FOREST1
dateNoDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day.2024-05-20 or {\"year\":1888,\"month\":5}
individualYesIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
numberNoCollector number/code (voucher/individual tag when different from individual).1234A

datasets (POST)

Datasets and published dataset files (GET lists, POST creates via import job).

ParameterRequiredDescriptionExample
descriptionNoTranslatable description text. Accepts a plain string or a JSON map of language codes to descriptions. (Required when privacy is 2 or 3.){"en":"Tree height at breast height","pt-br":"Altura da árvore à altura do peito"}
licenseNoPublic license code for media (CC0, CC-BY, CC-BY-SA, etc.). (Required when privacy is 2 or 3.)CC-BY-SA
nameYesShort name or nickname for the dataset - make informative, shorter than title.Morphometrics-Aniba
privacyYes(Accepted values: 0 (auth), 1 (project), 2 (registered), 3 (public).)
project_idNo(Required when privacy is 1 (project).)
titleNo(Required when privacy is 2 or 3.)

4 - Put data

Which EndPoints allow PUT in the API!

individuals (PUT)

Individuals (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoNumeric ID of the record to be updated (Provide id or individual_id.)12
collectorNoCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetNoDataset id or acronym.3 or FOREST1
dateNoDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day.2024-05-20 or {\"year\":1888,\"month\":5}
identification_based_on_biocollectionNoBiocollection name/id used as reference for identification.INPA
identification_based_on_biocollection_numberNoCatalogNumber in the reference biocollection8765
identification_dateNoIdentification date (full or incomplete).2023-06-NA
identification_individualNoID/organismID of another individual that provides the taxonomic identification for the individual’s record3245 or REC-123
identification_notesNoNotes for the identification.Checked with microscope
identifierNoPerson(s) responsible for identification; accept id, abbreviation, name or email; separate multiple with | or ;.Costa, A.|Lima, B. or 1|2|3 or Adolpho Ducke|José Ramos|Paulo Apóstolo Costa Lima Assunção
individual_idNoNumeric ID of the record to be updated (Provide id or individual_id.)12
modifierNoIdentification modifier code/name (s.s.=1, s.l.=2, cf.=3, aff.=4, vel aff.=5).3
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
tagNoIndividual tag/number/code.A-1234
taxonNoTaxon id or canonical full name list.Licaria cannela or 456,789

individual-locations (PUT)

Occurrences for individuals with multiple locations (GET lists, POST/PUT upserts).

ParameterRequiredDescriptionExample
idNoNumeric ID of the record to be updated (Provide id or individual_location_id.)12
altitudeNoElevation in meters.75
angleNoAzimuth from reference point, in degrees.45
distanceNoDistance from reference point in meters.12.5
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
individual_location_idNoIndividual-location record id. (Provide id or individual_location_id.)44
latitudeNoLatitude in decimal degrees (negative for south).-3.101
locationNoLocation id or name.Parcela 25ha or 55
location_date_timeNoDate or date+time for the occurrence/location event.2023-08-14 12:30:00
location_notesNoNotes for the occurrence/location entry.Near trail marker 10
longitudeNoLongitude in decimal degrees (negative for west).-60.12
xNoX coordinate for plots or individual position.12.3
yNoY coordinate for plots or individual position.8.7

locations (PUT)

Locations (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoNumeric ID of the record to be updated (Provide id or location_id.)12
adm_levelNoLocation administrative level code (e.g. 100=plot, 10=country).100
altitudeNoElevation in meters.75
datumNoSpatial datum/projection string.EPSG:4326-WGS 84
geomNoWKT geometry (POINT, LINESTRING, POLYGON, MULTIPOLYGON).POLYGON((-60 -3,-60.1 -3,-60.1 -3.1,-60 -3.1,-60 -3))
ismarineNoFlag to allow marine/offshore locations outside country polygons.1
latNoLatitude in decimal degrees (negative for south).-3.101
location_idNoLocation id of the record to update. (Provide id or location_id.)44
longNoLongitude in decimal degrees (negative for west).-60.12
nameNoTranslatable trait name. Accepts a plain string or a JSON map of language codes to names.{"en":"Height","pt-br":"Altura"}
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
parentNoParent id/name; for traits this is another trait export_name/id to define hierarchy.woodDensity
startxNoStart X coordinate for subplot relative to parent plot.5.5
startyNoStart Y coordinate for subplot relative to parent plot.10.0
xNoX coordinate for plots or individual position.12.3
yNoY coordinate for plots or individual position.8.7

measurements (PUT)

Trait measurements (GET lists, POST creates/imports via ImportMeasurements job, PUT bulk updates).

ParameterRequiredDescriptionExample
idNoNumeric ID of the record to be updated (Provide id or measurement_id.)12
bibreferenceNoBibreference id or bibkey.34 or ducke1953
datasetNoDataset id or acronym.3 or FOREST1
dateNoDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day.2024-05-20 or {\"year\":1888,\"month\":5}
duplicatedNoSequential number to allow duplicate measurements for same trait+object+date.2 for a second measurement, number 3 for third, ...
link_idNoLinked object id when trait type is Link.taxon id 55
locationNoLocation id or name.Parcela 25ha or 55
measurement_idNoMeasurement id of the record to update. (Provide id or measurement_id.)77
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
object_idNoId of the measured object (Individual, Location, Taxon, Voucher or Media).4521
object_typeNoMeasured object type: Individual, Location, Taxon, Voucher, or Media.Individual
parent_measurementNoParent measurement ID for measurements whose variable depends on the measurement of another variable3001
personNoPerson id, abbreviation, full name or email (supports lists with | or ;).J.Silva|M.Costa
trait_idNoTrait id or export_name for measurements.12 or DBH
valueNoMeasurement payload varies by trait type: QUANT_INTEGER (0) = integer number; QUANT_REAL (1) = decimal number with dot separator; CATEGORICAL or ORDINAL (2/4) = single category id or translated name; CATEGORICAL_MULTIPLE (3) = list of category ids/names separated by | ; or , (or an array); TEXT (5) = free text string; COLOR (6) = hex color like #A1B2C3 or #ABC; LINK (7) = send link_id pointing to the linked object (value may be blank or a numeric qualifier); SPECTRAL (8) = semicolon-separated numeric series whose length equals trait value_length; GENEBANK (9) = GenBank accession string (validated against NCBI).QUANT_REAL: 23.4 | CATEGORICAL: 15 | CATEGORICAL_MULTIPLE: 12|14 | SPECTRAL: 0.12;0.11;0.10

media (PUT)

Media metadata (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoSingle id or comma-separated list to filter or target records. (Provide id, media_id or media_uuid.)1,2,3
collectorNoCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetNoDataset id or acronym.3 or FOREST1
dateNoDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day.2024-05-20 or {\"year\":1888,\"month\":5}
latitudeNoLatitude in decimal degrees (negative for south).-3.101
licenseNoPublic license code for media (CC0, CC-BY, CC-BY-SA, etc.).CC-BY-SA
locationNoLocation id or name.Parcela 25ha or 55
longitudeNoLongitude in decimal degrees (negative for west).-60.12
media_idNoMedia numeric id. (Provide id, media_id or media_uuid.)88
media_uuidNoMedia UUID. (Provide id, media_id or media_uuid.)a3f0a4ac-6b5b-11ed-b8c0-0242ac120002
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
projectNoProject id or acronym.PDBFF or 2
tagsNoTag ids or names list for media or filters (use | or ;).flower|leaf
title_enNoMedia title in English.Leaf detail
title_ptNoMedia title in Portuguese.Detalhe da folha

persons (PUT)

People (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoNumeric ID of the record to be updated (Provide id or person_id.)12
abbreviationNoStandard abbreviation for a person or biocollection.Silva, J.B, Pilco, M.V.
biocollectionNoBiocollection id, name or acronym.INPA
emailNoEmail address.user@example.org
full_nameNoPerson full name.Joao Silva
institutionNoInstitution associated with a person.INPA
person_idNoPerson id of the record to update. (Provide id or person_id.)12

vouchers (PUT)

Voucher specimens (GET lists, POST creates, PUT updates).

ParameterRequiredDescriptionExample
idNoNumeric ID of the record to be updated (Provide id or voucher_id.)12
biocollectionNoBiocollection id, name or acronym.INPA
biocollection_numberNoCatalogue number/code inside the biocollection.12345
biocollection_typeNoNomenclatural type code or name.Holotype or 2
collectorNoCollector(s) id, abbreviation, name or email. Use | or ; to separate multiple people; first is main collector.J.Silva|M.Costa
datasetNoDataset id or acronym.3 or FOREST1
dateNoDate (YYYY-MM-DD) or incomplete date (e.g. 1888-05-NA) or array with year/month/day.2024-05-20 or {\"year\":1888,\"month\":5}
individualNoIndividual id, uuid or organismID (fullname).4521 or 2ff0e884-3d33
notesNoFree text or JSON notes field.{\"expedition\":\"2024-01\",\"tag\":\"P1\"}
numberNoCollector number/code (voucher/individual tag when different from individual).1234A
voucher_idNoVoucher id of the record to update. (Provide id or voucher_id.)55