EasyLink EasyDoc Extract
Overview
Use this skill to call the EasyLink async extraction API and return structured field data from documents. Always follow the same lifecycle: validate inputs, submit task, poll result, present extracted fields.
Onboarding
If user has no API key, guide first:
- Open
https://platform.easylink-ai.com - Register or sign in
- Enter API key management page and create a key
- Store as
EASYLINK_API_KEY
Platform
Single platform only (CN/EasyLink):
- Base URL:
https://api.easylink-ai.com - Submit:
POST /v1/easydoc/extract - Poll:
GET /v1/easydoc/extract/{task_id} - File form field:
files
Modes
| Mode | Description | json_schema | prompt_cus |
|---|---|---|---|
easydoc-extract |
Universal extraction | Optional (enables closed extraction) | Optional (used when no schema) |
easydoc-extract-flash |
Universal extraction with bounding boxes | Required | Not supported |
bl-extract |
Business license (fixed fields) | Not supported | Not supported |
occ-extract |
Org-code certificate (fixed fields) | Not supported | Not supported |
easydoc-extract has three behaviors based on parameters:
json_schemaprovided → closed extraction (schema fields only)- No schema,
prompt_cusprovided → prompt-driven extraction - Neither provided → open extraction (auto-detects all key-value pairs)
Workflow
-
Validate request inputs
- Require
api-keyfrom user input orEASYLINK_API_KEYenv var. - Require at least one file. Validate extension against supported list.
- Validate file size (
<= 100MB). - Validate mode/schema/prompt combination (see Modes table).
- If key is missing, return onboarding steps.
- Require
-
Submit async extraction task
- POST
multipart/form-datawithfiles,mode, and optionaljson_schemaorprompt_cus. - Read
task_idfrom response.
- POST
-
Poll task status
- GET
/v1/easydoc/extract/{task_id}until terminal status. - Terminal:
SUCCESS,ERROR,FAILED,COMPLETED,DONE - In-progress:
PENDING,PROCESSING,RUNNING,IN_PROGRESS,QUEUED - Stop on terminal or timeout.
- GET
-
Normalize output
- Keep raw response as
raw. - Return stable envelope:
task_id,status,results. - Each result entry contains
page_numberandfields(flat key→value map).
- Keep raw response as
-
Handle failures predictably
- Include
task_idin error reports when available. - Report HTTP status and response body for API errors.
- For failures, suggest checking file format or re-submission.
- Include
json_schema Format (universal modes only)
{
"type": "object",
"properties": {
"字段名": { "type": "string" }
}
}
Quick Commands
Open extraction (auto-detect all fields):
curl -X POST "https://api.easylink-ai.com/v1/easydoc/extract" \
-H "api-key: $EASYLINK_API_KEY" \
-F "files=@doc.pdf" \
-F "mode=easydoc-extract"
Closed extraction with custom fields:
curl -X POST "https://api.easylink-ai.com/v1/easydoc/extract" \
-H "api-key: $EASYLINK_API_KEY" \
-F "files=@doc.pdf" \
-F "mode=easydoc-extract" \
-F 'json_schema={"type":"object","properties":{"姓名":{"type":"string"},"金额":{"type":"string"}}}'
Business license:
curl -X POST "https://api.easylink-ai.com/v1/easydoc/extract" \
-H "api-key: $EASYLINK_API_KEY" \
-F "files=@license.jpg" \
-F "mode=bl-extract"
Org-code certificate:
curl -X POST "https://api.easylink-ai.com/v1/easydoc/extract" \
-H "api-key: $EASYLINK_API_KEY" \
-F "files=@cert.jpg" \
-F "mode=occ-extract"
Poll status:
curl -X GET "https://api.easylink-ai.com/v1/easydoc/extract/{task_id}" \
-H "api-key: $EASYLINK_API_KEY"
Bundled Python helper:
# Open extraction
python3 scripts/easydoc_extract.py --file ./doc.pdf --mode easydoc-extract
# Closed extraction with custom fields
python3 scripts/easydoc_extract.py --file ./doc.pdf --mode easydoc-extract \
--fields "姓名" "日期" "金额" --save ./result.json
# Flash mode (returns bounding boxes, requires --fields)
python3 scripts/easydoc_extract.py --file ./doc.pdf --mode easydoc-extract-flash \
--fields "姓名" "金额"
# Custom prompt
python3 scripts/easydoc_extract.py --file ./doc.pdf --mode easydoc-extract \
--prompt "提取所有金额和日期"
# Business license
python3 scripts/easydoc_extract.py --file ./license.jpg --mode bl-extract
# Org-code certificate
python3 scripts/easydoc_extract.py --file ./cert.jpg --mode occ-extract
# Poll existing task only
python3 scripts/easydoc_extract.py --poll-only --task-id "b_extract_xxx"
References And Scripts
- Read
references/easydoc-extract-api.mdfor endpoint details and error codes. - Use
scripts/easydoc_extract.pyfor deterministic submit and polling. - Script default output is
normalized; use--output-format rawfor raw payload.
Output Contract
{
"task_id": "string",
"status": "SUCCESS|ERROR|PENDING|PROCESSING|FAILED|COMPLETED|DONE",
"results": [
{
"page_number": 1,
"fields": {
"field_name": "value"
}
}
],
"raw": {}
}
