Cardly
MARKETING · MARKETING
Real greeting cards and direct mail sent from the account they connected.
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.
cardly_delete_art_by_idWRITEDelete Artwork via DELETE /art/{id}. Delete a piece of artwork owned by your organisation.
cardly_delete_contact_lists_by_idWRITEDelete Contact List via DELETE /contact-lists/{id}. Delete a contact list, disabling any automations linked to it.
cardly_delete_contact_lists_by_listid_contactsWRITEDelete Contact by Email or External ID via DELETE /contact-lists/{listId}/contacts. Delete a contact identified by a body field rather than by a path id, disabling any automations linked to it. Matching is performed in order of external ID then email address, and at least one must be supplied. Cardly titles this operation and the by-id delete identically; the name here follows the vendor's own convention for the invitation and user pairs of the same shape.
cardly_delete_contact_lists_by_listid_contacts_by_idWRITEDelete Contact via DELETE /contact-lists/{listId}/contacts/{id}. Delete a contact, disabling any automations linked to it.
cardly_delete_invitationsWRITEDelete Invitation by Email via DELETE /invitations. Delete an invitation by email address, immediately invalidating it for acceptance.
cardly_delete_invitations_by_idWRITEDelete Invitation via DELETE /invitations/{id}. Delete an invitation by unique ID address, immediately invalidating it for acceptance.
cardly_delete_usersWRITEDelete User by Email via DELETE /users. Delete a user by email address, immediately revoking their access to your organisation portal. **Please note:** Access can not be removed for users with `administrator` privileges on your account. These must be removed via your portal directly.
cardly_delete_users_by_idWRITEDelete user via DELETE /users/{id}. Delete a user by unique ID address, immediately revoking their access to your organisation portal. **Please note:** Access can not be removed for users with `administrator` privileges on your account. These must be removed via your portal directly.
cardly_delete_webhooks_by_idWRITEDelete Webhook via DELETE /webhooks/{id}. Delete a given webhook and cease all activity and event subscriptions immediately.
cardly_get_account_balanceREADRetrieve Account Balance via GET /account/balance. This endpoint allows you to quickly query the current balance for your organisation. Where relevant, API calls which consume or have the potential to consume balance will return your organisation's balance in the return structure for convenience. This will allow you to easily determine if additional balance should be added to your account if not utilising the automatic account topup feature.
cardly_get_account_credit_historyREADList Credit History via GET /account/credit-history. Retrieve a section of balance history records pertaning to your organistaion. This will list both credits and debits, along with links / reasons for each, where applicable. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_account_gift_credit_historyREADList Gift Credit History via GET /account/gift-credit-history. Retrieve a section of gift credit history records pertaning to your organistaion. This will list both credits and debits, along with links / reasons for each, where applicable. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_artREADList Artwork via GET /art. Retrieve the currently available artwork for your organisation. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_art_by_idREADRetrieve Artwork via GET /art/{id}. Retrieve information on a specific piece of artwork.
cardly_get_contact_listsREADList Contact Lists via GET /contact-lists. Retrieve active contact lists for your organisation.
cardly_get_contact_lists_by_idREADRetrieve Contact List via GET /contact-lists/{id}. Retrieve information on a specific contact list.
cardly_get_contact_lists_by_listid_contactsREADList Contacts via GET /contact-lists/{listId}/contacts. Retrieve active contacts in a given list.
cardly_get_contact_lists_by_listid_contacts_by_idREADRetrieve Contact via GET /contact-lists/{listId}/contacts/{id}. Retrieve information on a specific contact from a given list, identified by Cardly's unique identifier for the record.
cardly_get_contact_lists_by_listid_contacts_findREADSearch Contacts via GET /contact-lists/{listId}/contacts/find. Retrieve information on a specific contact from a given list, searching for the contact by an email address or previously supplied external identifier.
cardly_get_doodlesREADList Doodles via GET /doodles. Retrieve your currently available doodles. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_fontsREADList Fonts via GET /fonts. Retrieve your currently available fonts. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_invitationsREADList Invitations via GET /invitations. Retrieve active invitations for your organisation. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_invitations_by_idREADRetrieve Invitation via GET /invitations/{id}. Retrieve information on a specific invitation, identified by Cardly's unique identifier for the record.
cardly_get_invitations_findREADFind Invitation via GET /invitations/find. Retrieve information on a specific invitation, searching by a provided email address.
cardly_get_mediaREADList Media via GET /media. Retrieve the currently available media sizes for product artwork. This request accepts standard pagination options `limit, offset` along with the following additional filters:
cardly_get_ordersREADList Orders via GET /orders. Retrieve orders placed by your organisation.
cardly_get_orders_by_idREADRetrieve Order via GET /orders/{id}. Retrieve information on a specific order.
cardly_get_templatesREADList Templates via GET /templates. Retrieve your currently available templates.
cardly_get_usersREADList Users via GET /users. Retrieve active users for your organisation.
cardly_get_users_by_idREADRetrieve User via GET /users/{id}. Retrieve information on a specific user, identified by Cardly's unique identifier for the record.
cardly_get_users_findREADFind User via GET /users/find. Retrieve information on a specific user, searching by a provided email address.
cardly_get_webhooksREADList Webhooks via GET /webhooks. Retrieve any active or disabled webhooks set up for your organisation.
cardly_get_webhooks_by_idREADGet Webhook Details via GET /webhooks/{id}. Get details on an existing webhook.
cardly_get_writing_stylesREADList Writing Styles via GET /writing-styles. Retrieve your currently available writing styles.
cardly_post_artWRITECreate Artwork via POST /art. Add a new piece of artwork.
cardly_post_art_by_idWRITEEdit Artwork via POST /art/{id}. Update a piece of artwork with new descriptors or images. All parameters are optional, and only supplied parameters will be updated.
cardly_post_contact_listsWRITECreate Contact List via POST /contact-lists. Add a new contact list, optionally with custom fields.
cardly_post_contact_lists_by_idWRITEUpdate Contact List via POST /contact-lists/{id}. Rename a contact list, change its description, or add, edit and remove its custom fields. Cardly's own 2.1.0 document titles this operation "Create Contact List" and describes it as adding a new list, but both lines are copied from `POST /contact-lists`: this operation's own path parameter, `fields` property and 200 response all describe an UPDATE of the list named by {id}. Its request body is described by Cardly's 2.1.0 contract, which 2.2.0 retired -- the route is live (measured) but unversioned, so its accepted fields could change without notice.
cardly_post_contact_lists_by_listid_contactsWRITECreate Contact via POST /contact-lists/{listId}/contacts. Add a new contact to a given list. **Please note:** contacts added via API calls will be checked for uniqueness based on your externalId and email fields, if supplied. If a contact already exists for one of these fields the addition operation will be rejected.
cardly_post_contact_lists_by_listid_contacts_by_idWRITEEdit Contact via POST /contact-lists/{listId}/contacts/{id}. Edit an existing contact, providing updated information for the contact record.
cardly_post_contact_lists_by_listid_contacts_syncWRITESync Contact via POST /contact-lists/{listId}/contacts/sync. Sync a contact based on an external ID or email address. If a matching contact does not exist, a new one is created, otherwise existing contact records are updated. Previously removed contacts will be reactivated if they match provided details. Contact matching is performed in order of matching external ID or email address. At least one of these details must be provided, and the first matching contact (if found) is used for update operations.
cardly_post_echoWRITEEcho Request via POST /echo. The `echo` endpoint will take any parameters, body structure and headers and return them to you in a JSON structure. You can use this endpoint to quickly debug other requests, validate your authentication, idempotency and other API features without any impact on your account or any risk of credit usage. This endpoint is special in that it will accept **any** HTTP verb and still provide an output to the caller. **Please note:** you must still authenticate to this endpoint and you'll receive appropriate error responses if your API key is invalid or not supplied.
cardly_post_invitationsWRITECreate Invitation via POST /invitations. Send an invitation to use your organisation portal, if the provided email address doesn't already have access.
cardly_post_invitations_resendWRITEResend Invitation by Email via POST /invitations/resend. Resend an invitation to a specified email address if that invitation has not yet been accepted.
cardly_post_invitations_resend_by_idWRITEResend Invitation via POST /invitations/resend/{id}. Resend an invitation identified by Cardly's unique ID.
cardly_post_orders_placeWRITEPlace Order via POST /orders/place. The `place` endpoint allows you to place an order for one or more items, being delivered to one or more distinct recipients. Generally, we recommend that individual orders are created for individual recipients to minimise potential validation and other rejection issues. Note that you must have sufficient credit on your account to place your order. If you have insufficient credit, a `402` response will be returned with detail on the required credit cost and your current balance.
cardly_post_orders_previewWRITEGenerate Preview via POST /orders/preview. The `preview` endpoint allows you to generate a quick, low-quality, watermarked preview document for a given piece of card art and template, along with passed user data. You will also be provided with delivery window estimates and a projected credit cost for the order based on your passed data. This call is intentionally nearly identical to the `PlaceOrder` function to facilitate testing and a quick migration to ordering. The main difference between these calls is a `PlaceOrder` request permits multiple line items with differing data and settings, while `Preview` deals with only a single card at a time.
cardly_post_webhooksWRITECreate Webhook via POST /webhooks. Create a new webhook for the specified targetUrl. Webhooks allow for near-realtime notifications of events within your Cardly account.
cardly_post_webhooks_by_idWRITEUpdate Webhook via POST /webhooks/{id}. Update a webhook with one or more changes based on the passed properties. Note that changes to the targetUrl or status are immediate, and will update where postbacks are sent for any postbacks queued for retry, or cease sending postbacks if *disabled* is true.
Often connected alongside
Put Cardly behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.