Live in production

The entire platform
is an API.

Not just extraction. Onboard users, deploy pipelines, process documents, manage synonyms, export results — all through REST endpoints. Zero UI required.

Quick start Service status Full reference
<60s
avg extraction
99.9%
uptime
2
endpoints to extract
30+
API endpoints

Quick Start — Extract in 3 steps

Send any document. Get structured, catalog-matched data back. That's it.

1 Submit a document

extract.py
import requests # Send any file — PDF, image, Excel, Word r = requests.post("https://monolith.aws.monce.ai/extract", params={"user_id": "81295316"}, files={"file": open("order.pdf", "rb")}) task_id = r.json()["task_id"] # {"task_id": "a1b2c3d4e5f6", "status": "queued", "poll_url": "/extract/a1b2c3..."}

2 Poll for results

poll.py
import time while True: result = requests.get( f"https://monolith.aws.monce.ai/extract/{task_id}", params={"user_id": "81295316"} ).json() if result["status"] in ("completed", "failed"): break time.sleep(2)

3 Use the structured data

result.py
header = result["result"]["header"] print(f"Client: {header['client_name']}, Date: {header['date']}") for line in result["result"]["lines"]: print(f" {line['reference']} x{line['quantity']} @ {line['unit_price']}") # Export to CSV/Excel/PDF export = requests.get( f"https://monolith.aws.monce.ai/extract/{task_id}/export", params={"user_id": "81295316", "format": "xlsx"}) with open("result.xlsx", "wb") as f: f.write(export.content)

Full Pipeline via API

Most platforms give you an extraction endpoint. Monce gives you the entire lifecycle — onboarding, deployment, processing, and management — all programmable.

1. Onboard

Upload articles catalog, client list, sample documents, and schema. 4 endpoints, fully automated.

POST /upload/articles
POST /upload/clients
POST /upload/samples
POST /upload/schema

2. Deploy

Trigger pipeline training — matchers, prompts, validation. Poll for progress.

POST /deploy/{user_id}
GET /deploy/{user_id}

3. Extract

Send any document. Get structured, matched, priced data. Batch supported.

POST /extract
GET /extract/{task_id}

4. Manage

Synonyms, history, exports (CSV/XLSX/PDF), dashboard stats — all via API.

GET /extract/{id}/export
GET /synonyms/api/fields
GET /extract/history

Programmatic Onboarding — deploy without touching the UI

onboard_and_deploy.py
import requests, time BASE = "https://monolith.aws.monce.ai" # 1. Upload your articles catalog requests.post(f"{BASE}/upload/articles", files={"file": open("catalog.xlsx", "rb")}) # 2. Upload client list requests.post(f"{BASE}/upload/clients", files={"file": open("clients.csv", "rb")}) # 3. Upload sample orders for training requests.post(f"{BASE}/upload/samples", files=[("files", open("sample1.pdf", "rb")), ("files", open("sample2.pdf", "rb"))]) # 4. Set schema (or auto-detect from industry) requests.post(f"{BASE}/upload/schema", params={"industry": "verrerie"}) # 5. Check readiness status = requests.get(f"{BASE}/upload/status", params={"user_id": "81295316"}).json() print(status) # {"progress": "4/4", "ready_to_deploy": true} # 6. Deploy — trains matchers, generates prompts, validates requests.post(f"{BASE}/deploy/81295316") while True: d = requests.get(f"{BASE}/deploy/81295316").json() print(f" {d['current_step']} — {d['progress']}%") if d["status"] in ("deployed", "failed"): break time.sleep(3) # Done. Now POST /extract works with your catalog and matching rules.

Chat-based Interaction via API

The assistant (concierge + extraction) is also an API endpoint. Send text, files, or both. Deployed users get extraction + editing. Non-deployed users get guided onboarding.

assistant_api.py
# Chat with the assistant — text + optional file r = requests.post("https://monolith.aws.monce.ai/assistant", data={ "user_id": "81295316", "message": "Process this order", "session_id": "my-session-1", "lang": "fr" }, files={"file": open("order.pdf", "rb")}) reply = r.json() print(reply["reply"]) # Natural language response + structured extraction result # Edit via conversation r2 = requests.post("https://monolith.aws.monce.ai/assistant", data={ "user_id": "81295316", "message": "Change line 3 quantity to 50", "session_id": "my-session-1" }) print(r2.json()["reply"]) # "Done. Line 3 updated."

Response Schema

GET /extract/{task_id} returns this when status: "completed":

{ "task_id": "a1b2c3d4e5f6", "user_id": "81295316", "status": "completed", "result": { "header": { "client_name": "Dupont SA", "client_id": "#4281", "order_reference": "CMD-2026-0847", "date": "2026-03-05", "delivery_address": "12 Rue de Lyon, 69001" }, "lines": [ { "reference": "REF-880", "description": "Panneau verre trempé 6mm 1200x800", "quantity": 50, "unit_price": 42.80, "matched_article": "VT-6MM-1200x800", "confidence": 0.97 }, { "reference": "REF-4420", "description": "Joint silicone transparent 310ml", "quantity": 20, "unit_price": 8.50, "matched_article": "JS-TRANSP-310", "confidence": 0.94 } ], "routing": { "decision": "auto", "score": 0.92, "reason": "All lines matched with high confidence" } }, "metadata": { "pages": 2, "language": "fr", "elapsed_seconds": 18.4, "file_count": 1 } }

API Reference

Base URL: https://monolith.aws.monce.ai — All endpoints return JSON unless noted.

Extraction 6 endpoints

POST /extract Submit file(s) for extraction
GET /extract/{task_id} Poll status / get result
GET /extract/{task_id}/export Download as CSV, XLSX, or PDF
GET /extract/{task_id}/document Preview converted PDF
GET /extract/history Past extractions for a user
GET /extract/queue Queue overview (workers, active, queued)

Onboarding 5 endpoints

POST /upload/articles Upload product catalog (.xlsx, .csv)
POST /upload/clients Upload client list
POST /upload/samples Upload sample orders for training
POST /upload/schema Upload or auto-generate target schema
GET /upload/status Check onboarding progress (x/4 inputs)

Deployment 2 endpoints

POST /deploy/{user_id} Trigger pipeline training (async)
GET /deploy/{user_id} Poll deployment progress

Assistant / Chat 4 endpoints

POST /assistant Chat — extraction + editing (deployed) or onboarding (new)
POST /assistant/load-result Load extraction into chat session for editing
GET /assistant/history Get conversation history
POST /chat Concierge chatbot (guided onboarding)

Synonyms & Management 7 endpoints

GET /synonyms/api/fields List matched fields
GET /synonyms/api/field/{name} Get values + synonyms for a field
POST /synonyms/api/field/{name} Add / remove synonym
GET /synonyms/api/clients Get clients with synonyms
POST /synonyms/api/clients Add / remove client synonym
POST /synonyms/api/rebuild Rebuild all matchers
GET /synonyms/api/rebuild Poll rebuild status

Infrastructure 4 endpoints

GET /health Service health + component status
GET /industries List public industries
GET /dashboard/api Per-user stats (JSON)
GET /dashboard/global/api Global queue stats (JSON)

MCP Server

Monce exposes an MCP (Model Context Protocol) server. Your AI agent can call Monce tools directly — extract documents, check status, query catalogs — without writing HTTP code.

mcp-config.json
{ "mcpServers": { "monce": { "url": "https://monolith.aws.monce.ai/mcp", "tools": ["extract", "check_status", "get_result", "list_industries"] } } }

MCP support is in active development. Contact us for early access.

Start building

20 cents per line. First 100 lines free. No API key required for sandbox.

100K+ lines/month? Contact us for volume pricing.

Try the extraction API Back to Monce