Newsence Core Worker HTTP endpoints (frontend): GET /health POST /ingest - Ingest URL (JSON), image URL (JSON), or user-uploaded blob (multipart) POST /scrape - Sync extraction: {url} JSON or raw bytes -> NormalizedContent {markdown,text,metadata,status} POST /scrape/jobs - Async parse job (non-persisting): {url} or raw bytes -> {jobId} GET /scrape/jobs/:id - Poll parse job -> {status, result?, error?} POST /generate-image - AI image gen (OpenRouter → R2 → user_files) POST /embed - Generate embeddings POST /media/delete - Batch-delete user-file R2 objects by storage key (#162) POST /media/gc - On-demand reference-nowhere R2 orphan sweep (#162) GET /stream/:instanceId - Workflow status (SSE) Signed media: GET /media/external/{options}/{mediaUrl} - Upstream image/video passthrough with edge cache GET /media/asset/{key}?sig=&exp= - Authenticated R2 asset