RecoupGet a Free AuditFree Audit

API REFERENCE

Extract URL

On this page
POST/api/research/extract

Extract clean markdown content from one or more public URLs. Handles JavaScript-heavy pages and PDFs. Returns focused excerpts aligned to an objective, or full page content.

Authentication

See the authentication guide for API key and account access requirements.

Request

cURL
curl --request POST \
  --url 'https://api.recoupable.dev/api/research/extract' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "urls": [
    "string"
  ]
}'

Request body required

application/json

urlsarray<string>required

URLs to extract content from (max 10).

minItems: 1 · maxItems: 10

Item properties for urls

string

objectivestring

What information to focus on (optional, max 3000 chars).

full_contentboolean

Return full page content instead of focused excerpts.

Default: false

Responses

200Extracted content from URLs

application/json

statusstring · enumrequired

Values: "success", "error"

resultsarray<ResearchExtractResult>required
Item properties for results
urlstring

format: uri

titlestringnullable
publish_datestringnullable

Publish date in YYYY-MM-DD format.

excerptsarray<string>nullable

Focused excerpts as markdown.

Item properties for excerpts

string

full_contentstringnullable

Full page content as markdown.

errorsarray<object>

URLs that failed to extract. Only present when one or more URLs could not be processed.

Item properties for errors

object

400Validation error

application/json

statusstring · enumrequired

Values: "error"

errorstringrequired

Human-readable error message describing what went wrong.

401Authentication failed — invalid or missing API key

application/json

statusstring · enumrequired

Values: "error"

errorstringrequired

Human-readable error message describing what went wrong.

501The configured research data source does not support this endpoint or data shape.

application/json

statusstring · enumrequired

Values: "error"

errorstringrequired

Human-readable error message describing what went wrong.

501 example
{
  "status": "error",
  "error": "Request failed with status 501"
}

Full specification

Download the OpenAPI file for complete schemas, constraints, and examples.

Download research.json
View operation source
json
{
  "description": "Extract clean markdown content from one or more public URLs. Handles JavaScript-heavy pages and PDFs. Returns focused excerpts aligned to an objective, or full page content.",
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ResearchExtractRequest"
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Extracted content from URLs",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ResearchExtractResponse"
          }
        }
      }
    },
    "400": {
      "description": "Validation error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ResearchErrorResponse"
          }
        }
      }
    },
    "401": {
      "description": "Authentication failed — invalid or missing API key",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ResearchErrorResponse"
          }
        }
      }
    },
    "501": {
      "$ref": "#/components/responses/ResearchDataSourceUnsupported"
    }
  }
}