Thanks.io · Schema

recipient-create

CompanyAIDirectMailAutomationAPI

Properties

Name Type Description
id integer
mailing_list_id integer
name string
company string
address string
address2 string
city string
province string State or Province
postal_code string
country string
dob string Date of Birth in ISO 8601 format (YYYY-MM-DD) or null if not set. If provided as MM/DD/YYYY in requests, it will be converted to ISO 8601 format.
anniversary string Can be used for house purchase anniversaries, move-in dates, or any recurring annual milestone. Anniversary date in ISO 8601 format (YYYY-MM-DD) or null if not set. If provided as MM/DD/YYYY in reques
email string
phone string
custom1 string Custom field for additional information about the recipient
custom2 string Custom field for additional information about the recipient
custom3 string Custom field for additional information about the recipient
custom4 string Custom field for additional information about the recipient
custom5 string Custom field for additional information about the recipient
custom6 string Custom field for additional information about the recipient
custom7 string Custom field for additional information about the recipient
custom8 string Custom field for additional information about the recipient
custom9 string Custom field for additional information about the recipient
custom10 string Custom field for additional information about the recipient
absentee_address object
absentee_city object
absentee_province object
absentee_postal_code object
mailing-list object The mailing list this recipient belongs to
created_at string
updated_at string
View JSON Schema on GitHub

JSON Schema

thanks-io-recipient-create-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/thanks-io/json-schema/thanks-io-recipient-create-schema.json",
  "title": "recipient-create",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/thanks-io-openapi.json#/components/schemas/recipient-create",
  "type": "object",
  "anyOf": [
    {
      "title": "Create Recipient by Address",
      "description": "Create a recipient by providing address details",
      "required": [
        "mailing_list_id",
        "address"
      ]
    },
    {
      "title": "Create Recipient by Email",
      "description": "Create a recipient by providing email address",
      "required": [
        "mailing_list_id",
        "email"
      ]
    }
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true
    },
    "mailing_list_id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "company": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "address2": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "province": {
      "type": "string",
      "description": "State or Province"
    },
    "postal_code": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "dob": {
      "type": "string",
      "description": "Date of Birth in ISO 8601 format (YYYY-MM-DD) or null if not set. If provided as MM/DD/YYYY in requests, it will be converted to ISO 8601 format."
    },
    "anniversary": {
      "type": "string",
      "description": "Can be used for house purchase anniversaries, move-in dates, or any recurring annual milestone.  Anniversary date in ISO 8601 format (YYYY-MM-DD) or null if not set. If provided as MM/DD/YYYY in requests, it will be converted to ISO 8601 format."
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "custom1": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom2": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom3": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom4": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom5": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom6": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom7": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom8": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom9": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "custom10": {
      "type": "string",
      "description": "Custom field for additional information about the recipient"
    },
    "absentee_address": {
      "$ref": "#/$defs/absentee-address"
    },
    "absentee_city": {
      "$ref": "#/$defs/absentee-city"
    },
    "absentee_province": {
      "$ref": "#/$defs/absentee-province"
    },
    "absentee_postal_code": {
      "$ref": "#/$defs/absentee-postal-code"
    },
    "mailing-list": {
      "readOnly": true,
      "allOf": [
        {
          "$ref": "#/$defs/mailing-list"
        }
      ],
      "description": "The mailing list this recipient belongs to"
    },
    "created_at": {
      "readOnly": true,
      "type": "string"
    },
    "updated_at": {
      "readOnly": true,
      "type": "string"
    }
  },
  "$defs": {
    "absentee-address": {
      "type": "string",
      "description": "The property (absentee) address for this recipient, such as a house an absentee owner owns, as opposed to where they get mail. Give either the whole address here, or the street line here with `absentee_city`, `absentee_province` and `absentee_postal_code`. When set, the `~ABSENTEE_STREET~`, `~ABSENTEE_FULL_ADDRESS~`, `~FULL_ADDRESS~` and `~STREET_VIEW~` image template variables, and `%ABSENTEE_STREET%` in messages, use this address instead of the mailing address. The mailer is still delivered to `address`. Include the city, state and ZIP so Street View finds the right property. It is stored and returned in its own `absentee_address` field, and also copied into `custom2` when that is empty, so templates that print `%CUSTOM2%` keep working; a `custom2` you send is never changed. The older convention of `custom1` = `absentee` with `custom2` = the property address is still accepted and copied into `absentee_address`."
    },
    "absentee-city": {
      "type": "string",
      "description": "City of the absentee (property) address. Requires `absentee_address` in the same request."
    },
    "absentee-postal-code": {
      "type": "string",
      "description": "ZIP or postal code of the absentee (property) address. Requires `absentee_address` in the same request."
    },
    "absentee-province": {
      "type": "string",
      "description": "State or province of the absentee (property) address. Requires `absentee_address` in the same request."
    },
    "mailing-list": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "user_id": {
          "type": "integer"
        },
        "sub_account_id": {
          "type": [
            "integer",
            "null"
          ]
        },
        "type": {
          "type": "string",
          "enum": [
            "csv",
            "manual",
            "map",
            "friends",
            "retarget",
            "leads",
            "zapier",
            "radius",
            "highlevel",
            "qrscans"
          ]
        },
        "description": {
          "type": "string"
        },
        "qrcode_url": {
          "type": [
            "string",
            "null"
          ]
        },
        "total_recipients": {
          "type": "integer"
        },
        "processed": {
          "type": "boolean"
        },
        "is_suppression_list": {
          "type": "boolean"
        },
        "total_scans": {
          "type": "integer"
        },
        "unique_scans": {
          "type": "integer"
        },
        "last_scan": {
          "type": [
            "string",
            "null"
          ]
        },
        "total_sends": {
          "type": "integer"
        },
        "last_send": {
          "type": [
            "string",
            "null"
          ]
        },
        "api_key": {
          "type": "string",
          "description": "API key that can be used to add recipients to this mailing list with thanks.io Webhooks"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at_diff": {
          "type": "string",
          "description": "Human-friendly relative time since creation"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/thanks-io-recipient-create"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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.