Skip to main content
GET
/
api
/
v1
/
customer
{
  "customers": [
    {
      "id": 123,
      "customer_handle": "<string>",
      "full_name": "<string>",
      "email": "<string>",
      "phone_number": "<string>",
      "address": "<string>",
      "address2": "<string>",
      "postal_code": "<string>",
      "city": "<string>",
      "social_security_number": "<string>",
      "company_name": "<string>",
      "invoice_notes": "<string>",
      "delivery_detail": "<string>",
      "pickAndPack_notes": "<string>",
      "auto_send_invoices": true,
      "date_time": "<string>",
      "merchant_id": 123
    }
  ]
}

Endpoint

GET /api/v1/customer/
Returns a list of all customer objects for the authenticated merchant.
This endpoint returns all customers without pagination. For merchants with large customer bases, pagination support is planned for future releases.

Authentication

Session cookie obtained from authentication

Query Parameters

Query parameters for filtering are not currently supported but are planned for future releases. See the proposed enhancements below.

Response

customers
array
Array of customer objects

Request Example

curl -X GET https://api.journey.io/api/v1/customer/ \
  -H "Cookie: sessionid=your_session_id"

Response Example

[
  {
    "id": 42,
    "customer_handle": "cust-journey-42",
    "full_name": "Jón Jónsson",
    "email": "[email protected]",
    "phone_number": "7771234",
    "address": "Laugavegur 1",
    "address2": "",
    "postal_code": "101",
    "city": "Reykjavík",
    "social_security_number": "010190-1234",
    "company_name": "",
    "invoice_notes": "",
    "delivery_detail": "Ring doorbell",
    "pickAndPack_notes": "",
    "auto_send_invoices": false,
    "date_time": "2025-10-09T14:23:45Z",
    "merchant_id": 1
  },
  {
    "id": 43,
    "customer_handle": "cust-journey-43",
    "full_name": "Anna Sigurðardóttir",
    "email": "[email protected]",
    "phone_number": "7775678",
    "address": "Hverfisgata 12",
    "address2": "Apt 4B",
    "postal_code": "101",
    "city": "Reykjavík",
    "social_security_number": "150285-2345",
    "company_name": "Example Ltd",
    "invoice_notes": "Net 30 terms",
    "delivery_detail": "Leave at reception",
    "pickAndPack_notes": "Fragile items",
    "auto_send_invoices": true,
    "date_time": "2025-10-08T10:15:30Z",
    "merchant_id": 1
  }
]

Error Responses

{
  "detail": "Authentication credentials were not provided."
}
Cause: No valid session cookie providedSolution: Ensure the customer is authenticated and session cookie is included
{
  "detail": "You do not have permission to perform this action."
}
Cause: Session valid but user doesn’t have required permissionsSolution: Verify the user has appropriate access rights

Use Cases

Display Customer List

async function fetchCustomers() {
  const response = await fetch('https://api.journey.io/api/v1/customer/', {
    credentials: 'include'
  });

  const customers = await response.json();

  // Display in table
  customers.forEach(customer => {
    console.log(`${customer.full_name} (${customer.email})`);
  });
}

Search by Email (Client-Side)

Since server-side filtering isn’t available yet, you can filter results client-side:
def find_customer_by_email(email):
    response = requests.get(
        "https://api.journey.io/api/v1/customer/",
        cookies={"sessionid": session_id}
    )

    customers = response.json()

    # Client-side filtering
    matches = [c for c in customers if c['email'].lower() == email.lower()]
    return matches[0] if matches else None

Export to CSV

import csv

response = requests.get(
    "https://api.journey.io/api/v1/customer/",
    cookies={"sessionid": session_id}
)

customers = response.json()

with open('customers.csv', 'w', newline='') as csvfile:
    fieldnames = ['id', 'full_name', 'email', 'phone_number', 'city']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    for customer in customers:
        writer.writerow({k: customer.get(k) for k in fieldnames})

Coming Soon

⚠️ Proposed Enhancements - Not yet implemented
The following query parameters are planned for future releases:
Search customers by name, email, or phone number
city
string
Filter by city
postal_code
string
Filter by postal code
has_active_subscription
boolean
Filter customers with active subscriptions
limit
integer
Number of results per page (pagination)
offset
integer
Offset for pagination