Crossling
On this page

Developers

Connect your tools to Crossling

Read trials, plots, lines and traits and send scores back over BrAPI v2, or send readings from your own weather station. How to sign in, and the limits.

Updated

Crossling has two public ways in for other software. BrAPI v2 is for field apps like Field Book and GridScore, and for your own scripts: read your trials, plots, lines and traits, and send scores back. The weather station push is for a logger, or a small script beside it, sending readings to one of your program's weather stations.

Both are plain HTTPS with JSON (the push also takes CSV), so any language that can make a web request can use them.

Quick start#

Crossling answers BrAPI at https://crossling.app/brapi/v2/. The server's own description is public, so you can try it now, with no key:

Shell
curl https://crossling.app/brapi/v2/serverinfo
Response (shortened)
{
  "@context": ["https://brapi.org/jsonld/context/metadata.jsonld"],
  "metadata": {
    "datafiles": [],
    "pagination": {"currentPage": 0, "pageSize": 1, "totalCount": 1, "totalPages": 1},
    "status": []
  },
  "result": {
    "serverName": "Crossling",
    "calls": [
      {"service": "serverinfo", "methods": ["GET"], "versions": ["2.0", "2.1"],
       "contentTypes": ["application/json"], "dataTypes": ["application/json"]},
      {"service": "studies", "methods": ["GET"], "versions": ["2.0", "2.1"],
       "contentTypes": ["application/json"], "dataTypes": ["application/json"]}
    ]
  }
}

Everything else needs an access key:

  1. Sign in to Crossling and open More › Field Book, the Connect page. No account yet? Open the demo and do the same: its keys work for a day.
  2. Under Keys, name the key after what will use it (say, My laptop) and tap Make a key. Copy it straight away: it's shown only once.
  3. Ask for your programs, with the key in the Authorization header:
Shell
export CROSSLING_KEY='crl_EXAMPLE_00000000000000000000000000000000000'
curl -H "Authorization: Bearer $CROSSLING_KEY" https://crossling.app/brapi/v2/programs

The BrAPI reference has every call, with examples in curl, Python and R. To send weather readings, start with Weather station push.

Signing in#

Way inCredentialWhere it comes from
BrAPIAn access key, crl_…The Connect page, or Field Book's browser sign-in
Weather station pushA station token, cwx_…The station's page in the app: Map, the research station, then Weather stations
  • Send it in the Authorization header, as Bearer crl_… or Bearer cwx_…. Never put it in the address: addresses end up in logs. The push refuses a token in the address.
  • Crossling keeps only a hash of each key and token, so each is shown once, when it's made. Lost one? Make a new one, and revoke the old one.
  • An access key sees exactly what its person sees in Crossling: their programs' trials, lines and traits, nothing else. It works for 30, 90 or 365 days, and it can be revoked on the Connect page at any time.
  • A station token can only add readings to its own station. It can't read anything.
  • Treat both like passwords. Keep them out of code you share, and out of shared documents.

Limits at a glance#

WhatLimit
BrAPI calls10,000 an hour per person
BrAPI page size1,000 rows by default, 5,000 at most
Access keys20 working keys per person; 30 made an hour
Browser sign-in60 code swaps an hour per address
Weather pushes360 an hour per station token, 1,200 an hour per address
One push1 MB and 10,000 readings

Over a rate limit, the answer is 429 Too Many Requests with a Retry-After header: the number of seconds to wait. The BrAPI limits and the push limits have the details.

The web app's own API#

The Crossling web app talks to its server over /api/v1/. That's the app's private API. It isn't documented, it changes whenever the app does, and its schema pages are switched off on crossling.app. Please don't build on it.

For your own scripts, use BrAPI: it's a published standard, and the calls listed in /brapi/v2/serverinfo are the ones Crossling answers. The one address under /api/v1/ that's meant for other software is the weather station push.

When something goes wrong#

The answer usually says why, in words. A BrAPI error is a short string with the reason, like "ERROR - 2026-11-08T16:04:16Z - Missing or expired authorization token", and scores that weren't saved are listed with their reasons. A push lists the rows it left out and why. The same reasons show in the app: on the Connect page beside the key that sent the scores, and on the station's page for its last push.