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
- Register an account via
POST /auth/register - Log in to get your
access_token - Upload a PDF to any AI tool endpoint
- Poll the job or use webhooks to get results
- 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.
https://auth.forgesuite.ai/auth/register
Create a new account.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | User email address |
password | string | Yes | Minimum 8 characters |
company_name | string | Yes | Company 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..."
}
https://auth.forgesuite.ai/auth/login
Log in with existing credentials.
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | User email address |
password | string | Yes | Account 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.
| Code | Meaning |
|---|---|
400 | Bad request — missing or invalid parameters |
401 | Unauthorized — missing or expired token |
403 | Forbidden — insufficient permissions or plan limits exceeded |
404 | Not found — resource does not exist |
422 | Validation error — request body failed validation |
429 | Rate limited — too many requests |
500 | Internal server error |
Error Response Example
{
"detail": "Invalid or expired token"
}
RFQ Extraction
Upload RFQ documents to extract requirements, then generate a work breakdown.
/api/tools/rfq/upload
Upload one or more RFQ PDFs for AI extraction.
| Parameter | Type | Required | Description |
|---|---|---|---|
files[] | file (multipart) | Yes | One 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"
}
/api/tools/rfq/{job_id}/work-breakdown
Trigger a work breakdown from a completed RFQ extraction job.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string (path) | Yes | Job 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.
/api/tools/drawing/upload
Upload a single engineering drawing PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file (multipart) | Yes | PDF 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.
/api/tools/bom/upload
Upload one or more BOM files (PDF or CSV) for comparison.
| Parameter | Type | Required | Description |
|---|---|---|---|
files[] | file (multipart) | Yes | PDF 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"
}
/api/tools/bom/verify-drawing
Verify a BOM against a previously extracted drawing.
| Parameter | Type | Required | Description |
|---|---|---|---|
drawing_job_id | string (form) | Yes | Job ID of a completed drawing extraction |
file | file (multipart) | Yes | BOM 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.
/api/tools/specs/upload
Upload a PDF datasheet for AI-powered spec extraction.
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file (multipart) | Yes | PDF 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.
/api/tools/readiness/upload
Upload RFQ documents for readiness scoring.
| Parameter | Type | Required | Description |
|---|---|---|---|
files[] | file (multipart) | Yes | One 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.
/api/tools/quote/generate
Generate a quote from a completed work breakdown job.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | Job 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"
}
/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"
/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.
/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"
}
/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}'
/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"
/api/shop/rates
Manage process rates (hourly rates for CNC, welding, assembly, etc.).
/api/shop/rates — List all rates/api/shop/rates — Create a rate/api/shop/rates/{id} — Update a rate/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}'
/api/shop/materials
Manage material markup percentages.
/api/shop/materials — List all materials/api/shop/materials — Create a material/api/shop/materials/{id} — Update a material/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.
/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"
}
]
/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
/api/export/job/{id}/csv — Download job result as CSV/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
/api/export/quote/{id}/csv — Download quote as CSV/api/export/quote/{id}/html — Download printable HTML quote/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.
/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"]
}
]
/api/billing/checkout
Create a Stripe checkout session. Redirects the user to Stripe for payment.
| Parameter | Type | Required | Description |
|---|---|---|---|
tier | string | Yes | "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.
/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"
}