Skip to content

API Reference

Conner Groth edited this page Jul 3, 2025 · 3 revisions

API Reference

Core Endpoints

  • GET /api/boot - Initialize server and load feature libraries
  • POST /api/annotateSequence - Get sequence annotations using SYNBICT
  • POST /api/annotateText - Get text annotations using BERN2 NLP
  • POST /api/convert/genbanktosbol2 - Convert GenBank to SBOL
  • POST /api/cleanSBOL - Clean and normalize SBOL URIs
  • POST /api/findSimilarParts - Find similar parts in databases
  • POST /api/importUserLibrary - Import custom feature libraries from SynBioHub
  • POST /api/deleteUserLibrary - Remove custom feature libraries

Request/Response Examples

// Sequence Annotation
POST /api/annotateSequence
{
  "completeSbolContent": "<sbol xml>",  
  "partLibraries": ["cello_library.xml"],
  "cleanDocument": true
}

// Text Annotation  
POST /api/annotateText
{
  "text": "This promoter regulates gene expression"
}

Boot Endpoint and Setup Behavior

When a user first visits the SeqImprove site, the frontend calls:

@app.get("/api/boot")
def boot_app():
    return "Rise and shine"  

This endpoint triggers the setup() function, which loads feature libraries required by SYNBICT for sequence annotation. This loading step is time-consuming, so preloading on the first visit ensures users won’t experience delays when requesting annotations later.

Local vs Cloud Behavior

Local Development: setup() runs once on the first API request, then stays loaded until the server restarts.

Cloud Deployment: Servers may spin down when idle, so /api/boot is used to proactively reload libraries as soon as the site is opened.

SYNBICT performs sequence annotation using part libraries and internally leverages flashtext for fast string matching.

Clone this wiki locally