Skip to content
Zulu

API reference

Customers

The people and companies you invoice, with their emails, phones and addresses.

Customers

List contacts, or get one by id

GET/v1/contact

Needs the contact:read permission

Query parameters

  • idcustomer id

    contact_

  • querytext

    Up to 200 characters

  • limitnumber

    1–50, default 20

  • aftercustomer id

    contact_

  • beforecustomer id

    contact_

Request
curl https://api.zulu.ie/v1/contact \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID"
Example response200
Response · 200
{
  "data": [
    {
      "id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "first_name": "Aoife",
      "last_name": "Murphy",
      "company_name": "Globex Ireland Ltd",
      "vat_number": "IE9876543W",
      "email": [
        {
          "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
          "created_at": "2026-10-27T09:30:00.000Z",
          "updated_at": "2026-10-27T09:30:00.000Z",
          "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
          "name": "Main",
          "email": "accounts@globex.ie",
          "first_name": "Aoife",
          "last_name": "Murphy",
          "is_primary": true
        }
      ],
      "phone": [
        {
          "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
          "created_at": "2026-10-27T09:30:00.000Z",
          "updated_at": "2026-10-27T09:30:00.000Z",
          "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
          "name": "Main",
          "phone": "+353 1 234 5678",
          "is_primary": true
        }
      ],
      "address": [
        {
          "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
          "created_at": "2026-10-27T09:30:00.000Z",
          "updated_at": "2026-10-27T09:30:00.000Z",
          "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
          "name": "Main",
          "address_1": "Unit 4, Docklands Innovation Park",
          "address_2": null,
          "city": "Dublin 1",
          "county": "Dublin",
          "eircode": "D01 X2Y3",
          "country": "Ireland",
          "is_primary": true
        }
      ]
    }
  ],
  "has_more": false
}

Create a contact

POST/v1/contact

Needs the contact:write permission

Body

  • first_nametext

    Up to 200 characters

  • last_nametext

    Up to 200 characters

  • company_nametext

    Up to 200 characters

  • vat_numbertext

    Up to 30 characters

  • emaillist of objects
    5 fields inside
    • nametextrequired

      Up to 200 characters

    • emailemailrequired

      Up to 254 characters

    • first_nametext

      Up to 200 characters

    • last_nametext

      Up to 200 characters

    • is_primarytrue or false
  • phonelist of objects
    3 fields inside
    • nametextrequired

      Up to 200 characters

    • phonetextrequired

      Up to 50 characters

    • is_primarytrue or false
  • addresslist of objects
    8 fields inside
    • nametextrequired

      Up to 200 characters

    • address_1text

      Up to 200 characters

    • address_2text

      Up to 200 characters

    • citytext

      Up to 200 characters

    • countytext

      Up to 200 characters

    • eircodetext

      Up to 200 characters

    • countrytext

      Up to 200 characters

    • is_primarytrue or false
Request
curl -X POST https://api.zulu.ie/v1/contact \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Globex Ireland Ltd",
    "first_name": "Aoife",
    "last_name": "Murphy",
    "vat_number": "IE9876543W",
    "email": [
      {
        "name": "Accounts",
        "email": "accounts@globex.ie",
        "is_primary": true
      }
    ],
    "address": [
      {
        "name": "Head office",
        "address_1": "Unit 4, Docklands Innovation Park",
        "city": "Dublin 1",
        "eircode": "D01 X2Y3",
        "country": "Ireland",
        "is_primary": true
      }
    ]
  }'
Example response201
Response · 201
{
  "id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "first_name": "Aoife",
  "last_name": "Murphy",
  "company_name": "Globex Ireland Ltd",
  "vat_number": "IE9876543W",
  "email": [
    {
      "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "email": "accounts@globex.ie",
      "first_name": "Aoife",
      "last_name": "Murphy",
      "is_primary": true
    }
  ],
  "phone": [
    {
      "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "phone": "+353 1 234 5678",
      "is_primary": true
    }
  ],
  "address": [
    {
      "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "address_1": "Unit 4, Docklands Innovation Park",
      "address_2": null,
      "city": "Dublin 1",
      "county": "Dublin",
      "eircode": "D01 X2Y3",
      "country": "Ireland",
      "is_primary": true
    }
  ]
}

Update a contact

PATCH/v1/contact

Needs the contact:write permission

Body

  • idcustomer idrequired
  • first_nametext

    Up to 200 characters

  • last_nametext

    Up to 200 characters

  • company_nametext

    Up to 200 characters

  • vat_numbertext

    Up to 30 characters

Request
curl -X PATCH https://api.zulu.ie/v1/contact \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d"
  }'
Example response200
Response · 200
{
  "id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "first_name": "Aoife",
  "last_name": "Murphy",
  "company_name": "Globex Ireland Ltd",
  "vat_number": "IE9876543W",
  "email": [
    {
      "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "email": "accounts@globex.ie",
      "first_name": "Aoife",
      "last_name": "Murphy",
      "is_primary": true
    }
  ],
  "phone": [
    {
      "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "phone": "+353 1 234 5678",
      "is_primary": true
    }
  ],
  "address": [
    {
      "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "address_1": "Unit 4, Docklands Innovation Park",
      "address_2": null,
      "city": "Dublin 1",
      "county": "Dublin",
      "eircode": "D01 X2Y3",
      "country": "Ireland",
      "is_primary": true
    }
  ]
}

Delete a contact

DELETE/v1/contact

Needs the contact:delete permission

Body

  • idcustomer idrequired
Request
curl -X DELETE https://api.zulu.ie/v1/contact \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d"
  }'

Returns 204 with no body.

Email addresses

List email addresses, or get one by id

GET/v1/email

Needs the email:read permission

Query parameters

  • idemail id

    email_

  • querytext

    Up to 200 characters

  • limitnumber

    1–50, default 20

  • afteremail id

    email_

  • beforeemail id

    email_

  • contact_idcustomer id

    contact_

Request
curl https://api.zulu.ie/v1/email \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID"
Example response200
Response · 200
{
  "data": [
    {
      "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "email": "accounts@globex.ie",
      "first_name": "Aoife",
      "last_name": "Murphy",
      "is_primary": true
    }
  ],
  "has_more": false
}

Create an email address

POST/v1/email

Needs the email:write permission

Body

  • contact_idcustomer id
  • nametextrequired

    Up to 200 characters

  • emailemailrequired

    Up to 254 characters

  • first_nametext

    Up to 200 characters

  • last_nametext

    Up to 200 characters

  • is_primarytrue or false
Request
curl -X POST https://api.zulu.ie/v1/email \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Main",
    "email": "accounts@globex.ie"
  }'
Example response201
Response · 201
{
  "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "name": "Main",
  "email": "accounts@globex.ie",
  "first_name": "Aoife",
  "last_name": "Murphy",
  "is_primary": true
}

Update an email address

PATCH/v1/email

Needs the email:write permission

Body

  • idemail idrequired
  • nametext

    Up to 200 characters

  • emailemail

    Up to 254 characters

  • first_nametext

    Up to 200 characters

  • last_nametext

    Up to 200 characters

  • is_primarytrue or false
Request
curl -X PATCH https://api.zulu.ie/v1/email \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b"
  }'
Example response200
Response · 200
{
  "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "name": "Main",
  "email": "accounts@globex.ie",
  "first_name": "Aoife",
  "last_name": "Murphy",
  "is_primary": true
}

Delete an email address

DELETE/v1/email

Needs the email:delete permission

Body

  • idemail idrequired
Request
curl -X DELETE https://api.zulu.ie/v1/email \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "email_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b"
  }'

Returns 204 with no body.

Phone numbers

List phone numbers, or get one by id

GET/v1/phone

Needs the phone:read permission

Query parameters

  • idphone id

    phone_

  • querytext

    Up to 200 characters

  • limitnumber

    1–50, default 20

  • afterphone id

    phone_

  • beforephone id

    phone_

  • contact_idcustomer id

    contact_

Request
curl https://api.zulu.ie/v1/phone \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID"
Example response200
Response · 200
{
  "data": [
    {
      "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "phone": "+353 1 234 5678",
      "is_primary": true
    }
  ],
  "has_more": false
}

Create a phone number

POST/v1/phone

Needs the phone:write permission

Body

  • contact_idcustomer id
  • nametextrequired

    Up to 200 characters

  • phonetextrequired

    Up to 50 characters

  • is_primarytrue or false
Request
curl -X POST https://api.zulu.ie/v1/phone \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Main",
    "phone": "+353 1 234 5678"
  }'
Example response201
Response · 201
{
  "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "name": "Main",
  "phone": "+353 1 234 5678",
  "is_primary": true
}

Update a phone number

PATCH/v1/phone

Needs the phone:write permission

Body

  • idphone idrequired
  • nametext

    Up to 200 characters

  • phonetext

    Up to 50 characters

  • is_primarytrue or false
Request
curl -X PATCH https://api.zulu.ie/v1/phone \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b"
  }'
Example response200
Response · 200
{
  "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "name": "Main",
  "phone": "+353 1 234 5678",
  "is_primary": true
}

Delete a phone number

DELETE/v1/phone

Needs the phone:delete permission

Body

  • idphone idrequired
Request
curl -X DELETE https://api.zulu.ie/v1/phone \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "phone_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b"
  }'

Returns 204 with no body.

Addresses

List addresses, or get one by id

GET/v1/address

Needs the address:read permission

Query parameters

  • idaddress id

    address_

  • querytext

    Up to 200 characters

  • limitnumber

    1–50, default 20

  • afteraddress id

    address_

  • beforeaddress id

    address_

  • contact_idcustomer id

    contact_

Request
curl https://api.zulu.ie/v1/address \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID"
Example response200
Response · 200
{
  "data": [
    {
      "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
      "created_at": "2026-10-27T09:30:00.000Z",
      "updated_at": "2026-10-27T09:30:00.000Z",
      "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
      "name": "Main",
      "address_1": "Unit 4, Docklands Innovation Park",
      "address_2": null,
      "city": "Dublin 1",
      "county": "Dublin",
      "eircode": "D01 X2Y3",
      "country": "Ireland",
      "is_primary": true
    }
  ],
  "has_more": false
}

Create an address

POST/v1/address

Needs the address:write permission

Body

  • contact_idcustomer id
  • nametextrequired

    Up to 200 characters

  • address_1text

    Up to 200 characters

  • address_2text

    Up to 200 characters

  • citytext

    Up to 200 characters

  • countytext

    Up to 200 characters

  • eircodetext

    Up to 200 characters

  • countrytext

    Up to 200 characters

  • is_primarytrue or false
Request
curl -X POST https://api.zulu.ie/v1/address \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Main"
  }'
Example response201
Response · 201
{
  "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "name": "Main",
  "address_1": "Unit 4, Docklands Innovation Park",
  "address_2": null,
  "city": "Dublin 1",
  "county": "Dublin",
  "eircode": "D01 X2Y3",
  "country": "Ireland",
  "is_primary": true
}

Update an address

PATCH/v1/address

Needs the address:write permission

Body

  • idaddress idrequired
  • nametext

    Up to 200 characters

  • address_1text

    Up to 200 characters

  • address_2text

    Up to 200 characters

  • citytext

    Up to 200 characters

  • countytext

    Up to 200 characters

  • eircodetext

    Up to 200 characters

  • countrytext

    Up to 200 characters

  • is_primarytrue or false
Request
curl -X PATCH https://api.zulu.ie/v1/address \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b"
  }'
Example response200
Response · 200
{
  "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b",
  "created_at": "2026-10-27T09:30:00.000Z",
  "updated_at": "2026-10-27T09:30:00.000Z",
  "contact_id": "contact_8a3e2c1d-4b5f-4e6a-9c7d-1e2f3a4b5c6d",
  "name": "Main",
  "address_1": "Unit 4, Docklands Innovation Park",
  "address_2": null,
  "city": "Dublin 1",
  "county": "Dublin",
  "eircode": "D01 X2Y3",
  "country": "Ireland",
  "is_primary": true
}

Delete an address

DELETE/v1/address

Needs the address:delete permission

Body

  • idaddress idrequired
Request
curl -X DELETE https://api.zulu.ie/v1/address \
  -H "Authorization: Bearer $ZULU_API_KEY" \
  -H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "address_3f2b8c1e-7a6d-4e5f-9b0a-1c2d3e4f5a6b"
  }'

Returns 204 with no body.