The Tangilla public events feed returns a structured JSON list of upcoming classes and events that you can display on a website, blog, or app. You can fetch it from the browser or your server, then render cards, calendars, or lists that match your brand. This guide explains how to consume the feed, what each field means, and how to handle time zones, capacity, pricing, and virtual locations with confidence.
The feed is a public, read-only JSON endpoint. Each response contains an array of event objects. You do not need authentication. Cache responses for performance and reliability, and always handle nulls and optional fields because not every event uses every property.
Below are the fields present in the example you provided. Each item explains how to use it in a UI or integration.
event_id: Unique identifier for the event.course_id: Identifier for the related course, when applicable. Use it to group multiple classes for one course.event_type: Category of the item, typically class or event. Drive filters and badges with this value.event_title: Public title of the offering. Display it as the card or list headline.event_description: HTML description. Render it safely and keep full text in a modal or detail view.ce: Indicates whether the event provides continuing education. Show a CE badge when true.ce_credits: Number of CE credits. Place this near the time or in a details row.ce_type_name: Primary CE type label. Show it with the credit count for clarity.secondary_ce_credits: Credits for a secondary CE type. Display only when it exists.secondary_ce_type_name: Secondary CE type label. Pair it with secondary_ce_credits.member_price: Price for members. Prefer this for member-facing displays.preferred_pricing_label: Label for the pricing program, for example "Member/Subscriber Pricing." Show it near the price.preferred_pricing_type: Kind of pricing program, for example "Association." Use it to clarify eligibility.price: Standard or non-member price. Show it when your audience includes non-members.early_bird_pricing: Flag for early pricing. If true, show the discounted price and cutoff date.early_bird_price: Early bird price for non-members. Show it until the cutoff date.early_bird_member_price: Early bird price for members. Use it when you have a member audience.early_bird_end_date: ISO cutoff for early pricing. Disable or switch pricing after this timestamp.time_zone: IANA style or common label like "US/Central." Convert schedule times or label them clearly.event_date: Event date in YYYY-MM-DD. Use it for grouping and sorting.start_time: Start time in HH:MM:SS. Combine with event_date for scheduling logic.end_time: End time in HH:MM:SS. Use it to show the full time range.registration_close: ISO timestamp when online registration ends. Disable the register button after this time.instructor_name: Primary instructor display name. Show it on the card and in the modal.instructor2_name: Secondary instructor display name. Show it only when it exists.course_number: Provider or regulator reference number. Keep it in details and CE transcripts.provider_name: Provider or school name. Show it in a small line under the title.provider_number: Provider identifier. Keep it in details for auditing.location: Venue name or virtual venue label, for example "ABoR On-Air." Show this on the card.location_address: Address for in-person events. Offer a "Get directions" link when present.location_type: virtual, in-person, or hybrid. Use it to show a clear location badge.location_notes: Additional venue details like parking or entry rules. Place it in the modal.room: Room name or number. Show it for in-person events when it helps attendees.room_notes: Room specific instructions. Keep it in the modal.capacity: Maximum seats. Use it with registered to compute seats remaining.registered: Current registration count. Helps drive urgency and waitlist logic.member_only: Restricts enrollment to members. Show a "Members only" badge when true.online_registration: True when self-service registration is available. Hide the register button when false.registration_link: URL for sign-up. Make this your primary call to action.tags: Array of labels for filtering and discovery. Use it to build simple filters.course_image: Image URL for the course. Use it for thumbnails or banners with alt text.instructor_image: Primary instructor image URL. Show it next to the instructor name when space allows.instructor2_image: Secondary instructor image URL. Display only when present.instructor_bio: HTML bio for the primary instructor. Render it in the modal or detail page.instructor2_bio: HTML bio for the secondary instructor. Render it when present.last_updated: ISO timestamp of the most recent change. Show it as a small "Updated at" label.segment_applied: Indicates whether segmentation shaped the feed output. Use it for internal debugging or eligibility context.member_price exists, show it as the primary price for members. Show price as the non-member price when you have a mixed audience. Show early bird pricing with a clear cutoff date.course_image and instructor photos.last_updated. Surface a retry action if loading fails.https://api.tangilla.com/event/v1/feed/XXXX/live To see your Event Feed, replace XXXX with your four-digit NAR association code.
You can see a simple demo of how the event feed can be used here: https://www.tangilla.com/sample-event-feed/
| # | Question | Answer |
|---|---|---|
| 1 | What is the Tangilla public events feed? | A read-only JSON feed that returns a structured list of upcoming classes and events you can display on a website, blog, or app. |
| 2 | Do I need authentication to access the feed? | No. The feed is public and read-only; no authentication is required. |
| 3 | Can I fetch the feed from a browser or only from a server? | You can fetch it from either the browser or your server. |
| 4 | What does the API response look like? | Each response is an array of event objects in JSON. |
| 5 | Should I cache the feed? | Yes. Cache responses for performance and reliability. |
| 6 | How should I handle missing data? | Always handle nulls and optional fields because not every event uses every property. Hide empty rows in the UI. |
| 7 | What is event_id used for? |
It’s the unique identifier for the event. |
| 8 | What is course_id used for? |
An identifier for the related course; use it to group multiple classes for one course. |
| 9 | What does event_type mean? |
The item category, typically class or event; use it to drive filters and badges. |
| 10 | How should I use event_title? |
Display it as the headline on cards or lists. |
| 11 | Is event_description safe HTML? |
It’s HTML; render it safely and keep full text in a modal or detail view. |
| 12 | What does ce indicate? |
Whether the event provides continuing education; show a CE badge when true. |
| 13 | How do I display ce_credits? |
Show the number of CE credits, near the time or in a details row. |
| 14 | What is ce_type_name? |
The primary CE type label; show it with the credit count. |
| 15 | What if there are secondary CE credits? | Use secondary_ce_credits with secondary_ce_type_name; display only when present. |
| 16 | Which price should members see first? | Prefer member_price for member-facing displays. |
| 17 | What is preferred_pricing_label? |
The label for the pricing program (e.g., “Member/Subscriber Pricing”); show it near the price. |
| 18 | What is preferred_pricing_type? |
The kind of pricing program (e.g., “Association”); use it to clarify eligibility. |
| 19 | When should I show price? |
Show price as the standard or non-member price, especially for mixed audiences. |
| 20 | How is early bird pricing indicated? | early_bird_pricing is a flag. When true, show the discounted price(s) and the cutoff date. |
| 21 | Which fields contain early bird amounts? | early_bird_price (non-members) and early_bird_member_price (members). |
| 22 | When do I stop showing early bird pricing? | After early_bird_end_date (an ISO timestamp); disable or switch pricing after this time. |
| 23 | How should I handle time zones? | Use time_zone (IANA style or common labels like “US/Central”) to convert times or label them clearly. |
| 24 | How do I schedule events by date? | Use event_date (YYYY-MM-DD) for grouping and sorting. |
| 25 | How do I display start and end times? | Combine start_time and end_time (HH:MM:SS) to show the full time range. |
| 26 | When should online registration close in the UI? | After registration_close (ISO timestamp); disable the register button at that time. |
| 27 | How do I show instructor information? | Use instructor_name (primary) and instructor2_name (secondary when present). |
| 28 | Where do I place course/provider numbers? | Show course_number, provider_name, and provider_number in details or CE transcripts; keep identifiers for auditing. |
| 29 | How do I show the venue? | Use location for the venue name or virtual label (e.g., “ABoR On-Air”) on the card. |
| 30 | How do I handle physical addresses? | Use location_address for in-person events and offer a “Get directions” link when present. |
| 31 | How do I indicate the location type? | Use location_type (virtual, in-person, or hybrid) to show a clear badge. |
| 32 | Where should I put venue notes? | Use location_notes in the modal or details view. |
| 33 | How do I display room information? | Show room and room_notes for in-person events when helpful; keep detailed instructions in the modal. |
| 34 | How do I calculate seats remaining? | Use capacity with registered to compute seats remaining. |
| 35 | What is registered good for in the UI? |
Shows current sign-ups; it helps drive urgency and waitlist logic. |
| 36 | How do I show member-only restrictions? | If member_only is true, display a “Members only” badge. |
| 37 | When should I hide the register button? | When online_registration is false. |
| 38 | Which field is the registration CTA link? | registration_link is the URL for sign-up; make it your primary call-to-action. |
| 39 | How can I add simple filters? | Use the tags array to build filtering and discovery. |
| 40 | Which images can I show? | Use course_image for thumbnails/banners and instructor_image/instructor2_image for instructor photos. Provide alt text. |
| 41 | Where do instructor bios come from? | instructor_bio and instructor2_bio contain HTML bios; render them in the modal or detail page. |
| 42 | How do I indicate data freshness? | Show a small “Updated at” label using last_updated (ISO timestamp). |
| 43 | What does segment_applied tell me? |
Whether segmentation shaped the feed output; use it for internal debugging or eligibility context. |
| 44 | What are the key elements to show above the fold? | Title, date, time, location, and a clear call-to-action (don’t bury registration). |
| 45 | How should I use badges effectively? | Use small, consistent badges for CE, Members only, and Virtual; place them near the title or time for quick scanning. |
| 46 | How should I present pricing for mixed audiences? | Show member_price to members and price for non-members; include early bird pricing with a clear cutoff when applicable. |
| 47 | What accessibility practices should I follow? | Use semantic headings and buttons, label modals, and provide alt text for course and instructor images. |
| 48 | What should I do when a field is null? | Hide that row rather than showing placeholders. |
| 49 | What if the entire feed is empty? | Show “No upcoming items” with a link to your main calendar, and optionally offer a way to view past events. |
| 50 | How should my app handle network issues? | Fail gracefully, show cached content with a small “Updated at” timestamp from last_updated, and surface a retry action. |
| 51 | What is the feed URL format? | https://api.tangilla.com/event/v1/feed/XXXX/live where XXXX is your four-digit NAR association code. |
| 52 | Is there a demo of how to display the feed? | Yes. There’s a simple demo at the provided sample event feed page. |
| 53 | How should I render the description safely? | Treat event_description as HTML and render it safely; keep the full content in a modal or detail view. |
| 54 | How do I group multiple classes under one course? | Use course_id to group related classes. |
| 55 | How do I drive filters for classes vs. events? | Use the event_type value (e.g., class, event) to power filters and badges. |
| 56 | Where should CE information appear? | Near the time or in a details row, with badges for ce and labels from ce_type_name and optional secondary CE fields. |
| 57 | How do I present instructor photos? | Show instructor_image next to the instructor name when space allows; show instructor2_image only when present. |
| 58 | What’s the best way to display times across zones? | Convert using time_zone or label the displayed times clearly with the provided time zone. |
| 59 | Should registration be hidden before opening? | Hide the button when online_registration is false, and disable it after registration_close. |
| 60 | How do I indicate virtual or hybrid events? | Use the location_type badge (virtual, in-person, hybrid) and the location label (e.g., “ABoR On-Air”). |
| 61 | Where should I show provider details? | Under the title in a small line (provider_name), and keep provider_number in details for auditing. |
| 62 | How do I handle early bird pricing for members? | Use early_bird_member_price for members and show it until early_bird_end_date. |
| 63 | How do I display early bird cutoff dates? | Show the early_bird_end_date clearly and switch pricing after that timestamp. |
| 64 | What should the primary CTA be? | The registration_link; make it prominent and easy to access. |
| 65 | What’s recommended for organizing long descriptions or notes? | Keep extended text (descriptions, location/room notes, bios) in a modal or detail page. |