BirdWeather API

Welcome to the documentation for the BirdWeather GraphQL API.

Contact

Tim Clark

tim.clark@scribelabs.com

API Endpoints
https://app.birdweather.com/graphql

Queries

allSpecies

Description

Lookup multiple species by IDs

Response

Returns a SpeciesConnection

Arguments
Name Description
after - String Returns the elements in the list that come after the specified cursor.
before - String Returns the elements in the list that come before the specified cursor.
first - Int Returns the first n elements from the list.
last - Int Returns the last n elements from the list.
ids - [ID!]! Array of species IDs

Example

Query
query allSpecies(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $ids: [ID!]!
) {
  allSpecies(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    ids: $ids
  ) {
    edges {
      ...SpeciesEdgeFragment
    }
    nodes {
      ...SpeciesFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "abc123",
  "before": "xyz789",
  "first": 123,
  "last": 123,
  "ids": ["4"]
}
Response
{
  "data": {
    "allSpecies": {
      "edges": [SpeciesEdge],
      "nodes": [Species],
      "pageInfo": PageInfo,
      "totalCount": 987
    }
  }
}

birdnetSightings

Response

Returns a SightingConnection!

Arguments
Name Description
after - String Returns the elements in the list that come after the specified cursor.
before - String Returns the elements in the list that come before the specified cursor.
first - Int Returns the first n elements from the list.
last - Int Returns the last n elements from the list.
limit - Int Maximum number of results to return
offset - Int Initial offset of first result
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query birdnetSightings(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $limit: Int,
  $offset: Int,
  $period: InputDuration,
  $speciesId: ID,
  $ne: InputLocation,
  $sw: InputLocation
) {
  birdnetSightings(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    limit: $limit,
    offset: $offset,
    period: $period,
    speciesId: $speciesId,
    ne: $ne,
    sw: $sw
  ) {
    edges {
      ...SightingEdgeFragment
    }
    nodes {
      ...SightingFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "abc123",
  "before": "xyz789",
  "first": 987,
  "last": 123,
  "limit": 987,
  "offset": 123,
  "period": InputDuration,
  "speciesId": "4",
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "birdnetSightings": {
      "edges": [SightingEdge],
      "nodes": [Sighting],
      "pageInfo": PageInfo,
      "totalCount": 987
    }
  }
}

counts

Response

Returns a Counts!

Arguments
Name Description
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
stationTypes - [String!] Array of station types to filter on (optional)
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query counts(
  $period: InputDuration,
  $speciesId: ID,
  $stationTypes: [String!],
  $ne: InputLocation,
  $sw: InputLocation
) {
  counts(
    period: $period,
    speciesId: $speciesId,
    stationTypes: $stationTypes,
    ne: $ne,
    sw: $sw
  ) {
    birdnet
    breakdown {
      ...CountsBreakdownFragment
    }
    detections
    species
    stations
  }
}
Variables
{
  "period": InputDuration,
  "speciesId": 4,
  "stationTypes": ["abc123"],
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "counts": {
      "birdnet": 123,
      "breakdown": CountsBreakdown,
      "detections": 123,
      "species": 987,
      "stations": 987
    }
  }
}

dailyDetectionCounts

Arguments
Name Description
period - InputDuration Time period for query (defaults to last 24 hours)
speciesIds - [ID!] Array of species IDs to filter on (optional)
stationIds - [ID!] Array of station IDs to filter on (optional)

Example

Query
query dailyDetectionCounts(
  $period: InputDuration,
  $speciesIds: [ID!],
  $stationIds: [ID!]
) {
  dailyDetectionCounts(
    period: $period,
    speciesIds: $speciesIds,
    stationIds: $stationIds
  ) {
    counts {
      ...SummarySpeciesCountFragment
    }
    date
    dayOfYear
    total
  }
}
Variables
{
  "period": InputDuration,
  "speciesIds": ["4"],
  "stationIds": ["4"]
}
Response
{
  "data": {
    "dailyDetectionCounts": [
      {
        "counts": [SummarySpeciesCount],
        "date": ISO8601Date,
        "dayOfYear": 987,
        "total": 123
      }
    ]
  }
}

detectionCounts

Response

Returns [BinnedSpeciesCount!]!

Arguments
Name Description
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
scoreGt - Float Minimum (>) score
scoreLt - Float Maximum (<) score
scoreGte - Float Minimum (>=) score
scoreLte - Float Maximum (<=) score
confidenceGt - Float Minimum (>) confidence
confidenceLt - Float Maximum (<) confidence
confidenceGte - Float Minimum (>=) confidence
confidenceLte - Float Maximum (<=) confidence
probabilityGt - Float Minimum (>) probability
probabilityLt - Float Maximum (<) probability
probabilityGte - Float Minimum (>=) probability
probabilityLte - Float Maximum (<=) probability
timeOfDayGte - Int Minimum (>=) time of day
timeOfDayLte - Int Maximum (<=) time of day
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query detectionCounts(
  $period: InputDuration,
  $speciesId: ID,
  $scoreGt: Float,
  $scoreLt: Float,
  $scoreGte: Float,
  $scoreLte: Float,
  $confidenceGt: Float,
  $confidenceLt: Float,
  $confidenceGte: Float,
  $confidenceLte: Float,
  $probabilityGt: Float,
  $probabilityLt: Float,
  $probabilityGte: Float,
  $probabilityLte: Float,
  $timeOfDayGte: Int,
  $timeOfDayLte: Int,
  $ne: InputLocation,
  $sw: InputLocation
) {
  detectionCounts(
    period: $period,
    speciesId: $speciesId,
    scoreGt: $scoreGt,
    scoreLt: $scoreLt,
    scoreGte: $scoreGte,
    scoreLte: $scoreLte,
    confidenceGt: $confidenceGt,
    confidenceLt: $confidenceLt,
    confidenceGte: $confidenceGte,
    confidenceLte: $confidenceLte,
    probabilityGt: $probabilityGt,
    probabilityLt: $probabilityLt,
    probabilityGte: $probabilityGte,
    probabilityLte: $probabilityLte,
    timeOfDayGte: $timeOfDayGte,
    timeOfDayLte: $timeOfDayLte,
    ne: $ne,
    sw: $sw
  ) {
    bins {
      ...SpeciesCountBinFragment
    }
    count
  }
}
Variables
{
  "period": InputDuration,
  "speciesId": 4,
  "scoreGt": 123.45,
  "scoreLt": 123.45,
  "scoreGte": 987.65,
  "scoreLte": 987.65,
  "confidenceGt": 987.65,
  "confidenceLt": 987.65,
  "confidenceGte": 123.45,
  "confidenceLte": 123.45,
  "probabilityGt": 987.65,
  "probabilityLt": 987.65,
  "probabilityGte": 123.45,
  "probabilityLte": 123.45,
  "timeOfDayGte": 123,
  "timeOfDayLte": 123,
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "detectionCounts": [
      {"bins": [SpeciesCountBin], "count": 123}
    ]
  }
}

detections

Description

List all detections

Response

Returns a DetectionConnection!

Arguments
Name Description
after - String Returns the elements in the list that come after the specified cursor.
before - String Returns the elements in the list that come before the specified cursor.
first - Int Returns the first n elements from the list.
last - Int Returns the last n elements from the list.
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
speciesIds - [ID!] Array of species IDs to filter on (optional)
stationIds - [ID!] Array of station IDs to filter on (optional)
stationTypes - [String!] Array of station types to filter on (optional)
continents - [String!] Array of continents to filter on (optional)
countries - [String!] Array of countries to filter on (optional)
recordingModes - [String!] Array of recording modes to filter on (optional)
scoreGt - Float Minimum (>) score
scoreLt - Float Maximum (<) score
scoreGte - Float Minimum (>=) score
scoreLte - Float Maximum (<=) score
confidenceGt - Float Minimum (>) confidence
confidenceLt - Float Maximum (<) confidence
confidenceGte - Float Minimum (>=) confidence
confidenceLte - Float Maximum (<=) confidence
probabilityGt - Float Minimum (>) probability
probabilityLt - Float Maximum (<) probability
probabilityGte - Float Minimum (>=) probability
probabilityLte - Float Maximum (<=) probability
timeOfDayGte - Int Minimum (>=) time of day
timeOfDayLte - Int Maximum (<=) time of day
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates
vote - Int Filter detections with up- or down-votes (1 or -1)
sortBy - String
uniqueStations - Boolean Only return one latest detection per station
validSoundscape - Boolean Only return detections with a valid soundscape
eclipse - Boolean Only return detections within the 2024 Solar Eclipse path

Example

Query
query detections(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $period: InputDuration,
  $speciesId: ID,
  $speciesIds: [ID!],
  $stationIds: [ID!],
  $stationTypes: [String!],
  $continents: [String!],
  $countries: [String!],
  $recordingModes: [String!],
  $scoreGt: Float,
  $scoreLt: Float,
  $scoreGte: Float,
  $scoreLte: Float,
  $confidenceGt: Float,
  $confidenceLt: Float,
  $confidenceGte: Float,
  $confidenceLte: Float,
  $probabilityGt: Float,
  $probabilityLt: Float,
  $probabilityGte: Float,
  $probabilityLte: Float,
  $timeOfDayGte: Int,
  $timeOfDayLte: Int,
  $ne: InputLocation,
  $sw: InputLocation,
  $vote: Int,
  $sortBy: String,
  $uniqueStations: Boolean,
  $validSoundscape: Boolean,
  $eclipse: Boolean
) {
  detections(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    period: $period,
    speciesId: $speciesId,
    speciesIds: $speciesIds,
    stationIds: $stationIds,
    stationTypes: $stationTypes,
    continents: $continents,
    countries: $countries,
    recordingModes: $recordingModes,
    scoreGt: $scoreGt,
    scoreLt: $scoreLt,
    scoreGte: $scoreGte,
    scoreLte: $scoreLte,
    confidenceGt: $confidenceGt,
    confidenceLt: $confidenceLt,
    confidenceGte: $confidenceGte,
    confidenceLte: $confidenceLte,
    probabilityGt: $probabilityGt,
    probabilityLt: $probabilityLt,
    probabilityGte: $probabilityGte,
    probabilityLte: $probabilityLte,
    timeOfDayGte: $timeOfDayGte,
    timeOfDayLte: $timeOfDayLte,
    ne: $ne,
    sw: $sw,
    vote: $vote,
    sortBy: $sortBy,
    uniqueStations: $uniqueStations,
    validSoundscape: $validSoundscape,
    eclipse: $eclipse
  ) {
    edges {
      ...DetectionEdgeFragment
    }
    nodes {
      ...DetectionFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    speciesCount
    totalCount
  }
}
Variables
{
  "after": "xyz789",
  "before": "xyz789",
  "first": 123,
  "last": 123,
  "period": InputDuration,
  "speciesId": "4",
  "speciesIds": ["4"],
  "stationIds": [4],
  "stationTypes": ["abc123"],
  "continents": ["abc123"],
  "countries": ["xyz789"],
  "recordingModes": ["abc123"],
  "scoreGt": 123.45,
  "scoreLt": 987.65,
  "scoreGte": 123.45,
  "scoreLte": 123.45,
  "confidenceGt": 123.45,
  "confidenceLt": 987.65,
  "confidenceGte": 987.65,
  "confidenceLte": 987.65,
  "probabilityGt": 987.65,
  "probabilityLt": 987.65,
  "probabilityGte": 987.65,
  "probabilityLte": 123.45,
  "timeOfDayGte": 987,
  "timeOfDayLte": 123,
  "ne": InputLocation,
  "sw": InputLocation,
  "vote": 987,
  "sortBy": "abc123",
  "uniqueStations": true,
  "validSoundscape": false,
  "eclipse": false
}
Response
{
  "data": {
    "detections": {
      "edges": [DetectionEdge],
      "nodes": [Detection],
      "pageInfo": PageInfo,
      "speciesCount": 987,
      "totalCount": 987
    }
  }
}

searchSpecies

Description

Search for species by common or scientific name

Response

Returns a SpeciesConnection

Arguments
Name Description
after - String Returns the elements in the list that come after the specified cursor.
before - String Returns the elements in the list that come before the specified cursor.
first - Int Returns the first n elements from the list.
last - Int Returns the last n elements from the list.
query - String Search query string

Example

Query
query searchSpecies(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $query: String
) {
  searchSpecies(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    query: $query
  ) {
    edges {
      ...SpeciesEdgeFragment
    }
    nodes {
      ...SpeciesFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "abc123",
  "before": "xyz789",
  "first": 987,
  "last": 987,
  "query": "xyz789"
}
Response
{
  "data": {
    "searchSpecies": {
      "edges": [SpeciesEdge],
      "nodes": [Species],
      "pageInfo": PageInfo,
      "totalCount": 123
    }
  }
}

species

Description

Fetch species by ID or exact scientific name

Response

Returns a Species

Arguments
Name Description
id - ID Species ID
scientificName - String Species scientific name

Example

Query
query species(
  $id: ID,
  $scientificName: String
) {
  species(
    id: $id,
    scientificName: $scientificName
  ) {
    alpha
    alpha6
    birdweatherUrl
    color
    commonName
    detectionCounts {
      ...BinnedSpeciesCountFragment
    }
    ebirdCode
    ebirdUrl
    id
    imageCredit
    imageLicense
    imageLicenseUrl
    imageUrl
    mlUrl
    predictionArea
    range
    scientificName
    stations {
      ...StationCountFragment
    }
    thumbnailUrl
    topDetections {
      ...DetectionConnectionFragment
    }
    translations {
      ...SpeciesTranslationFragment
    }
    wikipediaSummary
    wikipediaUrl
  }
}
Variables
{
  "id": "4",
  "scientificName": "xyz789"
}
Response
{
  "data": {
    "species": {
      "alpha": "abc123",
      "alpha6": "abc123",
      "birdweatherUrl": "abc123",
      "color": "xyz789",
      "commonName": "abc123",
      "detectionCounts": BinnedSpeciesCount,
      "ebirdCode": "abc123",
      "ebirdUrl": "xyz789",
      "id": "4",
      "imageCredit": "xyz789",
      "imageLicense": "abc123",
      "imageLicenseUrl": "xyz789",
      "imageUrl": "abc123",
      "mlUrl": "xyz789",
      "predictionArea": {},
      "range": {},
      "scientificName": "abc123",
      "stations": [StationCount],
      "thumbnailUrl": "xyz789",
      "topDetections": DetectionConnection,
      "translations": [SpeciesTranslation],
      "wikipediaSummary": "abc123",
      "wikipediaUrl": "xyz789"
    }
  }
}

station

Response

Returns a Station!

Arguments
Name Description
id - ID! Station ID

Example

Query
query station($id: ID!) {
  station(id: $id) {
    airPollution {
      ...AirPollutionReadingFragment
    }
    audioUrl
    continent
    coords {
      ...CoordinatesFragment
    }
    country
    counts {
      ...StationCountsFragment
    }
    detectionCounts {
      ...BinnedSpeciesCountFragment
    }
    detections {
      ...DetectionConnectionFragment
    }
    eclipse
    hasProbabilities
    id
    latestDetectionAt
    location
    locationPrivacy
    name
    notes
    portableDetections
    probabilities {
      ...ProbabilityFragment
    }
    sensors {
      ...SensorsFragment
    }
    source
    state
    timezone
    topSpecies {
      ...SpeciesCountFragment
    }
    type
    videoUrl
    weather {
      ...WeatherReadingFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "station": {
      "airPollution": AirPollutionReading,
      "audioUrl": "abc123",
      "continent": "abc123",
      "coords": Coordinates,
      "country": "abc123",
      "counts": StationCounts,
      "detectionCounts": [BinnedSpeciesCount],
      "detections": DetectionConnection,
      "eclipse": "abc123",
      "hasProbabilities": false,
      "id": "4",
      "latestDetectionAt": ISO8601DateTime,
      "location": "xyz789",
      "locationPrivacy": true,
      "name": "xyz789",
      "notes": "abc123",
      "portableDetections": false,
      "probabilities": [Probability],
      "sensors": Sensors,
      "source": "xyz789",
      "state": "abc123",
      "timezone": "xyz789",
      "topSpecies": [SpeciesCount],
      "type": "xyz789",
      "videoUrl": "abc123",
      "weather": WeatherReading
    }
  }
}

stations

Description

List all public stations.

Response

Returns a StationConnection!

Arguments
Name Description
after - String Returns the elements in the list that come after the specified cursor.
before - String Returns the elements in the list that come before the specified cursor.
first - Int Returns the first n elements from the list.
last - Int Returns the last n elements from the list.
query - String Optional search query
period - InputDuration Time period for query
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query stations(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $query: String,
  $period: InputDuration,
  $ne: InputLocation,
  $sw: InputLocation
) {
  stations(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    query: $query,
    period: $period,
    ne: $ne,
    sw: $sw
  ) {
    edges {
      ...StationEdgeFragment
    }
    nodes {
      ...StationFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "abc123",
  "before": "abc123",
  "first": 987,
  "last": 987,
  "query": "abc123",
  "period": InputDuration,
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "stations": {
      "edges": [StationEdge],
      "nodes": [Station],
      "pageInfo": PageInfo,
      "totalCount": 987
    }
  }
}

timeOfDayDetectionCounts

Response

Returns [BinnedSpeciesCount!]!

Arguments
Name Description
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
scoreGt - Float Minimum (>) score
scoreLt - Float Maximum (<) score
scoreGte - Float Minimum (>=) score
scoreLte - Float Maximum (<=) score
confidenceGt - Float Minimum (>) confidence
confidenceLt - Float Maximum (<) confidence
confidenceGte - Float Minimum (>=) confidence
confidenceLte - Float Maximum (<=) confidence
probabilityGt - Float Minimum (>) probability
probabilityLt - Float Maximum (<) probability
probabilityGte - Float Minimum (>=) probability
probabilityLte - Float Maximum (<=) probability
timeOfDayGte - Int Minimum (>=) time of day
timeOfDayLte - Int Maximum (<=) time of day
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query timeOfDayDetectionCounts(
  $period: InputDuration,
  $speciesId: ID,
  $scoreGt: Float,
  $scoreLt: Float,
  $scoreGte: Float,
  $scoreLte: Float,
  $confidenceGt: Float,
  $confidenceLt: Float,
  $confidenceGte: Float,
  $confidenceLte: Float,
  $probabilityGt: Float,
  $probabilityLt: Float,
  $probabilityGte: Float,
  $probabilityLte: Float,
  $timeOfDayGte: Int,
  $timeOfDayLte: Int,
  $ne: InputLocation,
  $sw: InputLocation
) {
  timeOfDayDetectionCounts(
    period: $period,
    speciesId: $speciesId,
    scoreGt: $scoreGt,
    scoreLt: $scoreLt,
    scoreGte: $scoreGte,
    scoreLte: $scoreLte,
    confidenceGt: $confidenceGt,
    confidenceLt: $confidenceLt,
    confidenceGte: $confidenceGte,
    confidenceLte: $confidenceLte,
    probabilityGt: $probabilityGt,
    probabilityLt: $probabilityLt,
    probabilityGte: $probabilityGte,
    probabilityLte: $probabilityLte,
    timeOfDayGte: $timeOfDayGte,
    timeOfDayLte: $timeOfDayLte,
    ne: $ne,
    sw: $sw
  ) {
    bins {
      ...SpeciesCountBinFragment
    }
    count
  }
}
Variables
{
  "period": InputDuration,
  "speciesId": "4",
  "scoreGt": 987.65,
  "scoreLt": 987.65,
  "scoreGte": 987.65,
  "scoreLte": 123.45,
  "confidenceGt": 123.45,
  "confidenceLt": 123.45,
  "confidenceGte": 987.65,
  "confidenceLte": 123.45,
  "probabilityGt": 987.65,
  "probabilityLt": 987.65,
  "probabilityGte": 987.65,
  "probabilityLte": 123.45,
  "timeOfDayGte": 987,
  "timeOfDayLte": 987,
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "timeOfDayDetectionCounts": [
      {"bins": [SpeciesCountBin], "count": 987}
    ]
  }
}

topBirdnetSpecies

Response

Returns [SpeciesCount!]!

Arguments
Name Description
limit - Int Maximum number of results to return
offset - Int Initial offset of first result
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query topBirdnetSpecies(
  $limit: Int,
  $offset: Int,
  $period: InputDuration,
  $speciesId: ID,
  $ne: InputLocation,
  $sw: InputLocation
) {
  topBirdnetSpecies(
    limit: $limit,
    offset: $offset,
    period: $period,
    speciesId: $speciesId,
    ne: $ne,
    sw: $sw
  ) {
    averageProbability
    breakdown {
      ...SpeciesCountBreakdownFragment
    }
    count
    species {
      ...SpeciesFragment
    }
    speciesId
  }
}
Variables
{
  "limit": 123,
  "offset": 987,
  "period": InputDuration,
  "speciesId": "4",
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "topBirdnetSpecies": [
      {
        "averageProbability": 987.65,
        "breakdown": SpeciesCountBreakdown,
        "count": 123,
        "species": Species,
        "speciesId": 4
      }
    ]
  }
}

topSpecies

Response

Returns [SpeciesCount!]!

Arguments
Name Description
limit - Int Maximum number of results to return
offset - Int Initial offset of first result
period - InputDuration Time period for query (defaults to last 24 hours)
speciesId - ID Species ID (optional)
stationTypes - [String!] Array of station types to filter on (optional)
ne - InputLocation North-east bounding box coordinates
sw - InputLocation South-west bounding box coordinates

Example

Query
query topSpecies(
  $limit: Int,
  $offset: Int,
  $period: InputDuration,
  $speciesId: ID,
  $stationTypes: [String!],
  $ne: InputLocation,
  $sw: InputLocation
) {
  topSpecies(
    limit: $limit,
    offset: $offset,
    period: $period,
    speciesId: $speciesId,
    stationTypes: $stationTypes,
    ne: $ne,
    sw: $sw
  ) {
    averageProbability
    breakdown {
      ...SpeciesCountBreakdownFragment
    }
    count
    species {
      ...SpeciesFragment
    }
    speciesId
  }
}
Variables
{
  "limit": 987,
  "offset": 987,
  "period": InputDuration,
  "speciesId": 4,
  "stationTypes": ["xyz789"],
  "ne": InputLocation,
  "sw": InputLocation
}
Response
{
  "data": {
    "topSpecies": [
      {
        "averageProbability": 987.65,
        "breakdown": SpeciesCountBreakdown,
        "count": 987,
        "species": Species,
        "speciesId": "4"
      }
    ]
  }
}

Subscriptions

newDetection

Response

Returns a NewDetectionPayload!

Arguments
Name Description
speciesIds - [ID!]
stationIds - [ID!]
stationTypes - [String!]
continents - [String!]
countries - [String!]
recordingModes - [String!]
scoreGt - Float Minimum (>) score
scoreLt - Float Maximum (<) score
scoreGte - Float Minimum (>=) score
scoreLte - Float Maximum (<=) score
confidenceGt - Float Minimum (>) confidence
confidenceLt - Float Maximum (<) confidence
confidenceGte - Float Minimum (>=) confidence
confidenceLte - Float Maximum (<=) confidence
probabilityGt - Float Minimum (>) probability
probabilityLt - Float Maximum (<) probability
probabilityGte - Float Minimum (>=) probability
probabilityLte - Float Maximum (<=) probability
timeOfDayGte - Int Minimum (>=) time of day
timeOfDayLte - Int Maximum (<=) time of day

Example

Query
subscription newDetection(
  $speciesIds: [ID!],
  $stationIds: [ID!],
  $stationTypes: [String!],
  $continents: [String!],
  $countries: [String!],
  $recordingModes: [String!],
  $scoreGt: Float,
  $scoreLt: Float,
  $scoreGte: Float,
  $scoreLte: Float,
  $confidenceGt: Float,
  $confidenceLt: Float,
  $confidenceGte: Float,
  $confidenceLte: Float,
  $probabilityGt: Float,
  $probabilityLt: Float,
  $probabilityGte: Float,
  $probabilityLte: Float,
  $timeOfDayGte: Int,
  $timeOfDayLte: Int
) {
  newDetection(
    speciesIds: $speciesIds,
    stationIds: $stationIds,
    stationTypes: $stationTypes,
    continents: $continents,
    countries: $countries,
    recordingModes: $recordingModes,
    scoreGt: $scoreGt,
    scoreLt: $scoreLt,
    scoreGte: $scoreGte,
    scoreLte: $scoreLte,
    confidenceGt: $confidenceGt,
    confidenceLt: $confidenceLt,
    confidenceGte: $confidenceGte,
    confidenceLte: $confidenceLte,
    probabilityGt: $probabilityGt,
    probabilityLt: $probabilityLt,
    probabilityGte: $probabilityGte,
    probabilityLte: $probabilityLte,
    timeOfDayGte: $timeOfDayGte,
    timeOfDayLte: $timeOfDayLte
  ) {
    detection {
      ...DetectionFragment
    }
  }
}
Variables
{
  "speciesIds": [4],
  "stationIds": [4],
  "stationTypes": ["xyz789"],
  "continents": ["abc123"],
  "countries": ["xyz789"],
  "recordingModes": ["xyz789"],
  "scoreGt": 123.45,
  "scoreLt": 987.65,
  "scoreGte": 123.45,
  "scoreLte": 987.65,
  "confidenceGt": 987.65,
  "confidenceLt": 123.45,
  "confidenceGte": 987.65,
  "confidenceLte": 123.45,
  "probabilityGt": 987.65,
  "probabilityLt": 123.45,
  "probabilityGte": 123.45,
  "probabilityLte": 987.65,
  "timeOfDayGte": 123,
  "timeOfDayLte": 123
}
Response
{"data": {"newDetection": {"detection": Detection}}}

Types

AccelReading

Fields
Field Name Description
timestamp - ISO8601DateTime Reading timestamp
x - Float
y - Float
z - Float
Example
{
  "timestamp": ISO8601DateTime,
  "x": 987.65,
  "y": 123.45,
  "z": 987.65
}

AccelReadingConnection

Description

The connection type for AccelReading.

Fields
Field Name Description
edges - [AccelReadingEdge] A list of edges.
nodes - [AccelReading] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [AccelReadingEdge],
  "nodes": [AccelReading],
  "pageInfo": PageInfo,
  "totalCount": 987
}

AccelReadingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - AccelReading The item at the end of the edge.
Example
{
  "cursor": "xyz789",
  "node": AccelReading
}

AirPollutionReading

Description

Air pollution reading provided by OpenWeather

Fields
Field Name Description
aqi - Int! Air Quality Index. Possible values: 1, 2, 3, 4, 5. Where 1 = Good, 2 = Fair, 3 = Moderate, 4 = Poor, 5 = Very Poor.
co - Float! Сoncentration of CO (Carbon monoxide), μg/m3
coords - Coordinates! Geographic coordinates of the reading
nh3 - Float! Сoncentration of NH3 (Ammonia), μg/m3
no - Float! Сoncentration of NO (Nitrogen monoxide), μg/m3
no2 - Float! Сoncentration of NO2 (Nitrogen dioxide), μg/m3
o3 - Float! Сoncentration of O3 (Ozone), μg/m3
pm10 - Float! Сoncentration of PM10 (Coarse particulate matter), μg/m3
pm2_5 - Float! Сoncentration of PM2.5 (Fine particles matter), μg/m3
so2 - Float! Сoncentration of SO2 (Sulphur dioxide), μg/m3
timestamp - ISO8601DateTime Reading timestamp
Example
{
  "aqi": 123,
  "co": 123.45,
  "coords": Coordinates,
  "nh3": 123.45,
  "no": 123.45,
  "no2": 987.65,
  "o3": 123.45,
  "pm10": 987.65,
  "pm2_5": 987.65,
  "so2": 987.65,
  "timestamp": ISO8601DateTime
}

BigInt

Description

Represents non-fractional signed whole numeric values. Since the value may exceed the size of a 32-bit integer, it's encoded as a string.

Example
{}

BinnedSpeciesCount

Fields
Field Name Description
bins - [SpeciesCountBin!]!
count - Int!
Example
{"bins": [SpeciesCountBin], "count": 123}

BinnedSpeciesSummaryCount

Fields
Field Name Description
counts - [SummarySpeciesCount!]!
date - ISO8601Date!
dayOfYear - Int!
total - Int!
Example
{
  "counts": [SummarySpeciesCount],
  "date": ISO8601Date,
  "dayOfYear": 987,
  "total": 123
}

Boolean

Description

Represents true or false values.

Coordinates

Fields
Field Name Description
lat - Float! Latitude
lon - Float! Longitude
Example
{"lat": 987.65, "lon": 987.65}

Count

Fields
Field Name Description
count - Int!
type - String!
Example
{"count": 987, "type": "xyz789"}

Counts

Fields
Field Name Description
birdnet - Int
breakdown - CountsBreakdown!
detections - Int!
species - Int!
stations - Int!
Example
{
  "birdnet": 123,
  "breakdown": CountsBreakdown,
  "detections": 123,
  "species": 123,
  "stations": 987
}

CountsBreakdown

Fields
Field Name Description
stations - [Count!]!
Example
{"stations": [Count]}

Detection

Description

An audio detection of a species by a BirdWeather station.

Fields
Field Name Description
certainty - String! Calculated certainty
confidence - Float! Reported confidence
coords - Coordinates! Geographic coordinates of the detection
eclipse - String The detection's vicinity to the 2024 Solar Eclipse path of totality (total, partial or null)
favoriteUrl - String! URL for favoriting detections
flagUrl - String! URL for flagging detections
id - ID! The unique identifier for the resource
probability - Float Reported probability
score - Float! Calculated score
soundscape - Soundscape Associated soundscape (optional)
species - Species! Detection species
speciesId - ID! Species ID
station - Station Station that recorded this detection
timestamp - ISO8601DateTime Detection timestamp (in station time zone)
voteUrl - String! URL for up/downvote detections
Example
{
  "certainty": "abc123",
  "confidence": 123.45,
  "coords": Coordinates,
  "eclipse": "xyz789",
  "favoriteUrl": "xyz789",
  "flagUrl": "abc123",
  "id": "4",
  "probability": 987.65,
  "score": 987.65,
  "soundscape": Soundscape,
  "species": Species,
  "speciesId": "4",
  "station": Station,
  "timestamp": ISO8601DateTime,
  "voteUrl": "xyz789"
}

DetectionConnection

Description

The connection type for Detection.

Fields
Field Name Description
edges - [DetectionEdge] A list of edges.
nodes - [Detection] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
speciesCount - Int!
totalCount - Int!
Example
{
  "edges": [DetectionEdge],
  "nodes": [Detection],
  "pageInfo": PageInfo,
  "speciesCount": 987,
  "totalCount": 987
}

DetectionEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - Detection The item at the end of the edge.
Example
{
  "cursor": "abc123",
  "node": Detection
}

EnvironmentReading

Fields
Field Name Description
aqi - Float
barometricPressure - Float
eco2 - Float
humidity - Float
soundPressureLevel - Float
temperature - Float
timestamp - ISO8601DateTime Reading timestamp
voc - Float
Example
{
  "aqi": 987.65,
  "barometricPressure": 987.65,
  "eco2": 123.45,
  "humidity": 123.45,
  "soundPressureLevel": 987.65,
  "temperature": 123.45,
  "timestamp": ISO8601DateTime,
  "voc": 987.65
}

EnvironmentReadingConnection

Description

The connection type for EnvironmentReading.

Fields
Field Name Description
edges - [EnvironmentReadingEdge] A list of edges.
nodes - [EnvironmentReading] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [EnvironmentReadingEdge],
  "nodes": [EnvironmentReading],
  "pageInfo": PageInfo,
  "totalCount": 123
}

EnvironmentReadingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - EnvironmentReading The item at the end of the edge.
Example
{
  "cursor": "xyz789",
  "node": EnvironmentReading
}

Float

Description

Represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

ID

Description

Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "VXNlci0xMA==") or integer (such as 4) input value will be accepted as an ID.

Example
4

ISO8601Date

Description

An ISO 8601-encoded date

Example
ISO8601Date

ISO8601DateTime

Description

An ISO 8601-encoded datetime

Example
ISO8601DateTime

InputDuration

Description

A time period (e.g. last 24 hours) or explicit date duration.

Fields
Input Field Description
count - Int Number of units of time
unit - String Unit of time (hour/day/week/month/year)
from - ISO8601Date From date
to - ISO8601Date To date
Example
{
  "count": 987,
  "unit": "abc123",
  "from": ISO8601Date,
  "to": ISO8601Date
}

InputLocation

Description

A geographic location (latitude / longitude pair).

Fields
Input Field Description
lat - Float! Latitude
lon - Float! Longitude
Example
{"lat": 123.45, "lon": 123.45}

Int

Description

Represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

JSON

Description

Represents untyped JSON

Example
{}

LightReading

Fields
Field Name Description
clear - Int
f1 - Int
f2 - Int
f3 - Int
f4 - Int
f5 - Int
f6 - Int
f7 - Int
f8 - Int
nir - Int
timestamp - ISO8601DateTime Reading timestamp
Example
{
  "clear": 987,
  "f1": 987,
  "f2": 987,
  "f3": 987,
  "f4": 987,
  "f5": 123,
  "f6": 987,
  "f7": 123,
  "f8": 123,
  "nir": 987,
  "timestamp": ISO8601DateTime
}

LightReadingConnection

Description

The connection type for LightReading.

Fields
Field Name Description
edges - [LightReadingEdge] A list of edges.
nodes - [LightReading] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [LightReadingEdge],
  "nodes": [LightReading],
  "pageInfo": PageInfo,
  "totalCount": 987
}

LightReadingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - LightReading The item at the end of the edge.
Example
{
  "cursor": "abc123",
  "node": LightReading
}

LocationReading

Fields
Field Name Description
altitude - Float
lat - Float
lon - Float
satellites - Int
timestamp - ISO8601DateTime Reading timestamp
Example
{
  "altitude": 123.45,
  "lat": 123.45,
  "lon": 987.65,
  "satellites": 123,
  "timestamp": ISO8601DateTime
}

LocationReadingConnection

Description

The connection type for LocationReading.

Fields
Field Name Description
edges - [LocationReadingEdge] A list of edges.
nodes - [LocationReading] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [LocationReadingEdge],
  "nodes": [LocationReading],
  "pageInfo": PageInfo,
  "totalCount": 987
}

LocationReadingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - LocationReading The item at the end of the edge.
Example
{
  "cursor": "abc123",
  "node": LocationReading
}

MagReading

Fields
Field Name Description
timestamp - ISO8601DateTime Reading timestamp
x - Float
y - Float
z - Float
Example
{
  "timestamp": ISO8601DateTime,
  "x": 123.45,
  "y": 987.65,
  "z": 123.45
}

MagReadingConnection

Description

The connection type for MagReading.

Fields
Field Name Description
edges - [MagReadingEdge] A list of edges.
nodes - [MagReading] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [MagReadingEdge],
  "nodes": [MagReading],
  "pageInfo": PageInfo,
  "totalCount": 123
}

MagReadingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - MagReading The item at the end of the edge.
Example
{
  "cursor": "xyz789",
  "node": MagReading
}

NewDetectionPayload

Description

Autogenerated return type of NewDetection.

Fields
Field Name Description
detection - Detection!
Example
{"detection": Detection}

PageInfo

Description

Information about pagination in a connection.

Fields
Field Name Description
endCursor - String When paginating forwards, the cursor to continue.
hasNextPage - Boolean! When paginating forwards, are there more items?
hasPreviousPage - Boolean! When paginating backwards, are there more items?
startCursor - String When paginating backwards, the cursor to continue.
Example
{
  "endCursor": "abc123",
  "hasNextPage": false,
  "hasPreviousPage": false,
  "startCursor": "xyz789"
}

Probability

Fields
Field Name Description
species - Species! Species for this probability range
speciesId - ID! Species ID
weeks - [Float!]! Probability for species for each week of year (0-48)
Example
{"species": Species, "speciesId": 4, "weeks": [123.45]}

Record

Fields
Field Name Description
id - ID! The unique identifier for the resource
Possible Types
Record Types

Detection

Sighting

Soundscape

Species

Station

Example
{"id": "4"}

Sensors

Description

Container type for PUC sensor readings

Fields
Field Name Description
accel - AccelReading Latest accelerometer sensor data reading
accelHistory - AccelReadingConnection! Accelerometer sensor data reading history
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to last 24 hours)

environment - EnvironmentReading Latest environmental sensor data reading
environmentHistory - EnvironmentReadingConnection! Environmental sensor data reading history
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to last 24 hours)

light - LightReading Latest light sensor data reading
lightHistory - LightReadingConnection! Light sensor data reading history
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to last 24 hours)

location - LocationReading Latest location sensor data reading
locationHistory - LocationReadingConnection! Location sensor data reading history
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to last 24 hours)

mag - MagReading Latest magnetometer sensor data reading
magHistory - MagReadingConnection! Magnetometer sensor data reading history
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to last 24 hours)

system - SystemReading Latest system info reading
systemHistory - SystemReadingConnection! System info reading history
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to last 24 hours)

Example
{
  "accel": AccelReading,
  "accelHistory": AccelReadingConnection,
  "environment": EnvironmentReading,
  "environmentHistory": EnvironmentReadingConnection,
  "light": LightReading,
  "lightHistory": LightReadingConnection,
  "location": LocationReading,
  "locationHistory": LocationReadingConnection,
  "mag": MagReading,
  "magHistory": MagReadingConnection,
  "system": SystemReading,
  "systemHistory": SystemReadingConnection
}

Sighting

Description

A BirdNET or eBird sighting.

Fields
Field Name Description
coords - Coordinates!
id - ID! The unique identifier for the resource
score - Float!
species - Species!
speciesId - ID!
timestamp - ISO8601DateTime
Example
{
  "coords": Coordinates,
  "id": "4",
  "score": 123.45,
  "species": Species,
  "speciesId": 4,
  "timestamp": ISO8601DateTime
}

SightingConnection

Description

The connection type for Sighting.

Fields
Field Name Description
edges - [SightingEdge] A list of edges.
nodes - [Sighting] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [SightingEdge],
  "nodes": [Sighting],
  "pageInfo": PageInfo,
  "totalCount": 987
}

SightingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - Sighting The item at the end of the edge.
Example
{
  "cursor": "abc123",
  "node": Sighting
}

Soundscape

Description

A soundscape file uploaded by a BirdWeather station.

Fields
Field Name Description
downloadFilename - String! Suggested filename of audio file
duration - Int! Duration (in seconds) of the audio file
endTime - Float! End time (in seconds) of the detection
filesize - Int! Size (in bytes) of the audio file
id - ID! The unique identifier for the resource
mode - String! Recording mode (live, recorded or birdnetpi)
startTime - Float! Starting time (in seconds) of the detection
station - Station Station that recorded this soundscape
timestamp - ISO8601DateTime! Timestamp of the soundscape
url - String! URL for the audio file
Example
{
  "downloadFilename": "xyz789",
  "duration": 123,
  "endTime": 123.45,
  "filesize": 987,
  "id": "4",
  "mode": "abc123",
  "startTime": 987.65,
  "station": Station,
  "timestamp": ISO8601DateTime,
  "url": "abc123"
}

Species

Fields
Field Name Description
alpha - String 4-letter alpha code
alpha6 - String 6-letter alpha code
birdweatherUrl - String URL to BirdWeather species page
color - String! Assigned color
commonName - String! Common name
detectionCounts - BinnedSpeciesCount!
Arguments
period - InputDuration

Time period for query (defaults to last 24 hours)

group - Int

Timestamp grouping (in minutes)

ne - InputLocation

North-east bounding box coordinates

sw - InputLocation

South-west bounding box coordinates

ebirdCode - String eBird alpha code
ebirdUrl - String URL to eBird page
id - ID! The unique identifier for the resource
imageCredit - String Credited author of image
imageLicense - String Name of image license
imageLicenseUrl - String URL to image license page
imageUrl - String 400x400 image URL
mlUrl - String URL to Macaulay Library page
predictionArea - JSON
range - JSON
scientificName - String Scientific name
stations - [StationCount!]! List stations with species detection
Arguments
period - InputDuration

Time period for query (defaults to last 24 hours)

ne - InputLocation

North-east bounding box coordinates

sw - InputLocation

South-west bounding box coordinates

stationTypes - [String!]

Array of station types to filter on (optional)

thumbnailUrl - String 100x100 thumbnail image URL
topDetections - DetectionConnection! List top detection for each station the species was detected at
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

period - InputDuration

Time period for query (defaults to all time)

translations - [SpeciesTranslation!]!
Arguments
locale - String
wikipediaSummary - String Wikipedia extract
wikipediaUrl - String URL to Wikipedia page
Example
{
  "alpha": "abc123",
  "alpha6": "xyz789",
  "birdweatherUrl": "abc123",
  "color": "abc123",
  "commonName": "xyz789",
  "detectionCounts": BinnedSpeciesCount,
  "ebirdCode": "abc123",
  "ebirdUrl": "xyz789",
  "id": "4",
  "imageCredit": "xyz789",
  "imageLicense": "abc123",
  "imageLicenseUrl": "abc123",
  "imageUrl": "abc123",
  "mlUrl": "xyz789",
  "predictionArea": {},
  "range": {},
  "scientificName": "abc123",
  "stations": [StationCount],
  "thumbnailUrl": "abc123",
  "topDetections": DetectionConnection,
  "translations": [SpeciesTranslation],
  "wikipediaSummary": "abc123",
  "wikipediaUrl": "xyz789"
}

SpeciesConnection

Description

The connection type for Species.

Fields
Field Name Description
edges - [SpeciesEdge] A list of edges.
nodes - [Species] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [SpeciesEdge],
  "nodes": [Species],
  "pageInfo": PageInfo,
  "totalCount": 123
}

SpeciesCount

Fields
Field Name Description
averageProbability - Float
breakdown - SpeciesCountBreakdown
count - Int!
species - Species
speciesId - ID!
Example
{
  "averageProbability": 123.45,
  "breakdown": SpeciesCountBreakdown,
  "count": 987,
  "species": Species,
  "speciesId": 4
}

SpeciesCountBin

Fields
Field Name Description
count - Int!
key - SpeciesCountKey!
Example
{"count": 123, "key": SpeciesCountKey}

SpeciesCountBreakdown

Fields
Field Name Description
almostCertain - Int! Count of almost certain detections
uncertain - Int! Count of uncertain detections
unlikely - Int! Count of unlikely detections
veryLikely - Int! Count of very likely detections
Example
{"almostCertain": 123, "uncertain": 987, "unlikely": 987, "veryLikely": 987}

SpeciesCountKey

Description

A float representing an hour of the day or an ISO8601 timestamp

Example
SpeciesCountKey

SpeciesEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - Species The item at the end of the edge.
Example
{
  "cursor": "xyz789",
  "node": Species
}

SpeciesTranslation

Fields
Field Name Description
commonName - String
locale - String!
wikipediaSummary - String
wikipediaUrl - String
Example
{
  "commonName": "abc123",
  "locale": "abc123",
  "wikipediaSummary": "xyz789",
  "wikipediaUrl": "xyz789"
}

Station

Description

A BirdWeather station (either real or virtual).

Fields
Field Name Description
airPollution - AirPollutionReading Air pollution data from OpenWeather
audioUrl - String Station audio feed URL
continent - String Continent
coords - Coordinates Location coordinates
country - String Country name
counts - StationCounts!
Arguments
period - InputDuration

Time period for query (defaults to last 24 hours)

detectionCounts - [BinnedSpeciesCount!]!
Arguments
period - InputDuration

Time period for query (defaults to last 24 hours)

speciesId - ID

Species ID (optional)

scoreGt - Float

Minimum (>) score

scoreLt - Float

Maximum (<) score

scoreGte - Float

Minimum (>=) score

scoreLte - Float

Maximum (<=) score

confidenceGt - Float

Minimum (>) confidence

confidenceLt - Float

Maximum (<) confidence

confidenceGte - Float

Minimum (>=) confidence

confidenceLte - Float

Maximum (<=) confidence

probabilityGt - Float

Minimum (>) probability

probabilityLt - Float

Maximum (<) probability

probabilityGte - Float

Minimum (>=) probability

probabilityLte - Float

Maximum (<=) probability

timeOfDayGte - Int

Minimum (>=) time of day

timeOfDayLte - Int

Maximum (<=) time of day

ne - InputLocation

North-east bounding box coordinates

sw - InputLocation

South-west bounding box coordinates

detections - DetectionConnection!
Arguments
after - String

Returns the elements in the list that come after the specified cursor.

before - String

Returns the elements in the list that come before the specified cursor.

first - Int

Returns the first n elements from the list.

last - Int

Returns the last n elements from the list.

eclipse - String The station's vicinity to the 2024 Solar Eclipse path of totality (total, partial or null)
hasProbabilities - Boolean!
id - ID! The unique identifier for the resource
latestDetectionAt - ISO8601DateTime Timestamp of latest detection
location - String Human-readable location
locationPrivacy - Boolean! Location privacy enabled
name - String! Station name
notes - String Station notes (optional)
portableDetections - Boolean! Station supports detections outside of the station location
probabilities - [Probability!]!
sensors - Sensors
source - String Stream source URL (use audioUrl/videoUrl instead)
state - String State/province/region
timezone - String! Timezone string
topSpecies - [SpeciesCount!]!
Arguments
limit - Int

Maximum number of results to return

offset - Int

Initial offset of first result

period - InputDuration

Time period for query (defaults to last 24 hours)

speciesId - ID

Species ID (optional)

type - String! Station type (birdnetpi, puc, mobile, stream_youtube, stream_audio)
videoUrl - String Station video feed URL
weather - WeatherReading Weather data from OpenWeather
Example
{
  "airPollution": AirPollutionReading,
  "audioUrl": "xyz789",
  "continent": "abc123",
  "coords": Coordinates,
  "country": "xyz789",
  "counts": StationCounts,
  "detectionCounts": [BinnedSpeciesCount],
  "detections": DetectionConnection,
  "eclipse": "abc123",
  "hasProbabilities": true,
  "id": 4,
  "latestDetectionAt": ISO8601DateTime,
  "location": "xyz789",
  "locationPrivacy": false,
  "name": "xyz789",
  "notes": "abc123",
  "portableDetections": true,
  "probabilities": [Probability],
  "sensors": Sensors,
  "source": "abc123",
  "state": "abc123",
  "timezone": "abc123",
  "topSpecies": [SpeciesCount],
  "type": "abc123",
  "videoUrl": "abc123",
  "weather": WeatherReading
}

StationConnection

Description

The connection type for Station.

Fields
Field Name Description
edges - [StationEdge] A list of edges.
nodes - [Station] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [StationEdge],
  "nodes": [Station],
  "pageInfo": PageInfo,
  "totalCount": 123
}

StationCount

Fields
Field Name Description
count - Int!
station - Station!
Example
{"count": 123, "station": Station}

StationCounts

Fields
Field Name Description
detections - Int!
species - Int!
Example
{"detections": 987, "species": 123}

StationEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - Station The item at the end of the edge.
Example
{
  "cursor": "abc123",
  "node": Station
}

String

Description

Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

SummarySpeciesCount

Fields
Field Name Description
count - Int!
speciesId - ID!
Example
{"count": 123, "speciesId": "4"}

SystemReading

Fields
Field Name Description
batteryVoltage - Float
firmware - String
powerSource - String
sdAvailable - BigInt
sdCapacity - BigInt
timestamp - ISO8601DateTime Reading timestamp
uploadingCompleted - Int
uploadingTotal - Int
wifiRssi - Int
Example
{
  "batteryVoltage": 987.65,
  "firmware": "abc123",
  "powerSource": "abc123",
  "sdAvailable": {},
  "sdCapacity": {},
  "timestamp": ISO8601DateTime,
  "uploadingCompleted": 123,
  "uploadingTotal": 123,
  "wifiRssi": 987
}

SystemReadingConnection

Description

The connection type for SystemReading.

Fields
Field Name Description
edges - [SystemReadingEdge] A list of edges.
nodes - [SystemReading] A list of nodes.
pageInfo - PageInfo! Information to aid in pagination.
totalCount - Int!
Example
{
  "edges": [SystemReadingEdge],
  "nodes": [SystemReading],
  "pageInfo": PageInfo,
  "totalCount": 123
}

SystemReadingEdge

Description

An edge in a connection.

Fields
Field Name Description
cursor - String! A cursor for use in pagination.
node - SystemReading The item at the end of the edge.
Example
{
  "cursor": "abc123",
  "node": SystemReading
}

WeatherReading

Description

Weather reading provided by OpenWeather

Fields
Field Name Description
cloudiness - Int! Cloudiness, %
coords - Coordinates! Geographic coordinates of the reading
description - String! Group of weather parameters (Rain, Snow, Extreme etc.)
feelsLike - Float! Temperature, Kelvin. This temperature parameter accounts for the human perception of weather
groundLevel - Int Atmospheric pressure on the ground level, hPa
humidity - Int! Humidity, %
pressure - Int! Atmospheric pressure (on the sea level, if there is no sea_level or grnd_level data), hPa
rain1h - Float Rain volume for the last 1 hour, mm
rain3h - Float Rain volume for the last 3 hours, mm
seaLevel - Int Atmospheric pressure on the sea level, hPa
snow1h - Float Snow volume for the last 1 hour, mm
snow3h - Float Snow volume for the last 3 hours, mm
sunrise - ISO8601DateTime! Sunrise time
sunset - ISO8601DateTime! Sunset time
temp - Float! Temperature, Kelvin
tempMax - Float! Maximum temperature at the moment, Kelvin. This is maximal currently observed temperature (within large megalopolises and urban areas)
tempMin - Float! Minimum temperature at the moment, Kelvin. This is minimal currently observed temperature (within large megalopolises and urban areas)
timestamp - ISO8601DateTime Reading timestamp
visibility - Int! Visibility, meters
windDir - Int! Wind direction, degrees (meteorological)
windGust - Float Wind gust, meter/sec
windSpeed - Float! Wind speed, meter/sec
Example
{
  "cloudiness": 123,
  "coords": Coordinates,
  "description": "abc123",
  "feelsLike": 987.65,
  "groundLevel": 987,
  "humidity": 123,
  "pressure": 987,
  "rain1h": 123.45,
  "rain3h": 123.45,
  "seaLevel": 123,
  "snow1h": 123.45,
  "snow3h": 987.65,
  "sunrise": ISO8601DateTime,
  "sunset": ISO8601DateTime,
  "temp": 123.45,
  "tempMax": 987.65,
  "tempMin": 987.65,
  "timestamp": ISO8601DateTime,
  "visibility": 123,
  "windDir": 123,
  "windGust": 987.65,
  "windSpeed": 123.45
}