Casa Intelligence Casa Daily — Render API

The Casa Daily — Render API from Casa Intelligence — 1 operation(s) for casa daily — render.

Operations 1

POST /api/v1/render/pdf Render Pdf #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/casaintelligence-com-au:casaintelligence-com-au-casa-daily-render-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

casaintelligence-com-au-casa-daily-render-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Casa Intelligence Engine Casa Daily — Render API
  description: Proprietary data ingestion, analysis, and prediction engine for Queensland property development intelligence.
  version: 2.0.0
tags:
- name: Casa Daily — Render
paths:
  /api/v1/render/pdf:
    post:
      tags:
      - Casa Daily — Render
      summary: Render Pdf
      description: 'Render HTML+CSS to a PDF byte stream.


        Auth: X-API-Key (server-to-server, never browser-facing).


        Response: `application/pdf` stream. Body starts with `%PDF-` magic

        bytes (asserted in tests). Caller pipes the response straight into

        Supabase Storage; the endpoint itself is stateless.


        Failure modes:

        - 413 Payload Too Large — body exceeded MAX_BODY_BYTES.

        - 422 Unprocessable Entity — Pydantic validation (e.g. empty

        html, unknown page_size).

        - 504 Gateway Timeout — WeasyPrint took longer than

        RENDER_TIMEOUT_SECONDS.

        - 500 Internal Server Error — WeasyPrint raised (malformed

        HTML, unparseable CSS, missing font, etc.). Message includes

        the exception class so the caller can show a diagnostic.


        Body-size guard runs as a Header-only dependency (see

        `_enforce_body_size`) so we 413 before parsing a 50MB envelope.'
      operationId: render_pdf_api_v1_render_pdf_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: content-length
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Content-Length
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenderPdfRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    RenderPdfRequest:
      properties:
        html:
          type: string
          maxLength: 5242880
          minLength: 1
          title: Html
          description: Full HTML document — DOCTYPE through </html>.
        base_css:
          anyOf:
          - type: string
            maxLength: 262144
          - type: 'null'
          title: Base Css
          description: Optional extra stylesheet, appended to the document.
        page_size:
          type: string
          enum:
          - A4
          - Letter
          title: Page Size
          description: WeasyPrint page size — A4 or Letter.
          default: A4
        orientation:
          type: string
          enum:
          - portrait
          - landscape
          title: Orientation
          description: Page orientation — portrait or landscape.
          default: portrait
      type: object
      required:
      - html
      title: RenderPdfRequest
      description: 'The HTML+CSS payload Casa Daily POSTs to us.


        `html` is the FULL document — DOCTYPE, `<html>`, `<head>`,

        `<style>`/`<link>`, `<body>`. WeasyPrint parses it as-is.


        `base_css` is an optional extra stylesheet appended to the

        document. We support it as a separate field so Casa Daily can

        keep its print-grade brand CSS in one file and reuse it across

        both report templates — it doesn''t have to inline it into every

        HTML string. If present, it''s added as a WeasyPrint

        `CSS(string=...)` stylesheet alongside the document''s own

        embedded styles.


        `page_size` / `orientation` drive the `@page` rule we prepend

        so the caller doesn''t have to re-state it in every template.

        The caller''s own CSS can still override these via its own

        `@page` rule (last one wins per CSS cascade).'
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key