Password Pusher API v2
BETAUmfassende REST-API-Dokumentation für die Integration von Password Pusher in Ihre Anwendungen
Beta-Bekanntmachung: API v2 befindet sich derzeit in der Betaphase. Wir haben alles getan, um die Stabilität zu gewährleisten, aber bis zur endgültigen Veröffentlichung kann es noch zu Änderungen kommen. Wir freuen uns über Ihr Feedback!
Pushes
Push-Nachrichten ermöglichen die sichere Übertragung sensibler Daten in eine Richtung an die Empfänger. Erstellen Sie eine Push-Nachricht mit einer geheimen URL, die Text, Dateien, QR-Codes oder URLs enthält, und geben Sie sie dann an beliebige Personen weiter - ohne sensible Daten in E-Mails, Chats oder Protokollen preiszugeben.
Ideal für das Onboarding von Mitarbeitern, den Versand von Zugangsdaten, die Übermittlung vertraulicher Dokumente oder die Weitergabe sensibler Informationen. Pushs laufen nach einer bestimmten Dauer oder Anzahl von Aufrufen automatisch ab, und in den Prüfprotokollen jedes Pushs ist eine vollständige Lebenszyklusverfolgung verfügbar.
POST /api/v2/pushes
Erzeugt einen neuen Push mit der angegebenen Nutzlast.
Anfragekörper (JSON)
{
"push": {
"payload": "secret_password_123",
"expire_after_duration": 6,
"expire_after_views": 5,
"passphrase": "optional_passphrase",
"name": "Database Credentials",
"note": "Internal note",
"deletable_by_viewer": true,
"retrieval_step": true,
"kind": "text"
},
"account_id": 123
}
Anfragekörper mit Dateien (multipart/form-data)
curl -X POST https://us.pwpush.com/api/v2/pushes \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-F "push[payload]=secret_password_123" \
-F "push[expire_after_duration]=6" \
-F "push[expire_after_views]=5" \
-F "push[name]=Database Credentials" \
-F "push[files][]=@/path/to/file1.pdf" \
-F "push[files][]=@/path/to/file2.txt"
Anmerkung: Wenn Sie Dateien anhängen, verwenden Sie multipart/form-data format und Satz kind: "file". Mehrere Dateien können angehängt werden mit push[files][].
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
payload
erforderlich
|
string | Der geheime Text zum Teilen |
expire_after_duration
Optional
|
integer (0-17) | Dauer enum (0-17) |
expire_after_views
Optional
|
integer (1-100) | Anzahl der Aufrufe vor dem Verfall |
passphrase
Optional
|
string | Passphrase zur Ansicht erforderlich |
name
Optional
|
string | Ein Name für den Vorstoß |
note
Optional
|
string | Interne Notiz (nur für den Ersteller sichtbar) |
deletable_by_viewer
Optional
|
boolean | Erlauben Sie den Zuschauern, den Push zu löschen |
retrieval_step
Optional
|
boolean | Erfordert einen zusätzlichen Schritt zum Abrufen |
kind
Optional
|
string | Typ: "text", "file", "url" oder "qr" (Standardeinstellung "text") |
notify_emails_to
Optional
|
string | E-Mail-Adressen, die benachrichtigt werden sollen, wenn ein Push erstellt wird (durch Kommata getrennt) |
notify_emails_to_locale
Optional
|
string | Gebietsschema (Sprache), in der die E-Mail-Benachrichtigung(en) gesendet werden sollen |
authenticated_recipients
Optional
|
boolean | Vor dem Anzeigen ist eine OTP-Bestätigung per E-Mail erforderlich. Erfordert „notify_emails_to“. Der Abruf ist bei Aktivierung nur über den Browser möglich (der API-Abruf gibt den Status 403 zurück). |
account_id
Optional
|
integer | Die Konto-ID, mit der der Push verknüpft werden soll (für Benutzer mit mehreren Konten) |
Dauer Werte für expire_after_duration
Antwortfelder
Die folgenden Felder werden in der Antwort zurückgegeben, wenn ein Push erstellt wird. Hinweis: Nutzdaten und Dateien werden beim Erstellen NICHT zurückgegeben - sie sind nur verfügbar, wenn ein Push über GET abgerufen wird.
| Feld | Typ | Beispiel | Beschreibung |
|---|---|---|---|
| account_id | integer or null | 1 | Konto-ID des Eigentümers |
| created_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 Erstellungszeitpunkt |
| days_remaining | integer | 1 | Veraltet Verbleibende ganze Tage (0, wenn < 1 Tag); bevorzugt expires_at / expires_in |
| deletable_by_viewer | boolean | true | Ob der Empfänger den Push löschen darf |
| deleted | boolean | false | Ob der Push explizit gelöscht wurde |
| expire_after_days | integer | 1 | Veraltet Ungefähre Tage (abgeleitet von der Dauer) |
| expire_after_duration | integer | 6 | Dauer enum (0-17); siehe Tabelle oben |
| expire_after_views | integer | 5 | Maximale Aufrufe vor Ablauf der Frist |
| expired | boolean | false | Ob der Push abgelaufen ist |
| expired_on | string or null | null | ISO 8601, wenn der Push abgelaufen ist; null, wenn er nicht abgelaufen ist |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | ISO 8601-Zeit, zu der der Push abläuft; null, wenn er abgelaufen ist |
| expires_in | number | 86400 | Sekunden bis zum Verfall (0, wenn verfallen) |
| html_url | string | "https://.../p/abc" | URL zum Öffnen des Push im Browser |
| json_url | string | "https://.../p/abc.json" | URL zum Abrufen von Push als JSON |
| name | string or null | "Database credentials" | Optionaler Name für den Push |
| note | string or null | null | Optionale private Notiz |
| notify_emails_to | string or null | null | E-Mail-Benachrichtigung bei Erstellung (nur Premium) |
| passphrase | string or null | null | Nur vorhanden, wenn Push eine Passphrase hat (Wert verborgen) |
| retrieval_step | boolean | false | Ob ein zusätzlicher Schritt erforderlich ist, um die Daten abzurufen |
| updated_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 letzte Aktualisierungszeit |
| url_token | string | "fkwjfvhall92" | Eindeutige geheime Kennung für den Push |
| views_remaining | integer | 5 | Vor Ablauf der Frist verbleibende Ansichten |
Beispielantwort:
{
"expire_after_duration": 6,
"expire_after_views": 5,
"expired": false,
"url_token": "fkwjfvhall92",
"deletable_by_viewer": true,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2025-02-17T10:00:00.000Z",
"updated_at": "2025-02-17T10:00:00.000Z",
"expire_after_days": 1,
"views_remaining": 5,
"deleted": false,
"days_remaining": 1,
"expires_at": "2025-02-18T10:00:00.000Z",
"expires_in": 86400,
"json_url": "https://example.com/p/fkwjfvhall92.json",
"html_url": "https://example.com/p/fkwjfvhall92",
"account_id": 1,
"note": null,
"name": "Database Credentials"
}
Beispiel-Anfrage
curl -X POST https://us.pwpush.com/api/v2/pushes \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"push": {
"payload": "MySecretPassword123",
"expire_after_duration": 6,
"expire_after_views": 3
}
}'
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://us.pwpush.com/api/v2/pushes')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request['Content-Type'] = 'application/json'
request.body = {
push: {
payload: 'MySecretPassword123',
expire_after_duration: 6,
expire_after_views: 3
}
}.to_json
response = http.request(request)
puts response.body
import requests
import json
url = 'https://us.pwpush.com/api/v2/pushes'
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
data = {
'push': {
'payload': 'MySecretPassword123',
'expire_after_duration': 6,
'expire_after_views': 3
}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
$headers = @{
'Authorization' = 'Bearer YOUR_API_TOKEN'
'Content-Type' = 'application/json'
}
$body = @{
push = @{
payload = 'MySecretPassword123'
expire_after_duration = 6
expire_after_views = 3
}
} | ConvertTo-Json -Depth 10
$response = Invoke-RestMethod -Uri 'https://us.pwpush.com/api/v2/pushes' `
-Method Post `
-Headers $headers `
-Body $body
$response | ConvertTo-Json
GET /api/v2/pushes/:url_token
Ruft die geheime Nutzlast eines Push ab. Dadurch wird der View Count erhöht und der Push kann ablaufen.
Antwortfelder
Die folgenden Felder werden zurückgegeben, wenn ein Push abgerufen wird. Dieser Endpunkt gibt die Nutzdaten und Dateien zurück, die an anderen Endpunkten nicht verfügbar sind.
| Feld | Typ | Beispiel | Beschreibung |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 Erstellungszeitpunkt |
| days_remaining | integer | 1 | Veraltet Verbleibende ganze Tage (0, wenn < 1 Tag); bevorzugt expires_at / expires_in |
| deletable_by_viewer | boolean | true | Ob der Empfänger den Push löschen darf |
| deleted | boolean | false | Ob der Push explizit gelöscht wurde |
| expire_after_days | integer | 1 | Veraltet Ungefähre Tage (abgeleitet von der Dauer) |
| expire_after_duration | integer | 6 | Dauer enum (0-17) |
| expire_after_views | integer | 5 | Maximale Aufrufe vor Ablauf der Frist |
| expired | boolean | false | Ob der Push abgelaufen ist |
| expired_on | string or null | null | ISO 8601, wenn der Push abgelaufen ist; null, wenn er nicht abgelaufen ist |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | ISO 8601-Zeit, zu der der Push abläuft; null, wenn er abgelaufen ist |
| expires_in | number | 86400 | Sekunden bis zum Verfall (0, wenn verfallen) |
| files | array | [{ filename, content_type, url }] | Angehängte Datei-Metadaten mit Download-URLs |
| html_url | string | "https://.../p/abc" | URL zum Öffnen des Push im Browser |
| json_url | string | "https://.../p/abc.json" | URL zum Abrufen von Push als JSON |
| passphrase | string or null | null | Nur vorhanden, wenn Push eine Passphrase hat (Wert verborgen) |
| payload | string or null | "secret123" | Der geheime Inhalt; null, wenn er abgelaufen ist |
| retrieval_step | boolean | false | Ob ein zusätzlicher Schritt erforderlich ist, um die Daten abzurufen |
| updated_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 letzte Aktualisierungszeit |
| url_token | string | "fkwjfvhall92" | Eindeutige geheime Kennung für den Push |
| views_remaining | integer | 2 | Vor Ablauf der Frist verbleibende Ansichten |
Beispiel-Anfrage
curl -X GET https://us.pwpush.com/api/v2/pushes/fkwjfvhall92
Beispielanfrage mit Passphrase
curl -X GET "https://us.pwpush.com/api/v2/pushes/fkwjfvhall92?passphrase=your_passphrase"
Beispiel Antwort
{
"expire_after_duration": 6,
"expire_after_views": 3,
"expired": false,
"url_token": "fkwjfvhall92",
"deletable_by_viewer": false,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2025-02-17T10:00:00.000Z",
"updated_at": "2025-02-17T10:00:00.000Z",
"expire_after_days": 1,
"views_remaining": 2,
"deleted": false,
"days_remaining": 1,
"expires_at": "2025-02-18T10:00:00.000Z",
"expires_in": 86400,
"json_url": "https://us.pwpush.com/p/fkwjfvhall92.json",
"html_url": "https://us.pwpush.com/p/fkwjfvhall92",
"payload": "MySecretPassword123",
"files": []
}
Anmerkung: Wenn der Push eine Passphrase hat, fügen Sie diese als Abfrageparameter ein: ?passphrase=your_passphrase. Das Abrufen eines Pushs zählt als Ansicht und kann dazu führen, dass der Push abläuft, wenn er sein Ansichtslimit erreicht.
GET /api/v2/pushes/:url_token/preview
Gibt die vollständig qualifizierte geheime URL eines Pushs zurück, ohne die Nutzdaten abzurufen.
Beispiel-Anfrage
curl -X GET https://us.pwpush.com/api/v2/pushes/fkwjfvhall92/preview
Beispiel Antwort
{
"url": "https://us.pwpush.com/p/fkwjfvhall92"
}
GET /api/v2/pushes/:url_token/audit
Gibt das Audit-Protokoll für einen Push zurück. Erfordert Authentifizierung und Eigentümerschaft.
Abfrage-Parameter:
page (Optional): Seitenzahl für die Paginierung.
- Standard:
1(erste Seite) - Reichweite:
1zu200 - Liefert bis zu 50 Audit-Protokolleinträge pro Seite
- Beispiel:
?page=2um die zweite Seite aufzurufen
Beispiel-Anfrage
curl -X GET https://us.pwpush.com/api/v2/pushes/fkwjfvhall92/audit \
-H "Authorization: Bearer YOUR_API_TOKEN"
Beispiel Antwort
{
"logs": [
{
"ip": "192.168.1.100",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"referrer": null,
"kind": "creation",
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:00:00.000Z"
},
{
"ip": "192.168.1.101",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
"referrer": "https://example.com",
"kind": "view",
"created_at": "2023-10-27T10:05:00.000Z",
"updated_at": "2023-10-27T10:05:00.000Z"
}
]
}
Anmerkung: Die kind feld gibt die Art der protokollierten Aktion an. Übliche Werte sind: creation, view, expire, failed_passphrase, und failed_view.
DELETE /api/v2/pushes/:url_token
Lässt einen Push sofort ablaufen und löscht dauerhaft alle sensiblen Daten, einschließlich der Nutzlast und aller angehängten Dateien. Diese Aktion ist irreversibel und kann nicht rückgängig gemacht werden. Erfordert Authentifizierung und Eigentümerschaft, oder der Push muss erstellt worden sein mit deletable_by_viewer: true.
Beispiel-Anfrage
curl -X DELETE https://us.pwpush.com/api/v2/pushes/fkwjfvhall92 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Beispiel Antwort
{
"expire_after_duration": 7,
"expire_after_views": 5,
"expired": true,
"url_token": "fkwjfvhall92",
"deletable_by_viewer": false,
"retrieval_step": false,
"expired_on": "2023-10-27T10:15:00.000Z",
"passphrase": null,
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:15:00.000Z",
"expire_after_days": 7,
"days_remaining": 0,
"expires_at": null,
"expires_in": 0,
"views_remaining": 0,
"deleted": true,
"json_url": "https://us.pwpush.com/p/fkwjfvhall92.json",
"html_url": "https://us.pwpush.com/p/fkwjfvhall92",
"account_id": 1,
"note": null,
"name": null
}
GET /api/v2/pushes/active
Gibt eine paginierte Liste Ihrer aktiven (nicht abgelaufenen) Pushes zurück. Erfordert Authentifizierung.
GET /api/v2/pushes/expired
Gibt eine paginierte Liste Ihrer abgelaufenen Pushes zurück. Erfordert Authentifizierung.
Abfrage-Parameter:
page (Optional): Seitenzahl für die Paginierung.
- Standard:
1(erste Seite) - Reichweite:
1zu200 - Rückgabe von bis zu 50 Druckvorgängen pro Seite
- Beispiel:
?page=2um die zweite Seite aufzurufen
Beispielanfrage (aktiv)
curl -X GET https://us.pwpush.com/api/v2/pushes/active \
-H "Authorization: Bearer YOUR_API_TOKEN"
Beispielanfrage (abgelaufen)
curl -X GET https://us.pwpush.com/api/v2/pushes/expired \
-H "Authorization: Bearer YOUR_API_TOKEN"
Beispiel Antwort
[
{
"expire_after_duration": 7,
"expire_after_views": 5,
"expired": false,
"url_token": "abc123xyz789",
"deletable_by_viewer": false,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:00:00.000Z",
"expire_after_days": 7,
"days_remaining": 7,
"expires_at": "2023-10-29T10:00:00.000Z",
"expires_in": 172800,
"views_remaining": 5,
"deleted": false,
"json_url": "https://us.pwpush.com/p/abc123xyz789.json",
"html_url": "https://us.pwpush.com/p/abc123xyz789",
"account_id": 1,
"note": null,
"name": null
},
{
"expire_after_duration": 1,
"expire_after_views": 3,
"expired": false,
"url_token": "def456uvw012",
"deletable_by_viewer": true,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2023-10-26T15:30:00.000Z",
"updated_at": "2023-10-26T15:30:00.000Z",
"expire_after_days": 1,
"days_remaining": 0,
"expires_at": "2023-10-26T16:00:00.000Z",
"expires_in": 1200,
"views_remaining": 2,
"deleted": false,
"json_url": "https://us.pwpush.com/p/def456uvw012.json",
"html_url": "https://us.pwpush.com/p/def456uvw012",
"account_id": 1,
"note": null,
"name": null
}
]
Zuletzt aktualisiert: July 20, 2026