All integrations

Spondyr

MESSAGING · MESSAGING

Transactions rendered from Word templates and delivered by email, SMS, or fax.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

spondyr_delete_conditionWRITE

Delete a condition via DELETE /Condition. Delete a Condition by name from a Transaction Type. DESTRUCTIVE AND SILENT: Conditions are what narrow Template selection, so removing one can make a Template that was previously gated start matching every transaction -- correspondence is then sent where it previously was not. The target is named in the query string, not in the path. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_delete_eventtypeWRITE

Delete an event type via DELETE /EventType. Delete an Event Type by name. DESTRUCTIVE: a generate call citing this Event Type afterwards matches no Templates, and Spondyr reports that as a finished-with-no-match correspondence rather than as an error -- so the failure is silent from the caller's side. The target is named in the query string, not in the path. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_delete_recipientWRITE

Delete a recipient via DELETE /Recipient. Delete a Recipient by name from a Transaction Type. DESTRUCTIVE: every Template that attached this Recipient stops delivering to it, so future correspondence quietly reaches fewer people. The target is named in the query string, not in the path. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_delete_searchWRITE

Delete a search filter via DELETE /Search. Delete a Search Filter by name. DESTRUCTIVE TO DISCOVERY: newly generated correspondence stops being tagged, so it can no longer be found by that filter -- correspondence search silently returns less. The target is named in the query string, not in the path. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_delete_templateWRITE

Delete a template via DELETE /Template. Delete a Template by name. THE MOST DESTRUCTIVE OF THE SIX: a Template is the document a customer's correspondence IS, and removing it means every subsequent generate call for its Event Type renders one fewer document -- delivering less, to fewer Recipients, with no error. If it was the only Template for that Event Type, generate calls finish with no match at all. The target is named in the query string, not in the path. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_delete_transactiontypeWRITE

Delete a transaction type via DELETE /TransactionType. Delete (the vendor's own word is delete/deactivate) a Transaction Type by name. DESTRUCTIVE AND WIDE: a Transaction Type is the root of the customer's correspondence configuration -- its Event Types, Recipients, Conditions, Search Filters and Templates all hang off it -- so removing it changes what every subsequent generate call for that data renders and delivers. The target is named in the QUERY STRING; there is no id in the path, so nothing about the URL shape marks this as addressing a specific record. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_applicationuserstubWRITE

Create a single sign-on user token via GET /ApplicationUserStub. Mint a one-time UserToken for signing a user of the calling system into Spondyr's web interface, and CREATE A STUB SPONDYR USER ACCOUNT for them if one does not exist. A GET THAT WRITES: despite the verb, this provisions an account and grants it the rights named by Role (Owner, Integrator, Editor or Tenant User), so it is classified as a write. The token is then used as a query parameter on client.spondyr.io/Public/Public/SSO to open the session. TenantToken is required for a Tenant User on a multi-tenant Application and is supplied by the connection, not by the caller. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_batchREAD

Get batch status via GET /Batch. Read a batch's progress by its ReferenceID: the batch StatusCode, how many items it held and how many have been processed, a URI to the submitted JSON (valid for 20 minutes), and a BatchErrors array naming each failed item by index with its own ReferenceID, which the correspondence-status tool can then be called with. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_conditionREAD

Get a condition via GET /Condition. Read one Condition by name: the Transaction Type field it tests and the values it may be matched against. Conditions are how one Event Type selects between several Templates. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_conditionsREAD

List conditions via GET /Conditions. List every Condition defined on one Transaction Type, with the field each tests and its possible values. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_eventtypeREAD

Get an event type via GET /EventType. Read one Event Type by name, returning the Transaction Type it belongs to. An Event Type is the trigger name a generate call passes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_eventtypesREAD

List event types via GET /EventTypes. List the Event Types defined on one Transaction Type, each with its name. These are the trigger names a generate call may cite. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_recipientREAD

Get a recipient via GET /Recipient. Read one Recipient definition by name: the mail-merge expressions or hardcoded values Spondyr uses to pull an address, email, fax number or mobile number out of each submitted transaction. A Recipient is eligible for a delivery method only when the field that method needs carries a value. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_recipientsREAD

List recipients via GET /Recipients. List every Recipient defined on one Transaction Type with its full contact-field mapping. The read that answers 'who would this correspondence actually go to'. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_searchREAD

Get a search filter via GET /Search. Read one Search Filter by name: the Transaction Type it belongs to and the Tag expression it stamps onto generated correspondence. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_searchesREAD

List search filters via GET /Searches. List every Search Filter defined on one Transaction Type with its tag expression. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_spondyrREAD

Get correspondence status via GET /Spondyr. Read the status of one generate/deliver request by its ReferenceID: the overall StatusCode, and per rendered document the Template used, the content type, a download URI THAT IS VALID FOR ONLY 20 MINUTES, and each Recipient's delivery outcome. Set IncludeData to return the original data that was submitted. Passing ApplicationUserID, FirstName and LastName LOGS A VIEWER against the correspondence -- Spondyr records the view whether or not the returned URI is opened. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_spondyrsREAD

Search generated correspondence via GET /Spondyrs. Page through previously generated correspondence, optionally filtered by batch, by Event Type, or by a Search Filter name and value -- which is how correspondence is found by the calling system's own identifiers rather than by Spondyr's. Returns the same status objects the per-reference status tool returns, so the 20-minute URI lifetime applies here too. Page defaults to 1, PageSize to 10, and PageSize is capped at 250. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_templateREAD

Get a template via GET /Template. Read one Template by name: the Event Type it renders for, its content type, the base64 document itself, and the Recipients, Conditions and Search Filters attached to it -- including per-Recipient delivery settings such as the from-address, subject and body used for email. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_templatesREAD

List templates via GET /Templates. List every Template on one Transaction Type with its Event Type, content type, attached Recipients, Conditions and Search Filters. The read that answers what a given transaction would actually produce. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_transactiontypeREAD

Get a transaction type via GET /TransactionType. Read one Transaction Type by name: its sample JSON and the flattened, comma-delimited list of mail-merge field names derived from it. That field list is what a Template may reference, so this is the tool that answers 'which merge fields exist' before a Template is written. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_get_transactiontypesREAD

List transaction types via GET /TransactionTypes. List every Transaction Type on the Application, each with its sample JSON and flattened merge-field list. The read to make first when nothing is known about a subscription's configuration. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_batchWRITE

Generate and send a batch of correspondence via POST /Batch. Submit an array of transactions under one Event Type in a single call, each processed as its own correspondence. SharedData is merged into every item, which is how a common block of fields is sent once rather than repeated per row. Returns one batch ReferenceID. SENDS REAL CORRESPONDENCE FOR EVERY ITEM and spends the subscription's monthly allowance accordingly, unless IsGenerateOnly is true. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_conditionWRITE

Create a condition via POST /Condition. Create a Condition on a Transaction Type: a named rule over one flattened merge field, optionally with the list of possible values (newline-separated) offered when it is attached to a Template. The Condition does nothing until a Template references it with an operator and a comparison value. Omit the Condition property when creating. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_eventtypeWRITE

Create an event type via POST /EventType. Create an Event Type on a Transaction Type -- the named occurrence in the calling system that a generate call will cite to select Templates. Omit the EventType property when creating; Name is the new name. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_recipientWRITE

Create a recipient via POST /Recipient. Define a Recipient on a Transaction Type: who may receive correspondence and where each contact field comes from. Field values are either literal (a fixed archive address) or a merge expression in braces, such as {Customer_Email}, resolved per transaction. A Recipient must still be attached to a Template before anything is delivered to it. Omit the Recipient property when creating. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_retryWRITE

Retry failed correspondence via POST /Retry. Re-run the Templates that errored on an earlier request, named by its ReferenceID, optionally narrowing to specific Template names. Returns a new ReferenceID for the retry. This RE-SENDS correspondence and spends the subscription's allowance again for whatever it successfully renders. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_searchWRITE

Create a search filter via POST /Search. Create a Search Filter on a Transaction Type: a named tag whose value is a literal or a merge expression such as {OrderNumber}. Attached to a Template, it stamps that value onto every correspondence rendered, which is what makes correspondence findable later by the calling system's own identifiers. Omit the Search property when creating. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_spondyrWRITE

Generate and send correspondence via POST /Spondyr. Submit one transaction's data under an Event Type; Spondyr matches it against the Templates configured for that Event Type, renders each match, and delivers the result to the configured Recipients by email, SMS, fax or postal mail. Returns a ReferenceID for reading the status or delivering later. SENDS REAL CORRESPONDENCE AND SPENDS THE SUBSCRIPTION'S MONTHLY ALLOWANCE unless IsGenerateOnly is true, which renders and holds the correspondence for a later Deliver call. Data must match the shape defined for the Event Type's Transaction Type. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_templateWRITE

Create a template via POST /Template. Create a Template: the rendered output for an Event Type, built from content previously uploaded through the template-content tool, with the Recipients that receive it, the Conditions that gate it, and the Search Filters that tag it. ADDING A TEMPLATE CHANGES WHAT AN EXISTING EVENT TYPE PRODUCES: the next generate call for that Event Type renders and delivers this one too. Omit the Template property when creating. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_templatecontentWRITE

Upload template content via POST /TemplateContent. Upload a Word document as base64 and receive a ReferenceID for it. This is step one of creating or updating a Template: the content is uploaded here and the Template is then created referencing it. An uploaded piece of content CAN ONLY BE ATTACHED TO ONE TEMPLATE, so a second Template needs its own upload. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_post_transactiontypeWRITE

Create a transaction type via POST /TransactionType. Define a new Transaction Type -- a name plus a sample JSON document describing the data the calling system will submit. Spondyr flattens the sample into the mail-merge fields Templates may use, so the sample decides what every Template for this data can reference. Omit the TransactionType property when creating. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_conditionWRITE

Update a condition via PUT /Condition. Update a Condition's name, the field it tests, or its possible values. CHANGING THE FIELD CHANGES TEMPLATE SELECTION for every Template that references this Condition, which changes what future correspondence renders. Condition names the existing record; Name is what it becomes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_eventtypeWRITE

Update an event type via PUT /EventType. Rename an Event Type or move it to a different Transaction Type. RENAMING BREAKS CALLERS: the Event Type name is what a generate call passes, so any system still sending the old name stops matching Templates. EventType names the existing record; Name is what it becomes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_recipientWRITE

Update a recipient via PUT /Recipient. Update a Recipient's name or any of its contact-field mappings. CHANGING A MAPPING CHANGES WHERE FUTURE CORRESPONDENCE IS SENT, and clearing the field a delivery method depends on makes the Recipient ineligible for it -- Spondyr then marks those deliveries undeliverable rather than failing the call. Recipient names the existing record; Name is what it becomes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_searchWRITE

Update a search filter via PUT /Search. Update a Search Filter's name or its Tag expression. Correspondence ALREADY generated keeps the value it was stamped with, so a change here splits the searchable history into before and after. Search names the existing record; Name is what it becomes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_spondyrWRITE

Deliver generated correspondence via PUT /Spondyr. Deliver correspondence that an earlier generate call rendered and held (IsGenerateOnly), naming it by its ReferenceID. Optionally narrow which Templates are delivered, which of the originally determined Recipients receive them, and add NewRecipients that were not in the original run. THIS IS THE CALL THAT ACTUALLY SENDS: a held correspondence costs nothing until it is delivered. A NewRecipient with a TargetedDeliveryMethod but without the matching contact field is marked undeliverable rather than rejected. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_templateWRITE

Update a template via PUT /Template. Replace a Template's content, its Event Type, or its attached Recipients, Conditions and Search Filters. THE ARRAYS ARE THE WHOLE SET: a Recipient or Condition left out of the submitted arrays is no longer attached, so a partial update silently detaches the rest. Template names the existing record; Name is what it becomes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api
spondyr_put_transactiontypeWRITE

Update a transaction type via PUT /TransactionType. Rename a Transaction Type or replace its sample JSON. CHANGING THE SAMPLE CHANGES THE AVAILABLE MERGE FIELDS: a field dropped from the sample stops being available to every Template built on this Transaction Type, which affects what future correspondence renders. TransactionType names the existing record; Name is what it becomes. Spondyr's ceiling is the Subscription's monthly correspondence allowance rather than a request rate; the reference publishes no rate limit. Every response carries APIStatus (OK or ERROR) and ErrorMessage, so a failure may arrive inside a 200.

api

Put Spondyr behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.