openapi: 3.2.0 info: title: Reachdesk Bulk Sends API version: '1.0' servers: - url: https://app.reachdesk.com/api/v2 security: - sec0: [] tags: - name: Bulk Sends paths: /bulk_sends: post: summary: Bulk Send description: 'Trigger a gift send from a campaign to many recipients in a single request. This is the bulk counterpart to Trigger Campaign. Instead of one recipient per call, you send a list of recipients and the request is processed asynchronously: the endpoint responds immediately with a bulk send `id`, and the individual gifts are created in the background. As with the single trigger, each gift is built from the campaign''s own configuration — you don''t send the gift-card amount, bundle items, note template, or marketplace product. You only provide the recipients and the sender; everything else comes from the campaign. It works for every campaign type (gift card, note, bundle, marketplace).' operationId: bulk-create requestBody: content: application/json: schema: type: object required: - request_id - campaign_id - sender - recipients properties: request_id: type: string description: Random uniquely identifier generated for each request campaign_id: type: integer description: ID of the campaign to send from format: int32 sender: type: string description: Email of the platform user the send is made on behalf of. Must be a user in your organization with access to the campaign. recipients: type: object description: The recipients to send to. Max 5000 per request. properties: provider: type: string description: Source of the contact (optional) enum: - salesforce - msdynamics - hubspotcrm - salesloft - influitive - marketo - hibob - outreach provider_contact_id: type: string description: ID of the contact in the source system (optional) provider_contact_type: type: string description: Type of contact in the source system (optional) enum: - contact - lead - employee first_name: type: string description: First name of the recipient last_name: type: string description: Last name of the recipient email: type: string description: Email of the recipient company_name: type: string description: Name of the recipient's company street_address_1: type: string description: First line of the recipient's address (only used in physical sends) street_address_2: type: string description: Second line of the recipient's address (only used in physical sends) city: type: string description: Recipient's city state: type: string description: Recipient's state zipcode: type: string description: Recipient's zipcode/post code country: type: string description: Recipient's 2-letter country code (ISO 3166), e.g. US phone_number: type: string description: Recipient's phone number role: type: string description: Recipient's role tax_id: type: string description: Recipient's Tax Id payment_currency: type: string description: Currency used to pay for the sends. Applied to every recipient unless overridden per recipient. enum: - AUD - CAD - DKK - EUR - GBP - INR - NOK - SEK - USD payment_wallet_type: type: string description: Which wallet pays for the sends default: User enum: - User - Team team_name: type: string description: Team whose wallet to use when payment_wallet_type is Team. send_method: type: string description: email sends the gift by email; link creates a claim link instead. default: email enum: - email - link confirm_address: type: boolean description: Whether to send an address-confirmation email before shipping. When omitted, the campaign's own setting is used. packaging_notes: type: string description: Packaging notes for the send. bundle_handwritten_note: type: string description: Text for the handwritten note (bundle campaigns only). custom_attributes: type: array description: Custom attributes applied to the gift notes/emails. items: properties: name: type: string description: Name of the custom attribute value: type: string description: Value for the custom attribute required: - name - value type: object responses: '202': description: '202' content: application/json: examples: Result: value: "{\n \"id\": 98123\n}" schema: type: object properties: id: type: integer example: 98123 default: 0 '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Parameter \\\"send_method\\\" must be \\\"link\\\" or \\\"email\\\"\"\n}" schema: type: object properties: message: type: string example: Parameter "send_method" must be "link" or "email" '401': description: '401' content: text/plain: examples: Result: value: '' '404': description: '404' content: text/plain: examples: Result: value: "{\n \"message\": \"This campaign does not exist\"\n}" schema: type: object properties: message: type: string example: This campaign does not exist '422': description: '422' content: text/plain: examples: Result: value: "{\n \"message\": \"This campaign is not active\"\n}" schema: type: object properties: message: type: string example: This campaign is not active deprecated: false x-readme: code-samples: - language: curl code: "curl --request POST \\\n --url https://app.reachdesk.com/api/v2/bulk_sends \\\n --header 'Authorization: Bearer ' \\\n --header 'Content-Type: application/json' \\\n --data '{\n \"request_id\": \"0e6f1a4c-2d1b-4d0e-9a9e-3d3b0a1c2f5e\",\n \"campaign_id\": 12345,\n \"sender\": \"rep@your-company.com\",\n \"payment_currency\": \"GBP\",\n \"payment_wallet_type\": \"User\",\n \"send_method\": \"email\",\n \"recipients\": [\n {\n \"first_name\": \"Ana\",\n \"last_name\": \"Silva\",\n \"email\": \"ana@acme.com\",\n \"company_name\": \"Acme\",\n \"street_address_1\": \"45 Rockefeller Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"zipcode\": \"10111\",\n \"country\": \"US\"\n },\n {\n \"first_name\": \"Rui\",\n \"last_name\": \"Costa\",\n \"email\": \"rui@acme.com\",\n \"sender\": \"other-rep@your-company.com\"\n }\n ]\n }'" samples-languages: - curl tags: - Bulk Sends components: securitySchemes: sec0: type: apiKey name: Authorization in: header x-bearer-format: bearer x-readme: headers: [] explorer-enabled: true proxy-enabled: true x-readme-fauxas: true