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.
- JSON in, JSON out
- No per call surcharge
- Structures never used for training
Try the read-out the API returns
of 3 left
Strain panel
No account needed. 3 screens per session.
| 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
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 startedAcademic 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 startedBiotech 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 startedMulti-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.
What you are agreeing to
- Your compounds stay yours
- Never used for model training
- Deletable on request
- No card needed to create your account
Related reading
The reference pages behind the calls the API makes.
- AMP prediction tool antimicrobial peptide prediction tool
- Compound library screening compound library screening software
- Drug discovery software cost drug discovery software cost
- MIC prediction software mic prediction software
- Antibiotic resistance antibiotic resistance
- Antimicrobial peptides antimicrobial peptides