Businesses using Presio release open shifts to their staffing agencies. You retrieve the offers via API or receive them via webhook, submit your workers - and the confirmation counts toward staffing immediately. No phone, no email ping-pong.
The Partner API is deliberately small: three endpoints and one webhook. It maps exactly the process that runs by phone today - only without follow-up questions and without re-entering anything in the schedule.
All offers a business has released to you - with date, time, workplace, required qualification, slots and deadline.
As soon as a business releases an offer to you, your webhook URL receives the offer as JSON - no polling loop needed.
You submit the name, qualification and contact of a worker for an offer. The business confirms or declines - you can see the status at any time.
The business creates you in its partner management: name, contact, which workplaces and qualifications you cover. Every business you work with creates you separately.
Presio generates one API key per partner and business. The business hands it to you securely; you send it with every request in the header x-partner-key .
Either you poll GET /offers regularly, or you store a webhook URL with the business and receive every new offer immediately.
Via POST /offers/{id}/respond you submit a worker. If the business confirms, the worker is in the schedule and counts toward target/actual staffing. You can see the status under GET /responses.
All requests go as JSON over HTTPS. The API key identifies partner and business at the same time - there is no further login.
<code>Base URL: https://jvesiwsaghavrelflbjc.supabase.co/functions/v1/partner-api Header: x-partner-key: <your API key> Content-Type: application/json</code>
Returns all offers that are released to you and have not yet expired - including your own submissions for them.
<code>GET /offers x-partner-key: <your API key> 200 OK { "partner": { "id": "…", "name": "Pflege-Personal Nord GmbH" }, "offers": [ { "id": "8f2c…", "organization": "Klinikum Beispielstadt", "date": "2026-09-05", "shift": "Early shift", "startTime": "06:30", "endTime": "14:30", "workplace": "Ward 3", "requiredSkill": "Registered nurse", "slots": 1, "note": "Handover 6:15 in the ward office", "deadline": "2026-09-04T18:00:00Z", "state": "open", "myResponses": 0, "myAccepted": 0 } ] }</code>
Submits a worker for an offer. One submission per worker and offer is possible; with several slots you can submit several workers.
<code>POST /offers/8f2c…/respond x-partner-key: <your API key> Content-Type: application/json { "name": "Anna Beispiel", "qualification": "Registered nurse", "contact": "0170 1234567", "note": "on site from 6:30" } 201 Created { "ok": true, "response": { "id": "c41a…", "state": "applied" } }</code>
All submissions you have made, with their current status: applied (submitted), accepted (confirmed by the business, worker is scheduled) or declined (declined or offer filled otherwise).
<code>GET /responses x-partner-key: <your API key> 200 OK { "responses": [ { "id": "c41a…", "offerId": "8f2c…", "name": "Anna Beispiel", "state": "accepted", "updatedAt": "2026-09-04T09:12:00Z" }, { "id": "d902…", "offerId": "71be…", "name": "Max Muster", "state": "applied", "updatedAt": "2026-09-04T09:20:00Z" } ] }</code>
If the business stores a webhook URL for you, Presio sends a POST with the same offer object as under GET /offers. Respond with 2xx; on errors, delivery is retried.
<code>POST <your webhook URL> Content-Type: application/json { "event": "offer.created", "offer": { "id": "8f2c…", "organization": "Klinikum Beispielstadt", "date": "2026-09-05", "shift": "Early shift", "startTime": "06:30", "endTime": "14:30", "workplace": "Ward 3", "requiredSkill": "Registered nurse", "slots": 1, "note": "Handover 6:15 in the ward office", "deadline": "2026-09-04T18:00:00Z", "state": "open" } }</code>
<code>401 Unauthorized API key missing, invalid or revoked by the business 404 Not Found Offer does not exist or is not released to you 409 Conflict Offer is already filled, expired or the worker has already been submitted</code>
The interface is built so that both sides only see what they need for the assignment.
Drop us a short note about which businesses you serve and which system you run - we will send you a test access and sample offers.
Discuss integration Try Presio for free