Skip to content
antibacterial .ai

Screening inside your own pipeline

Antibacterial screening API: MIC prediction REST API for your own pipeline

POST a compound and a strain panel, get back a per-strain matrix as JSON: predicted MIC band, S/I/R call, mechanism and confidence. The same read-out the workspace shows, inside your own design loop.

Try the read-out the API returns

of 3 left

Strain panel

No account needed. 3 screens per session.

Sample output Ciprofloxacin Fluoroquinolone
Worked example, replaced when you run
Strain MIC (µg/mL) Call Resistance risk Conf.
S. aureus (MRSA) 0.5->32 R Resistant target mutation, grlA and gyrA Fluoroquinolone resistance is widespread in methicillin resistant lineages.
E. coli <=0.015-0.06 S Susceptible efflux, AcrAB-TolC in resistant isolates Potent against wild type; qnr carriage and gyrA changes shift the band sharply.
K. pneumoniae (CRE) 0.5->64 R Resistant gyrA mutation with plasmid qnr Carbapenemase producing isolates almost always carry quinolone resistance too.
A. baumannii 8->64 R Resistant efflux, AdeABC Constitutive efflux plus target changes leave little room at achievable exposure.
P. aeruginosa 0.25-2 I Intermediate efflux, MexAB-OprM Borderline: active on many isolates, lost quickly once efflux is derepressed.
E. faecium (VRE) 4->32 R Resistant target mutation, parC Enterococci are intrinsically poor fluoroquinolone targets.

Why

Ciprofloxacin is a well characterised fluoroquinolone, so the Gram-negative bands are strongly supported by published activity data. The deciding factor across this panel is not target affinity but exposure: efflux in P. aeruginosa and A. baumannii, and acquired target mutation everywhere resistance is already common. Against a modern ESKAPE panel it reads as a Gram-negative agent with two reliable losses.

Closest published analogs

  • Levofloxacin Broadly similar Gram-negative bands, better Gram-positive coverage
  • Delafloxacin Retains activity against many ciprofloxacin resistant staphylococci
Strain MIC (µg/mL) Call Resistance risk Conf.

Why

Closest published analogs

Want the rest of your series? Batch runs are on the paid tiers. screen left in this session. This session is used up.

Computational prediction from published literature. Research use only, not a lab measurement and not clinical guidance.

The short answer

What the antibacterial screening API does

The Antibacterial screening API is a REST endpoint that predicts antibacterial activity for a compound you send it. You POST a structure, an InChI or a compound name together with a strain panel, and you get back one row per organism: a predicted MIC band in µg/mL, an S, I or R call, the resistance mechanism the model expects to limit the compound, the closest characterised analogs, and how much published support the row actually has.

It is the same engine and the same matrix the workspace shows in the browser, addressed by machine instead of by a chemist. That matters because the read-out is usually not the end of anything: it is a column in a registry, a filter in a design loop, or a gate in a nightly job that ranks last night's enumerated analogs before anyone opens a laptop. Authentication is a bearer key you create and revoke yourself, calls draw on the same monthly allowance as the workspace, and there is no per call surcharge to model.

At a glance

Base URL
https://antibacterial.ai/api/v1
Auth
Authorization: Bearer <key>, or X-Api-Key
Returns
JSON: MIC band, call, mechanism, confidence per strain
Included from
Discovery, $499 a month

One call

A compound goes in, a per-strain matrix comes back

Create a key in the workspace under API keys, name it after the job that will use it, and revoke it there when that job retires. Keys are stored as hashes, so a leaked database row cannot be replayed.

Request

curl https://antibacterial.ai/api/v1/screens \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "compound": "Ciprofloxacin",
    "panel": "eskape",
    "readout": "all",
    "analogs": true
  }'

Response, 201

{
  "screen": {
    "id": 4812,
    "compound": "Ciprofloxacin",
    "compound_class": "Fluoroquinolone",
    "panel": { "key": "eskape", "label": "ESKAPE" },
    "rows": [
      {
        "strain": "...",
        "mic_ug_ml": "...",
        "call": "S | I | R",
        "mechanism": "...",
        "reason": "...",
        "confidence": "..."
      }
    ],
    "analogs": [],
    "why": "...",
    "disclaimer": "Computational prediction ..."
  }
}

The band, the call and the mechanism arrive as strings because that is what they honestly are: broth microdilution reads in doubling dilutions, so a band such as 0.5 to 2 is the correct resolution and a single decimal would be false precision. Rows with thin published support come back marked as thin rather than averaged into something confident.

Endpoints

Seven endpoints, and no SDK to install

Method Path What it does
GET /api/v1/panels The strain panels this workspace can screen against, including any custom panel, with the strains in each.
GET /api/v1/usage Screens used, screens left, when the month refills, seats, batch ceiling and which exports the tier includes.
POST /api/v1/screens One compound against one panel. Returns 201 with the full matrix. Counted against the month only when the model answers.
GET /api/v1/screens Every screen the workspace has run, newest first, paged with limit and before.
GET /api/v1/screens/{id} One screen by id, in the same shape as the run that created it.
POST /api/v1/batches A list of compounds against one panel. Returns 202 and a batch id. Refused up front if the month cannot cover it.
GET /api/v1/batches/{id} Batch status: queued, running or done, with the done and failed counts.

Everything is JSON over HTTPS with a bearer key, which is short enough to wire up from any language without a client library. The panel keys your workspace accepts come from GET /api/v1/panels, so a loader can validate a panel name before it starts spending the month.

When it refuses

Every refusal names itself, so your job can branch on it

An integration is only as good as its error handling, so each refusal carries a stable machine code in the error field and a sentence a human can act on in the message field.

Status Code What happened
401 missing_api_key No key on the request. Send it as Authorization: Bearer, or as X-Api-Key.
401 invalid_api_key The key is not ours, or it has been revoked in the workspace.
401 subscription_not_live The subscription behind the key is not live. An unpaid workspace does not exist for anybody.
403 api_not_in_tier A real workspace on a tier without the API. The message names the tier it is on.
403 role_cannot_run The key belongs to a viewer seat. Viewers read and export, they do not spend the month.
422 batch_too_large More compounds in one batch than the tier allows. The message gives both numbers.
429 quota_exhausted The month is used up, with the refill date in the message. Batches are checked before anything is queued.
503 model_unavailable The prediction model did not answer. Nothing is guessed in its place and the screen is not counted.

The one worth designing around is 503. When the model does not answer, the call fails loudly and the screen is not counted, because a fabricated matrix in a registry is far more expensive than a retry.

Where teams put it

Four integrations that pay for themselves

Registry enrichment

Every compound registered gets a predicted panel written back as a field, so the matrix is already there when a chemist opens the record instead of being a separate errand nobody runs.

Nightly triage of enumerated analogs

A generative or enumeration step produces hundreds of analogs overnight. One batch call ranks them against the panel that matters, and the morning list is ordered before the project meeting.

A gate in the design loop

Score, filter, iterate. The design code asks for a prediction, drops anything with a predicted band above your cut, and only surviving structures reach a human or a synthesis queue.

Deciding what earns plate time

The bottleneck is rarely ideas, it is assay slots. A ranked, literature-grounded list turns an argument about which twenty compounds to run into a decision with a written reason behind every exclusion.

What it will not do

The limits, before you build on it

Knowing where a prediction stops is part of integrating it properly. None of this is hidden until after a card is charged.

It is not a measurement

The API returns a prediction grounded in published MIC records for close analogs. Broth microdilution against your isolates stays the ground truth, and the prediction decides what is worth that plate.

Novel chemistry returns low confidence on purpose

A scaffold with no characterised relatives has no honest band, so the row says so. Treat low confidence as a routing signal in your pipeline rather than an error to retry.

It does not model pharmacokinetics or toxicity

Potency against a strain says nothing about exposure, clearance or safety. Those are separate problems and are not claimed here.

It is not a clinical or diagnostic result

The read-out is for research decisions about compounds. It is not an antimicrobial susceptibility test on a patient isolate and must not be used as one.

Questions people ask before buying

The screening API, answered plainly

Is there an API for MIC prediction?

Yes. Antibacterial exposes a REST API that takes a compound and a strain panel and returns a predicted MIC band per organism as JSON, with the S, I or R call, the expected resistance mechanism and a confidence level. It is included from the Discovery tier at $499 a month, authenticated with a bearer key, with no per call surcharge.

How much does an antibacterial screening API cost?

API access is included in the Discovery plan at $499 a month for 2,000 screens, which works out at about $0.25 per compound screened against a full panel. The Program plan is $1,490 a month for 10,000 screens, about $0.15 per compound. Nothing is metered separately: an API screen and a workspace screen draw on the same monthly allowance.

What does the API return for a compound?

One row per strain in the panel. Each row carries the strain name, a predicted MIC band in µg/mL, an S, I or R call, the mechanism the model expects to limit the compound, a short reason, and a confidence level. The response also names the compound class, the closest characterised analogs when you ask for them, and a research use only disclaimer.

Can I screen a batch of compounds through the API?

Yes. POST a list of compounds to /api/v1/batches and the run is queued, returning a batch id immediately rather than holding the connection open. Discovery accepts up to 1,000 compounds in one batch, Program up to 10,000. If the remaining month cannot cover the batch, it is refused before anything is queued rather than half run.

Which plan includes API access?

Discovery and Program. The Lab plan at $149 a month runs screens in the workspace and exports CSV, and a key on a Lab workspace is refused with a 403 that names the tier. There is no add-on: the API is a tier feature, so moving up is a plan change on the same subscription rather than a second invoice.

How many API requests per minute are allowed?

The API accepts 120 requests a minute per key. That is deliberately far above a design loop pulling read-outs one compound at a time, and if you are moving a library you should be sending it to the batch endpoint anyway, where one request carries up to 10,000 compounds and the queue does the pacing.

Do compounds sent to the API stay confidential?

Structures you send stay yours and are never used to train models. That is the practical reason an unpublished series can go through an API at all: a free academic prediction server usually reserves the right to retain submissions, which is a problem when the input is the composition of matter you intend to file on.

Does an API screen count against the same monthly allowance?

It does, and there is no second allowance to track. A screen run from your pipeline and a screen run by a chemist in the browser both come out of the tier allowance, and GET /api/v1/usage returns what is used, what is left and the exact date the window refills, so a loader can stop itself before it hits a 429.

Pricing

What a screening API costs per compound

Full plan comparison

Published, because a quote cycle costs a small team weeks it does not have. Discovery includes the API and 2,000 screens a month, which is about $0.25 per compound against a full panel. Program includes 10,000, or about $0.15. The same account also runs in the browser, so the MIC prediction software a chemist uses and the key your loader uses spend one allowance, and peptide programs get the same matrix from the antimicrobial peptide prediction tool with a sequence as the input.

Yearly billing is two months cheaper, charged once a year.

Lab

$124 /mo

$1,488 charged once a year

250 screens a month against the standard panels, with CSV export.

Get started

Academic AMR lab, 1 to 2 chemists

Discovery

Most popular

$416 /mo

$4,992 charged once a year

Custom panels, batch runs of a full series, API access and roles.

Get started

Biotech antibacterial program

Program

$1,241 /mo

$14,892 charged once a year

Library-scale runs, your own isolates, SSO, audit log and an SLA.

Get started

Multi-program biotech or discovery CRO

Enterprise

Talk to sales

Custom terms, invoiced

Private deployment, your internal isolate library, a named contact.

Pharma, institute or consortium

See the matrix your pipeline would be storing

Run a screen here first, then wire the same read-out into your own loop with a key.

Run a screen first

What you are agreeing to

  • Your compounds stay yours
  • Never used for model training
  • Deletable on request
  • No card needed to create your account

Screen your own compound.
No card required.