Introduction

The NODE API provides programmatic access to marine genomic data. This documentation will help you understand how to use the API to query and retrieve data from the NODE platform.

Overview

NODE provides a RESTful API allows you to access all available data in the database through HTTP requests. The API has several endpoints and parameters, allowing you to parse through our data with flexible queries.

You can use this API to query the entire database for projects, samples, analyses, features, and taxonomic information for integration into your own applications, data analysis workflows, or visualizations.

The API is public and requires no authentication or API keys to use. GET requests are the only type supported.

Quick Start

Here are some examples of how to get data in various environments:
Raw JSON responses in browser:
https://www.oceandnaexplorer.org//api/tables
Python (+ Pandas) example:
import requests
import json
import pandas as pd

# Make API request to desired endpoint
url = "https://www.oceandnaexplorer.org//api/project"
response = requests.get(url)

# Check if request was successful
if response.status_code == 200:
    # Parse JSON response and print it
    data = response.json()
    results = data['result']
    print("JSON Response:")
    print(json.dumps(results, indent=2))

    # Convert to DataFrame and print it
    df = pd.DataFrame(results)
    print("--------------------")
    print("DataFrame:")
    print(df)
else:
    print(f"Error: {response.status_code}")
    if response.content:
        print(f"Error message: {response.json()['error']}")
R example:
library(httr)
library(jsonlite)

# Make API request
url <- "https://www.oceandnaexplorer.org//api/project"
response <- GET(url)

# Check if request was successful
if (http_status(response)$category == "Success") {
  # Parse JSON response
  data <- content(response, "text") %>% fromJSON()
  results <- data$result
  print(results)
} else {
  print(paste("Error:", http_status(response)$reason))
  if (length(content(response)) > 0) {
    print(paste("Error message:", content(response)$error))
  }
}

Database Schema

This section shows the relationships between tables in the database, and what fields are available for each table. This will help you effectively query relations and filter by fields.

Entity Relationship Diagram

The following diagram shows the relationships between tables in the database:

Use this diagram as a reference when constructing queries with the relations parameter.

Table Definitions

The dropdown menus below show the fields available for each table in NODE. You can use this information in your API requests to query and filter on specific fields.

Project
FieldTypeOptionalOptions
idinteger
project_idstring
userIdstring
dateSubmitteddate
editHistoryjson
recordedBystring
recordedByIDstringtrue
project_contactstring
institutionstringtrue
institutionIDstringtrue
project_namestring
study_factorstringtrue
detection_typestring
neg_cont_0_1booleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
parent_project_idstringtrue
pos_cont_0_1booleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
licensestringtrue
rightsHolderstringtrue
accessRightsstringtrue
informationWithheldstringtrue
dataGeneralizationsstringtrue
bibliographicCitationstringtrue
associated_resourcestringtrue
mod_datedatetrue
checkls_verstring
seq_archivestringtrue
code_repostringtrue
biological_repintegertrue
Sample
FieldTypeOptionalOptions
idinteger
samp_namestring
project_idstring
samp_categorystring
decimalLatitudefloattrue
decimalLongitudefloattrue
verbatimLatitudestringtrue
verbatimLongitudestringtrue
verbatimCoordinateSystemstringtrue
verbatimSRSstringtrue
geo_loc_namestring
eventDatestring
eventDurationValuefloattrue
eventDurationUnitstringtrue
verbatimEventDatestringtrue
verbatimEventTimestringtrue
verbatimDateEndstringtrue
verbatimTimeEndstringtrue
env_broad_scalestringtrue
env_local_scalestringtrue
env_mediumstringtrue
habitat_natural_artificial_0_1booleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
samp_collect_methodstringtrue
samp_collect_devicestringtrue
samp_sizefloattrue
samp_size_unitstringtrue
samp_store_tempfloattrue
samp_store_solstringtrue
samp_store_durstringtrue
samp_store_method_additionalstringtrue
dna_store_locstringtrue
samp_store_locstringtrue
samp_mat_processstringtrue
filter_passive_active_0_1booleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
filter_onsite_durstringtrue
size_frac_lowfloattrue
size_fracfloattrue
filter_diameterfloattrue
filter_surface_areafloattrue
filter_materialstringtrue
filter_namestringtrue
precip_chem_prepstringtrue
precip_force_prepfloattrue
precip_time_prepfloattrue
precip_temp_prepfloattrue
prepped_samp_store_tempfloattrue
prepped_samp_store_solstringtrue
prepped_samp_store_durfloattrue
prep_method_additionalstringtrue
prefilter_materialstringtrue
pump_flow_ratefloattrue
pump_flow_rate_unitstringtrue
stationed_sample_durstringtrue
sample_derived_fromstringtrue
sample_composed_ofstringtrue
biological_rep_relationstringtrue
samp_vol_we_dna_extfloattrue
samp_vol_we_dna_ext_unitstringtrue
nucl_acid_ext_lysisstringtrue
nucl_acid_ext_sepstringtrue
nucl_acid_extstringtrue
nucl_acid_ext_kitstringtrue
nucl_acid_ext_modifystringtrue
dna_cleanup_0_1booleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
dna_cleanup_methodstringtrue
concentrationfloattrue
concentration_methodstringtrue
ratioOfAbsorbance260_280floattrue
pool_dna_numintegertrue
nucl_acid_ext_method_additionalstringtrue
concentration_unitstringtrue
date_extstringtrue
samp_weatherstringtrue
minimumDepthInMetersfloattrue
maximumDepthInMetersfloattrue
tot_depth_water_colfloattrue
elevfloattrue
tempfloattrue
chlorophyllfloattrue
light_intensityfloattrue
misc_paramfloattrue
phfloattrue
ph_methstringtrue
salinityfloattrue
suspend_part_matterfloattrue
tidal_stagestringtrue
turbidityfloattrue
water_currentfloattrue
solar_irradiancestringtrue
wind_directionstringtrue
wind_speedfloattrue
diss_inorg_carbfloattrue
diss_inorg_nitrofloattrue
diss_org_carbfloattrue
diss_org_nitrofloattrue
diss_oxygenfloattrue
tot_diss_nitrofloattrue
tot_inorg_nitrofloattrue
tot_nitrofloattrue
tot_part_carbfloattrue
tot_org_carbfloattrue
tot_org_c_methfloattrue
tot_nitro_contentfloattrue
tot_nitro_cont_methfloattrue
tot_carbfloattrue
part_org_carbfloattrue
part_org_nitrofloattrue
nitratefloattrue
nitritefloattrue
nitrofloattrue
org_carbfloattrue
org_matterfloattrue
org_nitrofloattrue
diss_inorg_carb_unitstringtrue
diss_inorg_nitro_unitstringtrue
diss_org_carb_unitstringtrue
diss_org_nitro_unitstringtrue
diss_oxygen_unitstringtrue
nitrate_unitstringtrue
nitrite_unitstringtrue
nitro_unitstringtrue
org_carb_unitstringtrue
org_matter_unitstringtrue
org_nitro_unitstringtrue
part_org_carb_unitstringtrue
part_org_nitro_unitstringtrue
tot_carb_unitstringtrue
tot_diss_nitro_unitstringtrue
tot_inorg_nitro_unitstringtrue
tot_nitro_content_unitstringtrue
tot_nitro_unitstringtrue
tot_org_carb_unitstringtrue
tot_part_carb_unitstringtrue
rel_cont_idstringtrue
Assay
FieldTypeOptionalOptions
idinteger
assay_namestring
neg_cont_typestringtrue
pos_cont_typestringtrue
sterilise_methodstringtrue
pcr_0_1boolean0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
thermocyclerstringtrue
amplificationReactionVolumefloattrue
assay_validationstringtrue
targetTaxonomicAssaystringtrue
targetTaxonomicScopestringtrue
target_genestring
target_subfragmentstringtrue
ampliconSizefloattrue
pcr_primer_forwardstringtrue
pcr_primer_reversestringtrue
pcr_primer_name_forwardstringtrue
pcr_primer_name_reversestringtrue
pcr_primer_reference_forwardstringtrue
pcr_primer_reference_reversestringtrue
pcr_primer_vol_forwardfloattrue
pcr_primer_vol_reversefloattrue
pcr_primer_conc_forwardfloattrue
pcr_primer_conc_reversefloattrue
probeReporterstringtrue
probeQuencherstringtrue
probe_seqstringtrue
probe_refstringtrue
probe_concfloattrue
commercial_mmstringtrue
custom_mmstringtrue
pcr_dna_volfloattrue
pcr_repintegertrue
nucl_acid_ampstringtrue
pcr_condstringtrue
annealingTempstringtrue
pcr_cyclesfloattrue
pcr_analysis_softwarestringtrue
pcr_method_additionalstringtrue
assay_typestring
Library
FieldTypeOptionalOptions
idinteger
lib_idstring
assay_namestring
samp_namestring
barcoding_pcr_apprstringtrue
platformstringtrue
instrumentstringtrue
seq_kitstringtrue
lib_layoutstringtrue
sequencing_locationstringtrue
adapter_forwardstringtrue
adapter_reversestringtrue
lib_screenstringtrue
seq_method_additionalstringtrue
mid_forwardstringtrue
mid_reversestringtrue
filenamestringtrue
filename2stringtrue
seq_run_idstringtrue
biosample_accessionstringtrue
input_read_countintegertrue
checksum_filenamestringtrue
checksum_filename2stringtrue
lib_concfloattrue
lib_conc_methstringtrue
lib_conc_unitstringtrue
phix_percfloattrue
checksum_methodstringtrue
pcr2_amplificationReactionVolumefloattrue
pcr2_analysis_softwarestringtrue
pcr2_annealingTempfloattrue
pcr2_commercial_mmstringtrue
pcr2_condstringtrue
pcr2_custom_mmstringtrue
pcr2_cyclesintegertrue
pcr2_dna_volfloattrue
pcr2_method_additionalstringtrue
pcr2_plate_idstringtrue
pcr2_thermocyclerstringtrue
pcr_plate_idstringtrue
block_refstringtrue
block_seqstringtrue
block_taxastringtrue
inhibition_checkstringtrue
inhibition_check_0_1booleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
Analysis
FieldTypeOptionalOptions
idinteger
analysis_run_namestring
userIdstring
dateSubmitteddate
editHistoryjson
project_idstring
assay_namestring
sop_bioinformaticsstringtrue
trim_methodstringtrue
trim_paramstringtrue
demux_toolstringtrue
demux_max_mismatchintegertrue
merge_toolstringtrue
merge_min_overlapintegertrue
min_len_cutoffintegertrue
min_len_toolstringtrue
error_rate_toolstringtrue
error_rate_typestringtrue
error_rate_cutofffloattrue
chimera_check_methodstringtrue
chimera_check_paramstringtrue
otu_clust_toolstringtrue
otu_clust_cutofffloattrue
min_reads_cutofffloattrue
min_reads_cutoff_unitstringtrue
min_reads_toolstringtrue
otu_dbstringtrue
otu_db_customstringtrue
tax_assign_catstringtrue
otu_seq_comp_apprstringtrue
tax_class_id_cutofffloattrue
tax_class_query_cutofffloattrue
tax_class_collapsestringtrue
tax_class_otherstringtrue
screen_contam_methodstringtrue
screen_geograph_methodstringtrue
screen_nontarget_methodstringtrue
screen_otherstringtrue
bioinfo_method_additionalstringtrue
asv_methodstringtrue
dada2_trunc_len_fintegertrue
dada2pe_trunc_len_rintegertrue
dada2_trim_left_fintegertrue
dada2pe_trim_left_rintegertrue
dada2_max_ee_fintegertrue
dada2pe_max_ee_rintegertrue
dada2_trunc_qintegertrue
dada2_pooling_methodstringtrue
dada2_chimera_methodstringtrue
dada2_min_fold_parent_over_abundanceintegertrue
dada2_n_reads_learnintegertrue
deblur_trim_lengthintegertrue
deblur_sample_statsbooleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
deblur_mean_errorfloattrue
deblur_indel_probfloattrue
deblur_indel_maxintegertrue
deblur_min_readsintegertrue
deblur_min_sizeintegertrue
repseq_min_lengthintegertrue
repseq_max_lengthintegertrue
repseq_min_abundancefloattrue
repseq_min_prevalencefloattrue
discard_untrimmedbooleantrue0 | 1 | false | true | not applicable: control sample | not applicable: sample group | not applicable | missing: not collected: synthetic construct | missing: not collected: lab stock | missing: not collected: third party data | missing: not collected | missing: not provided: data agreement established pre-2023 | missing: not provided | missing: restricted access: endangered species | missing: restricted access: human-identifiable | missing: restricted access
otu_num_tax_assignedintegertrue
output_otu_numintegertrue
output_read_countintegertrue
otu_final_descriptionstringtrue
otu_raw_descriptionstringtrue
Occurrence
FieldTypeOptionalOptions
idinteger
samp_namestring
analysis_run_namestring
featureidstring
organismQuantityinteger
Feature
FieldTypeOptionalOptions
idinteger
featureidstring
dna_sequencestring
sequenceLengthinteger
Assignment
FieldTypeOptionalOptions
idinteger
analysis_run_namestring
featureidstring
taxonomystring
Confidencefloat
Taxonomy
FieldTypeOptionalOptions
idinteger
taxonomystring
verbatimIdentificationstring
domainstringtrue
kingdomstringtrue
supergroupstringtrue
divisionstringtrue
subdivisionstringtrue
phylumstringtrue
classstringtrue
orderstringtrue
familystringtrue
genusstringtrue
speciesstringtrue

Query Construction Guide

This section explains how to construct API queries to retrieve data from the NODE database.

URL Structure

API requests follow this general pattern:

https://www.oceandnaexplorer.org//api/[endpoint]?[parameter]&[parameter]&...

Where:

  • [endpoint] is the name of the API endpoint
  • [parameters] are optional query parameters

Query Parameter Syntax

Query parameters follow this format: parameter=value

For example, to select specific fields:

/api/project?fields=id,project_name

Multiple Parameters

Combine multiple parameters using an ampersand:

/api/project?fields=id,project_name&limit=10

Example URLs

Here are some example URLs to help you understand query construction:

Basic query:

/api/project?fields=id,project_name

With relations:

/api/project?fields=id,project_name&relations=samples

With filtering:

/api/project?project_name=Gomecc4&limit=5

These examples demonstrate different ways to query the API. You can adjust them to suit your specific needs.

API Endpoints

This section documents all available API endpoints and their functionality.

Get All Tables

Endpoint: /api/tables

Returns a list of all available tables in the database. Use this to discover what data is available through the API.

Example URL: https://www.oceandnaexplorer.org//api/tables
Example Response:
{
  "message": "Success",
  "result": [
    "project",
    "sample",
    "assay",
    "library",
    "analysis",
    "occurrence",
    "feature",
    "assignment",
    "taxonomy"
  ]
}

Get Table Fields

Endpoint: /api/[table]/fields
Example URL: /api/project
Example Response:
{
  "message": "Success",
  "result": [{
    "id": 1,
    "project_id": "noaa-aoml-gomecc4",
    "userId": "user_2de7fXfAmCCpbB6yr6PbK0Esc9f",
    "dateSubmitted": "2025-03-03T16:26:52.455Z",
    "recordedBy": "Luke Thompson",
    "recordedByID": "https://orcid.org/0000-0002-3911-1280",
    "project_contact": "Luke Thompson",
    "institution": "NOAA/AOML",
    "institutionID": "https://www.aoml.noaa.gov/omics",
    "project_name": "eDNA from Gulf of Mexico Ecosystems and Carbon Cruise 2021 (GOMECC-4)",
    "study_factor": "water column spatial series",
    "detection_type": "multi taxon detection",
    "license": "http://creativecommons.org/publicdomain/zero/1.0/legalcode",
    "rightsHolder": "US Government",
    "accessRights": "no rights reserved",
    "informationWithheld": "no information withheld",
    "dataGeneralizations": "no data generalizations",
    "bibliographicCitation": "https://doi.org/10.1101/2024.07.30.605667",
    "associated_resource": "http://www.earthmicrobiome.org/",
    "mod_date": "2024-10-31T04:00:00.000Z",
    "checkls_ver": "1.1",
    "seq_archive": "PRJNA887898",
    "code_repo": "https://github.com/aomlomics/gomecc",
    "expedition_id": "GOMECC-4 (2021)"
  }]
}

Query Table Data

Endpoint: /api/[table]

Returns multiple records from a specific table. This endpoint supports various query parameters for filtering, selecting fields, including relations, and limiting results.

Example URL: /api/project?fields=id,project_name
Example Response:
{
  "message": "Success",
  "result": [
    { "id": 1, "project_name": "eDNA from Gulf of Mexico Ecosystems and Carbon Cruise 2021 (GOMECC-4)" }
  ]
}

Get Single Record

Endpoint: /api/[table]/[id]
Example URL: http://localhost:3000/api/taxonomy/22
Returns a single record from a table based on its ID. This endpoint supports parameters for selecting specific fields and including related data.
Example Response:
{
  "message": "Success",
  "result": {
    "id": 22,
    "taxonomy": "Eukaryota;Obazoa;Opisthokonta;Metazoa;Arthropoda;Crustacea;Maxillopoda;Centropages;Centropages_furcatus;",
    "verbatimIdentification": "Eukaryota;Obazoa;Opisthokonta;Metazoa;Arthropoda;Crustacea;Maxillopoda;Centropages;Centropages_furcatus;",
    "domain": null,
    "kingdom": "Eukaryota",
    "supergroup": "Obazoa",
    "division": "Opisthokonta",
    "subdivision": "Metazoa",
    "phylum": null,
    "class": "Arthropoda",
    "order": "Crustacea",
    "family": "Maxillopoda",
    "genus": "Centropages",
    "species": "Centropages furcatus"
  }
}

Query Parameters

Query parameters allow you to customize your API requests. This section details all available parameters and how to use them.

Field Selection

Parameter: fields=field1,field2,field3

Specifies which fields to include in the response. When omitted, all fields are returned.

Example URL: /api/project?fields=id,project_name,dateSubmitted

This example returns only the id, project_name, and dateSubmitted fields for each project.

Field Filtering

Parameter: fieldName=value

Filters results to return only records where the specified field contains the provided value.

Example URL: /api/project?project_name=Test

This example returns all projects where the project_name field contains "Test".

Relations

Parameter: relations=relation1,relation2

Includes related data from other tables in the response. The relation names can be lowercase or capitalized and must be plural, separated by commas.

Example URL: /api/project?relations=samples,analyses

This example returns all projects along with their related samples and analyses. By default, only the ID field is included for related records.

Relation Field Options

Parameter: relationsAllFields=true or relationsAllFields=false

Controls whether to include only the ID field on relations (default), or to include all fields.

Example URL: /api/project?relations=samples&relationsAllFields=true

This example returns all projects along with all fields from their related samples, not just the sample IDs.

ID Filtering

Parameter: ids=1,2,4,7

Filters results to return only records with the specified IDs. IDs must be numbers greater than 0, separated by commas.

Example URL: /api/project?ids=1,2,3

This example returns only projects with IDs 1, 2, and 3.

Result Limiting

Parameter: limit=number

Limits the number of results returned. Must be a positive number.

Example URL: /api/project?limit=20

This example limits the results to 20 projects.

Complete Examples

This section provides complete example queries to help you understand how to combine various parameters.

Basic Query

Example URL: /api/project?fields=id,project_name

This simple query returns just the ID and name of all projects.

Example Response:
{
  "message": "Success",
  "result": [
    { "id": 1, "project_name": "Gulf of Mexico Metabarcoding" },
    { "id": 2, "project_name": "Atlantic Coastal eDNA Survey" }
  ]
}

With Relations

Example URL: /api/project?relations=samples&relationsAllFields=true

This query returns all projects along with complete information about their related samples.

Example Response:

{
  "message": "Success",
  "result": [
    {
      "id": 1,
      "project_name": "Gulf of Mexico Metabarcoding",
      "description": "Metabarcoding study of the Gulf of Mexico",
      "samples": [
        {
          "id": 1,
          "sample_id": "GOM-001",
          "collection_date": "2022-05-15",
          "location": "Gulf of Mexico"
        },
        {
          "id": 2,
          "sample_id": "GOM-002",
          "collection_date": "2022-05-16",
          "location": "Gulf of Mexico"
        }
      ]
    }
  ]
}

With Filtering

Example URL: /api/project?project_name=Test&institution=University

This query returns projects where the project_name contains "Test" AND the institution contains "University".

Example Response:

{
  "message": "Success",
  "result": [
    {
      "id": 10,
      "project_name": "Test Project",
      "description": "A test project",
      "institution": "University of Marine Science"
    }
  ]
}

Combined Parameters

Example URL: /api/project?fields=id,project_name&relations=samples&limit=5

This query combines field selection, relations, and a result limit.

Example Response:

{
  "message": "Success",
  "result": [
    {
      "id": 1,
      "project_name": "Gulf of Mexico Metabarcoding",
      "samples": [
        { "id": 1 },
        { "id": 2 }
      ]
    },
    {
      "id": 2,
      "project_name": "Atlantic Coastal eDNA Survey",
      "samples": [
        { "id": 3 },
        { "id": 4 }
      ]
    }
  ]
}

Single Record

Example URL: /api/project/5?fields=id,project_name&relations=samples

This query retrieves a single project by ID, with selected fields and related samples.

Example Response:

{
  "message": "Success",
  "result": {
    "id": 5,
    "project_name": "Caribbean Coral Microbiome Study",
    "samples": [
      { "id": 15 },
      { "id": 16 },
      { "id": 17 }
    ]
  }
}

Response Format

This section explains the structure of API responses so you can properly parse and use the returned data.

Success Structure

Successful API responses have a consistent structure:

{ "message": "Success", "result": [ // Array of results or single object ] }

The message field will always contain "Success" for successful requests.

The result field will contain either:

  • An array of objects (for multiple results)
  • A single object (for single record requests)

[Additional response format details coming soon]

Error Structure

Error responses follow this structure:

{ "message": "Error", "error": "Description of what went wrong" }

The message field will always contain "Error" when something goes wrong.

The error field contains a human-readable description of the error.

[Additional error response details coming soon]

FAQ

Frequently asked questions about using the NODE API.

Q: Do I need an API key to use the NODE API?

A: No, the NODE API is currently open and does not require authentication or API keys.

Q: Are there rate limits for API usage?

A: While there are no strict rate limits currently in place, we ask that you be considerate with your API usage. For applications requiring high-volume requests, please contact us.

Q: I'm not familiar with APIs. How do I get started?

A: An API (Application Programming Interface) allows computers to talk to each other. To use our API, you'll need to make HTTP requests to our endpoints. The simplest way to start is by pasting one of our example URLs into your browser's address bar to see the raw JSON response. For more advanced usage, you can use programming languages like Python, R, or JavaScript.

Q: How do I report issues with the API?

A: Please submit any API issues through our GitHub repository's issue tracker.

Q: How do I cite data obtained through the API?

A: Please cite the NODE platform and the specific projects from which you obtained data. Each project has citation information available through the web interface.