ForgeAI Workshop API Reference
v1.0 Back to Workshop

ForgeAI Workshop API

Build manufacturing intelligence into your workflow.

Base URL

https://workshop.forgesuite.ai

All endpoints below are relative to this base URL unless a full URL is shown. Every request (except /api/health) requires a Bearer token in the Authorization header.

Quick Start

  1. Register an account via POST /auth/register
  2. Log in to get your access_token
  3. Upload a PDF to any AI tool endpoint
  4. Poll the job or use webhooks to get results
  5. Export results as CSV, Markdown, or printable HTML

Authentication

Register and log in to get JWT tokens. Use the access token for all subsequent requests.

POST https://auth.forgesuite.ai/auth/register

Create a new account.

Request Body

ParameterTypeRequiredDescription
emailstringYesUser email address
passwordstringYesMinimum 8 characters
company_namestringYesCompany or shop name

Example

# Register a new account
curl -X POST https://auth.forgesuite.ai/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "securepassword123",
    "company_name": "Precision Machining Co"
  }'

Response 200

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}
POST https://auth.forgesuite.ai/auth/login

Log in with existing credentials.

ParameterTypeRequiredDescription
emailstringYesUser email address
passwordstringYesAccount password
# Log in
curl -X POST https://auth.forgesuite.ai/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "password": "securepassword123"}'

Response 200

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}

Errors

The API uses standard HTTP status codes. Errors return a JSON body with a detail field.

CodeMeaning
400Bad request — missing or invalid parameters
401Unauthorized — missing or expired token
403Forbidden — insufficient permissions or plan limits exceeded
404Not found — resource does not exist
422Validation error — request body failed validation
429Rate limited — too many requests
500Internal server error

Error Response Example

{
  "detail": "Invalid or expired token"
}

RFQ Extraction

Upload RFQ documents to extract requirements, then generate a work breakdown.

POST /api/tools/rfq/upload

Upload one or more RFQ PDFs for AI extraction.

ParameterTypeRequiredDescription
files[]file (multipart)YesOne or more PDF files
# Upload an RFQ document
curl -X POST https://workshop.forgesuite.ai/api/tools/rfq/upload \
  -H "Authorization: Bearer $TOKEN" \
  -F "files[][email protected]"

Response 200

{
  "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "processing"
}
POST /api/tools/rfq/{job_id}/work-breakdown

Trigger a work breakdown from a completed RFQ extraction job.

ParameterTypeRequiredDescription
job_idstring (path)YesJob ID from the RFQ upload
# Generate work breakdown from RFQ
curl -X POST https://workshop.forgesuite.ai/api/tools/rfq/a1b2c3d4-.../work-breakdown \
  -H "Authorization: Bearer $TOKEN"

Response 200

{
  "job_id": "f7e8d9c0-b1a2-3456-cdef-7890abcdef12",
  "status": "processing"
}

Drawing Extraction

Upload engineering drawings (PDF) to extract parts lists, dimensions, and title block data.

POST /api/tools/drawing/upload

Upload a single engineering drawing PDF.

ParameterTypeRequiredDescription
filefile (multipart)YesPDF file of the engineering drawing
# Upload an engineering drawing
curl -X POST https://workshop.forgesuite.ai/api/tools/drawing/upload \
  -H "Authorization: Bearer $TOKEN" \
  -F "[email protected]"

Response 200

{
  "job_id": "d4c3b2a1-0987-6543-fedc-ba0987654321",
  "status": "processing",
  "total_pages": 12
}

BOM Compare

Upload BOMs to reconcile with fuzzy and semantic matching. Optionally verify against a drawing extraction.

POST /api/tools/bom/upload

Upload one or more BOM files (PDF or CSV) for comparison.

ParameterTypeRequiredDescription
files[]file (multipart)YesPDF or CSV files containing BOMs
# Upload BOMs for comparison
curl -X POST https://workshop.forgesuite.ai/api/tools/bom/upload \
  -H "Authorization: Bearer $TOKEN" \
  -F "files[][email protected]" \
  -F "files[][email protected]"

Response 200

{
  "job_id": "e5f6a7b8-c9d0-1234-5678-90abcdef1234",
  "status": "processing"
}
POST /api/tools/bom/verify-drawing

Verify a BOM against a previously extracted drawing.

ParameterTypeRequiredDescription
drawing_job_idstring (form)YesJob ID of a completed drawing extraction
filefile (multipart)YesBOM file (PDF or CSV) to verify
# Verify BOM against a drawing
curl -X POST https://workshop.forgesuite.ai/api/tools/bom/verify-drawing \
  -H "Authorization: Bearer $TOKEN" \
  -F "drawing_job_id=d4c3b2a1-0987-6543-fedc-ba0987654321" \
  -F "[email protected]"

Response 200

{
  "job_id": "b8a7c6d5-e4f3-2109-8765-43210fedcba9",
  "status": "processing",
  "mode": "verify"
}

Spec Extraction

Upload PDF datasheets to extract structured specifications with parametric comparison.

POST /api/tools/specs/upload

Upload a PDF datasheet for AI-powered spec extraction.

ParameterTypeRequiredDescription
filefile (multipart)YesPDF datasheet
# Upload a datasheet for spec extraction
curl -X POST https://workshop.forgesuite.ai/api/tools/specs/upload \
  -H "Authorization: Bearer $TOKEN" \
  -F "[email protected]"

Response 200

{
  "job_id": "c9d0e1f2-a3b4-5678-9012-cdef34567890",
  "status": "processing"
}

Readiness Check

Score RFQ documents for quote-readiness. Identifies missing information before quoting.

POST /api/tools/readiness/upload

Upload RFQ documents for readiness scoring.

ParameterTypeRequiredDescription
files[]file (multipart)YesOne or more PDF files
# Check RFQ readiness
curl -X POST https://workshop.forgesuite.ai/api/tools/readiness/upload \
  -H "Authorization: Bearer $TOKEN" \
  -F "files[][email protected]"

Response 200

{
  "job_id": "1234abcd-5678-efgh-ijkl-mnop90123456",
  "status": "processing"
}

Quote Generation

Generate, list, and retrieve quotes based on work breakdown results.

POST /api/tools/quote/generate

Generate a quote from a completed work breakdown job.

ParameterTypeRequiredDescription
job_idstringYesJob ID of a completed work breakdown
# Generate a quote from work breakdown
curl -X POST https://workshop.forgesuite.ai/api/tools/quote/generate \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"job_id": "f7e8d9c0-b1a2-3456-cdef-7890abcdef12"}'

Response 200

{
  "quote_id": "q-2026-0042",
  "status": "generated"
}
GET /api/tools/quote/

List all quotes for the authenticated user.

# List all quotes
curl https://workshop.forgesuite.ai/api/tools/quote/ \
  -H "Authorization: Bearer $TOKEN"
GET /api/tools/quote/{id}

Get detailed quote information including line items, totals, and margins.

# Get quote detail
curl https://workshop.forgesuite.ai/api/tools/quote/q-2026-0042 \
  -H "Authorization: Bearer $TOKEN"

Shop Configuration

Manage your shop settings, process rates, and material markups used for quote generation.

GET /api/shop/config

Retrieve current shop settings.

# Get shop config
curl https://workshop.forgesuite.ai/api/shop/config \
  -H "Authorization: Bearer $TOKEN"

Response 200

{
  "shop_name": "Precision Machining Co",
  "default_margin": 0.25,
  "currency": "USD"
}
PUT /api/shop/config

Update shop settings.

# Update shop config
curl -X PUT https://workshop.forgesuite.ai/api/shop/config \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"shop_name": "Precision Machining Co", "default_margin": 0.30}'
POST /api/shop/config/seed-defaults

Load default manufacturing data: 13 process rates (CNC milling, turning, welding, etc.) and 8 material markups (aluminum, steel, stainless, etc.).

# Seed default rates and materials
curl -X POST https://workshop.forgesuite.ai/api/shop/config/seed-defaults \
  -H "Authorization: Bearer $TOKEN"
CRUD /api/shop/rates

Manage process rates (hourly rates for CNC, welding, assembly, etc.).

GET /api/shop/rates — List all rates
POST /api/shop/rates — Create a rate
PUT /api/shop/rates/{id} — Update a rate
DELETE /api/shop/rates/{id} — Delete a rate
# List process rates
curl https://workshop.forgesuite.ai/api/shop/rates \
  -H "Authorization: Bearer $TOKEN"

# Create a custom rate
curl -X POST https://workshop.forgesuite.ai/api/shop/rates \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"process": "5-axis CNC", "rate_per_hour": 185.00}'
CRUD /api/shop/materials

Manage material markup percentages.

GET /api/shop/materials — List all materials
POST /api/shop/materials — Create a material
PUT /api/shop/materials/{id} — Update a material
DELETE /api/shop/materials/{id} — Delete a material
# List material markups
curl https://workshop.forgesuite.ai/api/shop/materials \
  -H "Authorization: Bearer $TOKEN"

Jobs

Every AI tool operation creates a job. Poll jobs to check status and retrieve results.

GET /api/jobs/

List all jobs for the authenticated user.

# List all jobs
curl https://workshop.forgesuite.ai/api/jobs/ \
  -H "Authorization: Bearer $TOKEN"

Response 200

[
  {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "tool": "rfq",
    "status": "completed",
    "created_at": "2026-04-07T14:30:00Z"
  },
  {
    "id": "d4c3b2a1-0987-6543-fedc-ba0987654321",
    "tool": "drawing",
    "status": "processing",
    "created_at": "2026-04-07T14:32:00Z"
  }
]
GET /api/jobs/{id}

Get job detail including the full result payload once completed.

# Get job detail
curl https://workshop.forgesuite.ai/api/jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer $TOKEN"

Response 200

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "tool": "rfq",
  "status": "completed",
  "created_at": "2026-04-07T14:30:00Z",
  "completed_at": "2026-04-07T14:30:08Z",
  "result": { /* tool-specific result object */ }
}

Export

Download job results and quotes in multiple formats.

Job Exports

GET /api/export/job/{id}/csv — Download job result as CSV
GET /api/export/job/{id}/md — Download job result as Markdown
# Export job as CSV
curl https://workshop.forgesuite.ai/api/export/job/a1b2c3d4-.../csv \
  -H "Authorization: Bearer $TOKEN" \
  -o result.csv

# Export job as Markdown
curl https://workshop.forgesuite.ai/api/export/job/a1b2c3d4-.../md \
  -H "Authorization: Bearer $TOKEN" \
  -o result.md

Quote Exports

GET /api/export/quote/{id}/csv — Download quote as CSV
GET /api/export/quote/{id}/html — Download printable HTML quote
GET /api/export/quote/{id}/md — Download quote as Markdown
# Export quote as printable HTML
curl https://workshop.forgesuite.ai/api/export/quote/q-2026-0042/html \
  -H "Authorization: Bearer $TOKEN" \
  -o quote.html

# Export quote as CSV (for spreadsheets)
curl https://workshop.forgesuite.ai/api/export/quote/q-2026-0042/csv \
  -H "Authorization: Bearer $TOKEN" \
  -o quote.csv

Billing

View available plans and create Stripe checkout sessions.

GET /api/billing/plans

List available subscription plans and pricing.

# List subscription plans
curl https://workshop.forgesuite.ai/api/billing/plans \
  -H "Authorization: Bearer $TOKEN"

Response 200

[
  {
    "tier": "starter",
    "price": "$99/mo",
    "features": ["5 tools", "50 jobs/mo", "Email support"]
  },
  {
    "tier": "professional",
    "price": "$199/mo",
    "features": ["All tools", "Unlimited jobs", "Priority support"]
  }
]
POST /api/billing/checkout

Create a Stripe checkout session. Redirects the user to Stripe for payment.

ParameterTypeRequiredDescription
tierstringYes"starter", "professional", or "enterprise"
# Start checkout
curl -X POST https://workshop.forgesuite.ai/api/billing/checkout \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tier": "professional"}'

Response 200

{
  "checkout_url": "https://checkout.stripe.com/c/pay/cs_live_..."
}

Health

Check service availability. No authentication required.

GET /api/health

Returns service status. Useful for uptime monitoring.

# Health check
curl https://workshop.forgesuite.ai/api/health

Response 200

{
  "status": "ok",
  "service": "ForgeAI Workshop"
}