Postscript Compliance API
TCPA opt-out and data redaction for a subscriber, addressable by subscriber id, phone, email or Shopify customer id.
TCPA opt-out and data redaction for a subscriber, addressable by subscriber id, phone, email or Shopify customer id.
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/postscript:postscript-compliance-api"
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.
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: Postscript Partner Compliance API
description: The Postscript Partner API (v2) lets partners and Shopify shops manage SMS subscribers, send custom events into Flows, send transactional and conversational messages, read opt-in keywords, configure webhook subscriptions, and run TCPA compliance operations (unsubscribe, redact). Harvested verbatim from the per-operation OpenAPI definitions published on https://developers.postscript.io/reference.
version: '2.0'
contact:
name: Postscript Developer Support
email: developersupport@postscript.io
url: https://developers.postscript.io
termsOfService: https://postscript.io/api-terms-of-service
servers:
- url: https://api.postscript.io
security:
- sec0: []
tags:
- name: Compliance
description: TCPA compliance operations — unsubscribe and redact a subscriber.
paths:
/api/v2/compliance/redact:
patch:
summary: Redact
description: 'Note: When passed an email, phone number, Shopify customer ID, or Postscript subscriber ID, this endpoint will also unsubscribe the subscriber if they have an active subscription'
operationId: redact
parameters:
- name: X-Postscript-Shop-Token
in: header
description: Shop API Token. **Required for partners**. This header should be used only by partners. Shops should include their API token in the *Authorization* header.
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
postscript_subscriber_id:
type: string
description: ID of the subscriber you'd like to redact.
shopify_customer_id:
type: string
description: A shopify customer id of the subscriber you'd like to redact.
email:
type: string
description: An email of the subscriber you'd like to redact.
phone_number:
type: string
description: A phone number of the subscriber you'd like to redact.
responses:
'202':
description: '202'
content:
application/json:
examples:
Result:
value: "{\n \"message\": \"OK\"\n}"
schema:
type: object
properties:
message:
type: string
example: OK
'403':
description: '403'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"loc\": [],\n \"msg\": \"Access denied. You do not have permissions to access the requested resource.\",\n \"type\": \"v2.access_denied\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
loc:
type: array
msg:
type: string
example: Access denied. You do not have permissions to access the requested resource.
type:
type: string
example: v2.access_denied
deprecated: false
tags:
- Compliance
/api/v2/compliance/unsubscribe:
patch:
summary: Unsubscribe
description: Opt outs subscribers from Postscript messaging.
operationId: unsubscribe
parameters:
- name: X-Postscript-Shop-Token
in: header
description: Shop API Token. **Required for partners**. This header should be used only by partners. Shops should include their API token in the *Authorization* header.
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
postscript_subscriber_id:
type: string
description: ID of the subscriber you'd like to opt out.
phone_number:
type: string
description: A phone number of the subscriber you'd like to opt out.
responses:
'202':
description: '202'
content:
application/json:
examples:
Result:
value: "{\n \"message\": \"OK\"\n}"
schema:
type: object
properties:
message:
type: string
example: OK
'403':
description: '403'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"loc\": [],\n \"msg\": \"Access denied. You do not have permissions to access the requested resource.\",\n \"type\": \"v2.access_denied\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
loc:
type: array
msg:
type: string
example: Access denied. You do not have permissions to access the requested resource.
type:
type: string
example: v2.access_denied
deprecated: false
tags:
- Compliance
components:
securitySchemes:
sec0:
type: apiKey
in: header
name: Authorization
x-bearer-format: bearer