# LexSelect External API > Turn documents into structured, layout-aware output: a page tree with word coordinates, plain text, paragraphs, a clause outline and table data. Supported inputs are PDF, DOC, DOCX, ODT, RTF, EML and MSG, and text recognition covers more than 200 languages. The OpenAPI spec describes authentication, versioning, errors, request and response schemas. ## Docs - [OpenAPI spec (JSON)](https://api.lexselect.io/api/openapi.json): the spec as JSON - [OpenAPI spec (YAML)](https://api.lexselect.io/api/openapi.yaml): the same contract as YAML - [API reference](https://api.lexselect.io/api/docs): interactive reference, rendered with JavaScript - [Webhooks guide](https://api.lexselect.io/api/webhooks.html): setup, payloads, signatures, retries, testing and troubleshooting - [Webhooks guide (Markdown)](https://api.lexselect.io/api/webhooks.md): the same guide without JavaScript - [Webhook signature verifier](https://api.lexselect.io/api/verify-webhook.mjs): runnable Node.js HMAC verification example - [getting-started](https://api.lexselect.io/api/getting-started.html): integration guide, also available at https://api.lexselect.io/api/getting-started.md - [understanding-output](https://api.lexselect.io/api/understanding-output.html): integration guide, also available at https://api.lexselect.io/api/understanding-output.md - [operations](https://api.lexselect.io/api/operations.html): integration guide, also available at https://api.lexselect.io/api/operations.md - [versioning](https://api.lexselect.io/api/versioning.html): integration guide, also available at https://api.lexselect.io/api/versioning.md - [Server-side examples and CLI](https://github.com/LexSelect/lexselect-api-demo) - [Studio → API keys](https://studio.lexselect.io/keys) ## Endpoints - `GET https://api.lexselect.io/api/folders/{folder_id}/sub-documents`: List sub-documents across a folder - `GET https://api.lexselect.io/api/documents`: List files - `POST https://api.lexselect.io/api/documents/upload`: Upload file - `GET https://api.lexselect.io/api/documents/{id}`: Get file - `DELETE https://api.lexselect.io/api/documents/{id}`: Delete file - `GET https://api.lexselect.io/api/documents/{id}/parse`: Get parsed document structure - `GET https://api.lexselect.io/api/documents/{id}/render`: Render document to Markdown or HTML (experimental) - `GET https://api.lexselect.io/api/documents/{id}/processing/latest`: Get processing status - `GET https://api.lexselect.io/api/documents/{id}/processing/latest/pages`: List pages - `GET https://api.lexselect.io/api/usage`: Get current usage and spend - `GET https://api.lexselect.io/api/usage/daily`: Get daily usage ## Outbound webhooks These are notifications sent to your receiver, not REST endpoints on this API. - `document.processing.queued`: Document processing queued - `document.processing.completed`: Document processing completed - `document.processing.failed`: Document processing failed ## Webhook test requests - Send Test (signed synthetic event) - Test URL (unsigned connectivity probe)