### GET /v1/usage Source: https://docs.presa.dev/openapi.json API endpoint for GET /v1/usage ```markdown ### Responses #### 200 - Current billing period usage. - **data** (object) (required) - **pdfsGenerated** (integer (int64)) (required) - **periodEnd** (string (date-time)) (required) - **periodStart** (string (date-time)) (required) - **quotaLimit** (integer (int32)) (required) - **remaining** (integer (int64)) (required) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X GET "https://api.presa.dev/v1/usage" ``` ``` -------------------------------- ### GET /v1/api-keys Source: https://docs.presa.dev/openapi.json API endpoint for GET /v1/api-keys ```markdown ### Responses #### 200 - List of active API keys. - **data** (array (object)) (required) Array items: - **createdAt** (string (date-time)) (required) - **id** (string (uuid)) (required) - **keyPrefix** (string) (required) - **name** (string,null) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X GET "https://api.presa.dev/v1/api-keys" ``` ``` -------------------------------- ### GET /v1/usage/events Source: https://docs.presa.dev/openapi.json API endpoint for GET /v1/usage/events ```markdown ### Parameters - **limit** (integer (int64), query, optional) ### Responses #### 200 - Recent usage events. - **data** (array (object)) (required) Array items: - **apiKeyId** (string (uuid)) (required) - **id** (string (uuid)) (required) - **latencyMs** (integer,null) - **pdfSizeBytes** (integer,null) - **statusCode** (integer (int32)) (required) - **success** (boolean) (required) - **timestamp** (string (date-time)) (required) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X GET "https://api.presa.dev/v1/usage/events?limit=0" ``` ``` -------------------------------- ### GET /v1/usage/stats Source: https://docs.presa.dev/openapi.json API endpoint for GET /v1/usage/stats ```markdown ### Responses #### 200 - Enhanced usage statistics. - **data** (object) (required): Enhanced usage stats including average latency and success rate. - **avgLatencyMs** (number,null) - **pdfsGenerated** (integer (int64)) (required) - **periodEnd** (string (date-time)) (required) - **periodStart** (string (date-time)) (required) - **quotaLimit** (integer (int32)) (required) - **remaining** (integer (int64)) (required) - **successRate** (number,null) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X GET "https://api.presa.dev/v1/usage/stats" ``` ``` -------------------------------- ### POST /v1/api-keys/{id}/reveal Source: https://docs.presa.dev/openapi.json API endpoint for POST /v1/api-keys/{id}/reveal ```markdown ### Parameters - **id** (string (uuid), path, required): API key ID ### Responses #### 200 - Decrypted API key. - **data** (object) (required) - **apiKey** (string) (required) - **id** (string (uuid)) (required) #### 400 - Invalid key ID format **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 404 - Key not found **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X POST "https://api.presa.dev/v1/api-keys/{id}/reveal" ``` ``` -------------------------------- ### POST /v1/pdf/from-html Source: https://docs.presa.dev/openapi.json API endpoint for POST /v1/pdf/from-html ```markdown ### Request Body **Content-Type:** application/json - **format** (null) - **html** (string) (required): HTML content to convert to PDF. - **landscape** (boolean,null) - **margins** (null) - **printBackground** (boolean,null) - **scale** (number,null) ### Responses #### 200 - PDF generated #### 400 - Invalid HTML or request **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 403 - Quota exceeded **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 408 - Generation timeout **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 413 - Payload too large **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 503 - Gotenberg unavailable **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X POST "https://api.presa.dev/v1/pdf/from-html" \ -H "Content-Type: application/json" \ -d '{ "format": "value", "html": "string", "landscape": "value", "margins": "value", "printBackground": "value", "scale": "value" }' ``` ``` -------------------------------- ### POST /v1/api-keys Source: https://docs.presa.dev/openapi.json API endpoint for POST /v1/api-keys ```markdown ### Request Body **Content-Type:** application/json - **name** (string,null) ### Responses #### 201 - API key created. - **data** (object) (required) - **apiKey** (string) (required) - **createdAt** (string (date-time)) (required) - **id** (string (uuid)) (required) - **keyPrefix** (string) (required) - **name** (string,null) #### 400 - Invalid key name **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X POST "https://api.presa.dev/v1/api-keys" \ -H "Content-Type: application/json" \ -d '{ "name": "value" }' ``` ``` -------------------------------- ### Schema: CreateKeyRequest Source: https://docs.presa.dev/openapi.json Schema definition for CreateKeyRequest ```markdown ## Schema: CreateKeyRequest Schema definition for CreateKeyRequest **Type:** object - **name** (string,null) ``` -------------------------------- ### Schema: Margins Source: https://docs.presa.dev/openapi.json Schema definition for Margins ```markdown ## Schema: Margins Schema definition for Margins **Type:** object - **bottom** (string,null) - **left** (string,null) - **right** (string,null) - **top** (string,null) ``` -------------------------------- ### API Overview: Presa API Source: https://docs.presa.dev/openapi.json HTML-to-PDF generation API. JSON success responses use a `{ "data": ... }` envelope. Error responses use `{ "error": { "code", "message", "status" } }`. ```yaml # Presa API # Version: 0.1.0 HTML-to-PDF generation API. JSON success responses use a `{ "data": ... }` envelope. Error responses use `{ "error": { "code", "message", "status" } }`. # Base URL: https://api.presa.dev ``` -------------------------------- ### Security: bearer Source: https://docs.presa.dev/openapi.json API key authentication. Pass your API key as a Bearer token: `Authorization: Bearer presa_...` ```markdown ## Security: bearer **Description:** API key authentication. Pass your API key as a Bearer token: `Authorization: Bearer presa_...` **Type:** http **Scheme:** bearer **Bearer Format:** API Key ``` -------------------------------- ### Schema: PageFormat Source: https://docs.presa.dev/openapi.json Schema definition for PageFormat ```markdown ## Schema: PageFormat Schema definition for PageFormat **Type:** object ``` -------------------------------- ### Schema: NamedFormat Source: https://docs.presa.dev/openapi.json Schema definition for NamedFormat ```markdown ## Schema: NamedFormat Schema definition for NamedFormat **Type:** string ``` -------------------------------- ### DELETE /v1/api-keys/{id} Source: https://docs.presa.dev/openapi.json API endpoint for DELETE /v1/api-keys/{id} ```markdown ### Parameters - **id** (string (uuid), path, required): API key ID ### Responses #### 200 - API key revoked. - **data** (object) (required) - **id** (string (uuid)) (required) - **revokedAt** (string (date-time)) (required) #### 400 - Invalid key ID format **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 401 - Not authenticated **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 404 - Key not found **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 409 - Already revoked **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) #### 500 - Internal error **ErrorEnvelope** - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ### Example Usage ```bash curl -X DELETE "https://api.presa.dev/v1/api-keys/{id}" ``` ``` -------------------------------- ### Schema: PdfRequest Source: https://docs.presa.dev/openapi.json Schema definition for PdfRequest ```markdown ## Schema: PdfRequest Schema definition for PdfRequest **Type:** object - **format** (null) - **html** (string) (required): HTML content to convert to PDF. - **landscape** (boolean,null) - **margins** (null) - **printBackground** (boolean,null) - **scale** (number,null) ``` -------------------------------- ### Schema: ApiError Source: https://docs.presa.dev/openapi.json Schema definition for ApiError ```markdown ## Schema: ApiError Schema definition for ApiError **Type:** object - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ``` -------------------------------- ### Schema: ErrorEnvelope Source: https://docs.presa.dev/openapi.json Schema definition for ErrorEnvelope ```markdown ## Schema: ErrorEnvelope Schema definition for ErrorEnvelope **Type:** object - **error** (object) (required) - **code** (string) (required) - **message** (string) (required) - **status** (integer (int32)) (required) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.