Penneo Case File Creation API
The Case File Creation API from Penneo — 1 operation(s) for case file creation.
The Case File Creation API from Penneo — 1 operation(s) for case file creation.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/penneo:penneo-case-file-creation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Penneo Case File Case File Creation API
version: 1.0.0
description: API for creating and managing Penneo case files. This API allows you to create case files with documents and signers, upload PDF files, and check the status of asynchronous job processing.
servers:
- url: https://sandbox.penneo.com
description: Sandbox environment for testing and development
- url: https://app.penneo.com
description: Production environment
tags:
- name: Case File Creation
paths:
/send/api/v1/casefiles/20251022/create:
post:
tags:
- Case File Creation
summary: Create a new case file with documents and signers
operationId: createCaseFile
description: Creates a new case file in Penneo with the specified documents and signers. This endpoint accepts a multipart/form-data request containing JSON metadata and files.
parameters:
- in: header
name: X-Auth-Token
required: true
schema:
type: string
description: JWT token for authentication. Obtain a token following the instructions at https://penneo.readme.io/docs/using-oauth#authorization-code-grant. The token must be valid and have the necessary permissions to create case files.
requestBody:
required: true
description: Multipart form data containing the case file configuration (as JSON string in 'data' field) and files to upload.
content:
multipart/form-data:
schema:
type: object
required:
- data
- files
properties:
data:
type: string
description: 'JSON string containing the case file configuration. Must be a stringified JSON object with a required ''caseFile'' property (title, signers array, and documents array). Optional caseFile.activateCaseFile (boolean, default true): when false, the case file is created but not activated/sent, and signingLinks in the job result is an empty array. Each signer supports optional channel (''email'' or ''eboks''; default email). e-Boks requires exactly one of cpr (exactly 10 digits) or cvr (8 digits with an optional alphanumeric :suffix); cpr and cvr are mutually exclusive and only valid when channel is eboks. e-Boks must be enabled for the customer; email is unused for e-Boks delivery. Each signer also supports optional secureSigningMethods (array of allowed secure electronic signing methods; allowed values: ''mitid.dk'', ''bankid_se'', ''bankid_no'', ''itsme.be'', ''ftn.fi'', ''sms'', ''eid.belgium.be'', ''passport-reader.eident.dk'', ''ausweisapp.bund.de'', ''qes.personal.mitid.dk'', ''qes.erhverv.mitid.dk'') which overrides case file and customer settings when set. Pass an empty array to disable all secure methods (SES-only when insecure signing is enabled); omit the field to use case file / customer defaults.'
example: '{"caseFile":{"title":"Contract Agreement","activateCaseFile":true,"signers":[{"name":"John Doe","email":"john@example.com","role":"signer","secureSigningMethods":["mitid.dk","bankid_no"]}],"documents":[{"title":"Contract Document","name":"contract.pdf"}]}}'
files:
type: array
items:
type: string
format: binary
description: Array of PDF files to upload. The number of files must match the number of documents specified in the data field. Files should be uploaded in the same order as documents are specified.
responses:
'201':
description: Case file creation job has been successfully queued. Use the returned job UUID and payloadHash to check the job status via the queue status endpoint.
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Job created
description: Human-readable message about the job creation
status:
type: string
enum:
- handled
- error
example: handled
description: Status of the job creation request
jobs:
type: array
description: Array of created jobs (typically contains one job)
items:
type: object
properties:
uuid:
type: string
format: uuid
description: Unique identifier for the job that can be used to check status
payload:
type: object
description: The job payload containing case file metadata and tracking information
properties:
organizationUuid:
type: string
format: uuid
description: UUID of the organization that owns this case file
uuid:
type: string
format: uuid
description: UUID of the created case file
bundleUuid:
type: string
format: uuid
description: UUID of the bundle containing the case file
etlVersionUuid:
type: string
format: uuid
description: UUID of the ETL version used for processing
customData:
type: object
description: Additional metadata and context for the job
properties:
initialPayload:
type: object
description: The original request payload that was submitted
properties:
caseFile:
type: object
description: The case file data that was submitted
penneoApiUser:
type: string
description: Penneo API user identifier
endpoint:
type: string
description: The endpoint path that was called
jwt:
type: object
description: Decoded JWT token information
properties:
cid:
type: integer
description: Customer ID from JWT
roles:
type: array
items:
type: string
description: User roles from JWT
jti:
type: string
description: JWT token ID
sub:
type: string
description: JWT subject (user ID)
exp:
type: integer
description: JWT expiration timestamp (Unix epoch)
scp:
type: string
description: JWT scope
client_id:
type: string
description: OAuth client ID
iss:
type: string
description: JWT issuer
iat:
type: integer
description: JWT issued at timestamp (Unix epoch)
payloadHash:
type: string
description: SHA-256 hash of the payload, used for verification when checking job status
createdAt:
type: string
format: date-time
description: ISO 8601 timestamp when the job was created
'400':
description: Bad Request - The request is invalid. This may be due to invalid input data, malformed JSON, missing required fields, invalid JWT token format, or validation errors.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Bad Request
message:
type: string
example: 'Invalid JWT token: Invalid token format'
statusCode:
type: integer
example: 400
x-provenance:
method: searched
source: https://developer.penneo.com/reference
harvested: '2026-10-27'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://developer.penneo.com/reference/checkjobstatus.md
- https://developer.penneo.com/reference/createcasefile.md
merge:
pages: 2
deduped: 0
conflicts_kept_first: 0