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_conditionWRITEDelete 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.
spondyr_delete_eventtypeWRITEDelete 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.
spondyr_delete_recipientWRITEDelete 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.
spondyr_delete_searchWRITEDelete 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.
spondyr_delete_templateWRITEDelete 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.
spondyr_delete_transactiontypeWRITEDelete 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.
spondyr_get_applicationuserstubWRITECreate 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.
spondyr_get_batchREADGet 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.
spondyr_get_conditionREADGet 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.
spondyr_get_conditionsREADList 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.
spondyr_get_eventtypeREADGet 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.
spondyr_get_eventtypesREADList 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.
spondyr_get_recipientREADGet 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.
spondyr_get_recipientsREADList 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.
spondyr_get_searchREADGet 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.
spondyr_get_searchesREADList 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.
spondyr_get_spondyrREADGet 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.
spondyr_get_spondyrsREADSearch 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.
spondyr_get_templateREADGet 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.
spondyr_get_templatesREADList 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.
spondyr_get_transactiontypeREADGet 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.
spondyr_get_transactiontypesREADList 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.
spondyr_post_batchWRITEGenerate 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.
spondyr_post_conditionWRITECreate 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.
spondyr_post_eventtypeWRITECreate 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.
spondyr_post_recipientWRITECreate 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.
spondyr_post_retryWRITERetry 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.
spondyr_post_searchWRITECreate 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.
spondyr_post_spondyrWRITEGenerate 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.
spondyr_post_templateWRITECreate 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.
spondyr_post_templatecontentWRITEUpload 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.
spondyr_post_transactiontypeWRITECreate 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.
spondyr_put_conditionWRITEUpdate 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.
spondyr_put_eventtypeWRITEUpdate 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.
spondyr_put_recipientWRITEUpdate 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.
spondyr_put_searchWRITEUpdate 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.
spondyr_put_spondyrWRITEDeliver 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.
spondyr_put_templateWRITEUpdate 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.
spondyr_put_transactiontypeWRITEUpdate 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.
Often connected alongside
Put Spondyr behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.