Free forever·no account, no tracking, no third-party requests ·open data, free API
showstack / learn / software
Stage 5 of 7 · What you build with2 of 4 in this stage6 min read

How software talks to software

"Does it have an API?" is the most common integration question on a show, and the words in it get used loosely enough that the answer often means nothing. Three terms, kept apart.

The three words

Protocol, API, SDK

A protocol is what goes over the wire. It is an agreement about bytes: what a message looks like, in what order, on which port. OSC, sACN, MIDI and HTTP are protocols. Two devices that speak the same protocol can exchange data without either knowing anything else about the other.

An API — application programming interface — is the published contract for talking to a specific piece of software. It says which requests you are allowed to make, what each one does, and what comes back. An API is usually carried over a protocol: QLab's API is carried over OSC; showstack's API is carried over HTTP.

An SDK — software development kit — is a library you install to save yourself writing the API calls by hand. It speaks the API for you and gives you functions in your own language instead. An SDK is a convenience; the API is the thing that actually defines what is possible.

rule
If a vendor says "we have an SDK", ask what the API underneath it does — that is what sets the limits. If they say "we support OSC", ask which messages, because a protocol without a documented message set is not an integration.

The other question to ask

Does it poll, or does it push?

Once an API exists, the next thing that decides whether an integration feels good is how you find out something changed.

Polling means asking repeatedly: "has anything changed? has anything changed?" It is simple, works through almost any network, and is always either too slow or too wasteful — the interval is a compromise between latency and load.

Push means subscribing once and being told when something happens, over a persistent connection like a WebSocket, or by the device simply broadcasting state the way sACN does. Lower latency, far less traffic, and it needs a connection that stays open.

For anything a cue depends on, you want push. Polling a media server every 500 ms to find out whether a clip ended is how a cue lands late.

What polling actually costs

rule
Poll for state you can afford to be stale about. Push for anything a cue waits on.

A worked example

What showstack's own API looks like

This site is a useful example because it is deliberately as simple as an API gets. There is no key, no login, no rate limit and no SDK required: every collection is one file of JSON at a fixed URL, served with permissive CORS so a browser can fetch it directly.

That means any tool — a console macro, a spreadsheet, a media server script, another website — can ask for the data and get it. It also means the entire "API" fits in one line of documentation, which is the point.

GET /api/v1/protocols.json — every protocol, with ports and gotchas
GET /api/v1/standards.json — every standard, with access URLs
GET /api/v1/gaps.json — everything we know we are missing
GET /api/v1/index.json — counts, and the list of endpoints
Use it.

The full dataset is at /api/v1/index.json under CC BY 4.0 — no key, no rate limit. If you build something on it, say so on the repo and it goes on the list.

You can now answer
  • What is an API?
  • What is an SDK?
  • Poll or push?
Kept in this browser on this device. Nothing is sent anywhere.

Where to go next

These pages are a chain rather than a library — the next one along usually answers the question this one raised.

Everything on this page, in the index

Each of these has its own entry with sources, ports, gotchas and an open gap where a field is missing.