Skip to main content

title: β€œUse Cases” description: β€œEnd-to-end integration flows for the Channel Manager API β€” built for marketplaces and multi-venue operators.” ---The Channel Manager API is scoped to your channel’s partner venues. The use cases below walk through the most common integration patterns with complete request/response examples. ---## Use Case 1 β€” Verify Your Channel & List Partner Venues Goal: Confirm your API key is valid and discover which venues (hosts) have granted your channel access.

Step 1 β€” Authenticate

curl --request GET \
  --url 'https://channels-service-alpha.fourvenues.com/auth' \
  --header 'X-Api-Key: <api-key>'
{
  "success": true,
  "data": {
    "message": "Authed",
    "channel": {
      "_id": "ch_abc123",
      "name": "My Marketplace",
      "slug": "my-marketplace",
      "hosts": [
        {
          "_id": "org_xyz789",
          "name": "Club Razzmatazz",
          "slug": "club-razzmatazz",
          "created_at": "2023-06-01T00:00:00.000Z"
        },
        {
          "_id": "org_def456",
          "name": "Sala Apolo",
          "slug": "sala-apolo",
          "created_at": "2024-01-15T00:00:00.000Z"
        }
      ]
    }
  }
}
The hosts array lists every venue that has authorized your channel. Use the _id values to filter events and resources by organization. ---## Use Case 2 β€” Browse Events & Ticket Rates Goal: Display an event catalog to end users with real-time pricing and availability.

Step 1 β€” List events across all partner venues

curl --request GET \
  --url 'https://channels-service-alpha.fourvenues.com/events?start_date=2024-09-01&end_date=2024-09-30' \
  --header 'X-Api-Key: <api-key>'
{
  "success": true,
  "data": [
    {
      "_id": "ev_abc123",
      "name": "Friday Night Sessions",
      "slug": "friday-night-sessions-2024-09-06",
      "description": "Weekly Friday party",
      "display_date": "2024-09-06T00:00:00.000Z",
      "start_date": "2024-09-06T22:00:00.000Z",
      "end_date": "2024-09-07T06:00:00.000Z",
      "organization_id": "org_xyz789",
      "image_url": "https://cdn.fourvenues.com/events/friday-night.jpg",
      "location_id": "loc_123",
      "ticket_rates": [...],
      "age": "18",
      "outfit": "smart casual"
    }
  ]
}
You can also filter by organization:
curl --request GET \
  --url 'https://channels-service-alpha.fourvenues.com/events?organization_id=org_xyz789' \
  --header 'X-Api-Key: <api-key>'

Step 2 β€” Get a specific event with full ticket rate detail

curl --request GET \
  --url 'https://channels-service-alpha.fourvenues.com/events/ev_abc123' \
  --header 'X-Api-Key: <api-key>'
Inside the response you’ll find ticket_rates with pricing and availability:
{
  "success": true,
  "data": {
    "_id": "ev_abc123",
    "name": "Friday Night Sessions",
    "ticket_rates": [
      {
        "_id": "tr_111",
        "name": "General Access",
        "slug": "general-access",
        "available": true,
        "min": 1,
        "max": 6,
        "current_price": {
          "_id": "price_early",
          "name": "Early Bird",
          "price": 1200,
          "valid_until": "2024-09-06T20:00:00.000Z",
          "fee_type": "percentage",
          "fee_quantity": 10,
          "includes": "1 Drink"
        },
        "availability": {
          "sold": 45,
          "available": 55
        },
        "supplements": [
          { "_id": "sup_1", "label": "Extra drink token", "price": 500 }
        ],
        "warranty": {
          "enabled": true,
          "percentage": 20,
          "hours": 24
        }
      }
    ]
  }
}
price is always in cents (e.g. 1200 = €12.00). Use current_price as the active price to show users β€” it reflects the currently valid pricing tier.
---## Use Case 3 β€” Create a Guest List Entry Goal: Add a contact to a guest list on behalf of a partner venue.

Step 1 β€” Get list rates for the event

curl --request GET \
  --url 'https://channels-service-alpha.fourvenues.com/list-rates?event_id=ev_abc123' \
  --header 'X-Api-Key: <api-key>'
{
  "success": true,
  "data": [
    {
      "_id": "lr_888",
      "name": "Free Entry List",
      "event_id": "ev_abc123",
      "requires_full_name": true,
      "requires_email": true,
      "requires_phone": false,
      "for": 2,
      "available": true
    }
  ]
}
Conditional required fields: The fields full_name, email and phone are required or optional depending on the list rate configuration (requires_full_name, requires_email, requires_phone). Always check these flags before building your form β€” submitting missing required fields returns a 422 error.

Step 2 β€” Create the list entry

curl --request POST \
  --url 'https://channels-service-alpha.fourvenues.com/lists' \
  --header 'X-Api-Key: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "rate_id": "lr_888",
    "event_id": "ev_abc123",
    "name": "Jane Doe",
    "email": "jane@example.com",
    "for": 2
  }'
{
  "success": true,
  "data": {
    "_id": "li_999abc",
    "code": "JDOE2024",
    "name": "Jane Doe",
    "email": "jane@example.com",
    "rate_id": "lr_888",
    "event_id": "ev_abc123",
    "for": 2,
    "enter": 0,
    "created_at": "2024-09-05T10:30:00.000Z"
  }
}
The code field is the unique identifier for check-in at the door. ---## Use Case 4 β€” Full Ticket Checkout Flow Goal: Let users purchase tickets through your marketplace, receive payment confirmation and handle refunds. See the complete step-by-step guide in the Creating a Checkout Process recipe. Here is a summary of the steps: 1. Fetch events + ticket rates β€” GET /events 2. Create checkout session β€” POST /tickets/checkout with redirect_url, error_url, ticket data and optional discount_code 3. Redirect user to payment_url from the response 4. Receive webhook β€” Fourvenues sends a payment.success event to your endpoint when payment completes 5. Verify webhook signature β€” see Webhook Authentication 6. Issue refund (if needed) β€” POST /tickets/{id}/refund

Minimal checkout request

curl --request POST \
  --url 'https://channels-service-alpha.fourvenues.com/tickets/checkout' \
  --header 'X-Api-Key: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "redirect_url": "https://myapp.com/payment/success",
    "error_url": "https://myapp.com/payment/error",
    "send_resources": true,
    "ticket_rate_id": "tr_111",
    "tickets": [
      {
        "email": "buyer@example.com",
        "full_name": "John Smith",
        "price_id": "price_early"
      }
    ]
  }'
{
  "success": true,
  "data": {
    "payment_id": "pay_xyz",
    "payment_url": "https://pay.fourvenues.com/pay_xyz",
    "conditions_changed": false,
    "tickets": [
      {
        "_id": "tkt_abc",
        "qr_code": "generated-qr-code"
      }
    ]
  }
}
If conditions_changed: true in the response, the price shown to the user no longer matches the active price. Display an updated summary before redirecting to payment.