curl --request POST \
--url https://api.bedrock.cv/parse \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sheet_id": "sht_01JABCD123",
"features": [
"symbols"
],
"options": {
"symbols": {
"count": true
}
}
}
'{
"job_id": "job_01JABCD123",
"type": "parse",
"status": "Completed",
"target": {
"type": "sheet",
"id": "sht_01JABCD123"
},
"results": {
"legend": [
{
"block_id": "blk_01JABCD200",
"symbols_detected": 24,
"symbols_with_graphic": 18,
"symbols": [
{
"feature_id": "ftr_01JABCD300",
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE",
"has_graphic": true
}
]
}
],
"symbols": [
{
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE",
"legend_feature_id": "ftr_01JABCD300",
"instance_count": 4,
"instances": [
{
"feature_id": "ftr_01JABCD400",
"block_id": "blk_01JABCD100",
"bounds": {
"x_min": 333,
"y_min": 207,
"x_max": 345,
"y_max": 222
},
"confidence": 0.694
}
]
}
],
"summary": {
"total_symbols_searched": 5,
"total_instances_found": 21
}
},
"created_at": "2024-01-15T10:00:00Z",
"completed_at": "2024-01-15T10:01:30Z"
}Detect and extract structured features from a sheet using legend-driven symbol matching.
curl --request POST \
--url https://api.bedrock.cv/parse \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sheet_id": "sht_01JABCD123",
"features": [
"symbols"
],
"options": {
"symbols": {
"count": true
}
}
}
'{
"job_id": "job_01JABCD123",
"type": "parse",
"status": "Completed",
"target": {
"type": "sheet",
"id": "sht_01JABCD123"
},
"results": {
"legend": [
{
"block_id": "blk_01JABCD200",
"symbols_detected": 24,
"symbols_with_graphic": 18,
"symbols": [
{
"feature_id": "ftr_01JABCD300",
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE",
"has_graphic": true
}
]
}
],
"symbols": [
{
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE",
"legend_feature_id": "ftr_01JABCD300",
"instance_count": 4,
"instances": [
{
"feature_id": "ftr_01JABCD400",
"block_id": "blk_01JABCD100",
"bounds": {
"x_min": 333,
"y_min": 207,
"x_max": 345,
"y_max": 222
},
"confidence": 0.694
}
]
}
],
"summary": {
"total_symbols_searched": 5,
"total_instances_found": 21
}
},
"created_at": "2024-01-15T10:00:00Z",
"completed_at": "2024-01-15T10:01:30Z"
}Parse answers “what is on this sheet?” by running detection and extraction tasks that populate the Drawing Index with structured features, metadata, and relationships.Documentation Index
Fetch the complete documentation index at: https://docs.bedrock.cv/llms.txt
Use this file to discover all available pages before exploring further.
features array selects which tasks to run.
| Feature | Status | Description |
|---|---|---|
symbols | Available | Legend-driven symbol detection (doors, windows, fixtures, MEP equipment) |
legend | Coming soon | Legend block parsing (standalone) |
rooms | Coming soon | Room boundary detection and labeling |
grid | Coming soon | Grid line and axis detection |
schedule | Coming soon | Table and schedule extraction |
notes | Coming soon | General and key notes extraction |
title_block | Coming soon | Title block metadata extraction |
symbols is currently accepted by the API. Requesting a “coming soon” feature will return a validation error.
| Target | Description |
|---|---|
sheet_id | Parse from an existing sheet in the system |
block_id | Parse a specific block directly (requires legend_block_id) |
drawing_id | Parse all sheets in a drawing (auto-detects legends) |
file_id | Parse from an uploaded PDF file (creates Drawing + Sheets automatically) |
POST /files to get a signed upload URLPOST /files/{file_id}/confirmPOST /parse with file_id{
"file_id": "fil_01JABCD111",
"features": ["symbols"]
}
features: ["symbols"], the pipeline runs:
defined_by relations from each detected symbol back to its legend entry{
"sheet_id": "sht_xxx",
"features": ["symbols"]
}
legend_block_id so the pipeline knows which legend to use:
{
"block_id": "blk_xxx",
"features": ["symbols"],
"options": {
"symbols": {
"legend_block_id": "blk_yyy"
}
}
}
confidence score (0-1) indicating how closely it matches the legend symbol template.
parse.child.completed with child_job_type: "vision.legend.parse"): Fired when a legend block finishes parsing. Includes the list of symbols detected in that legend:
{
"type": "parse.child.completed",
"data": {
"job_id": "job_01JABCD125",
"parent_job_id": "job_01JABCD123",
"child_job_type": "vision.legend.parse",
"status": "completed",
"target": { "type": "block", "id": "blk_01JABCD200" },
"results": {
"block_id": "blk_01JABCD200",
"symbols_detected": 24,
"symbols_with_graphic": 18,
"symbols": [
{
"feature_id": "ftr_01JABCD300",
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE",
"has_graphic": true
}
]
}
}
}
parse.block.completed): Fired when a view block finishes symbol detection. Includes per-block detection results:
{
"type": "parse.block.completed",
"data": {
"job_id": "job_01JABCD126",
"parse_job_id": "job_01JABCD123",
"block_id": "blk_01JABCD100",
"status": "completed",
"results": {
"symbols": [
{
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE",
"instance_count": 4,
"instances": [
{
"feature_id": "ftr_01JABCD400",
"bounds": { "x_min": 333, "y_min": 207, "x_max": 345, "y_max": 222 },
"confidence": 0.694
}
]
}
],
"summary": {
"total_symbols_searched": 5,
"total_instances_found": 21
}
}
}
}
{
"legend": [
{
"block_id": "blk_01JABCD200",
"symbols_detected": 24,
"symbols_with_graphic": 18,
"symbols": [
{
"feature_id": "ftr_01JABCD300",
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE (NEW DEVICE, PROVIDE BACKBOX & WIRING)",
"has_graphic": true
}
]
}
],
"symbols": [
{
"label": "duplex_receptacle",
"description": "DUPLEX RECEPTACLE (NEW DEVICE, PROVIDE BACKBOX & WIRING)",
"legend_feature_id": "ftr_01JABCD300",
"instance_count": 4,
"instances": [
{
"feature_id": "ftr_01JABCD400",
"block_id": "blk_01JABCD100",
"bounds": { "x_min": 333, "y_min": 207, "x_max": 345, "y_max": 222 },
"confidence": 0.694
}
]
}
],
"summary": {
"total_symbols_searched": 5,
"total_instances_found": 21
}
}
| Field | Description |
|---|---|
legend[] | Per-legend-block results array |
legend[].block_id | Legend block ID |
legend[].symbols_detected | Total symbols found in this legend block |
legend[].symbols_with_graphic | Symbols with a visual graphic (excludes text-only entries) |
legend[].symbols[].feature_id | Feature ID of the legend entry |
legend[].symbols[].has_graphic | Whether the symbol has a visual graphic for matching |
symbols[].legend_feature_id | Reference to the legend entry feature |
symbols[].instances[].bounds | Pixel coordinates within the parent block image |
symbols[].instances[].confidence | Score (0-1) indicating how closely the detection matches the legend symbol template |
summary.total_symbols_searched | Unique symbol types with at least one detection |
summary.total_instances_found | Total detections across all blocks |
API key prefixed with sk_. Example: Authorization: Bearer sk_xxx
API version
Completed job result (returned when polling or via webhook).
Completed parse job result with symbol detections.