GET/sonic/availabilityapiKey1 credit/request
Returns the bookable order-ahead windows for one Sonic Drive-In restaurant, grouped by service channel and local date. Each window has a UTC start_time and end_time. Also returns the store's timezone, how long each window lasts (slot_duration_minutes), the prep/handoff buffer before the first bookable window (lead_time_minutes), and service_types -- every channel the store supports, which is a superset of the channels that currently have windows. fulfillment selects the request method and accepts exactly `PICKUP` or `DELIVERY`; note the per-window service_type is a separate, finer vocabulary and can be `ORDER_AHEAD`, `CURBSIDE_PICKUP`, `DRIVE_THROUGH`, `STORE`, `PICKUP` or `DELIVERY`. A closed or fully-booked restaurant returns an empty channels array with total_slots 0, not an error. An unknown store_id returns 404.
Required: store_id. Optional: fulfillment (2 allowed values: PICKUP, DELIVERY).
Sampled 14 Oct 2026: 8 fields returned with a value. In the sample: slot_duration_minutes: 5; fulfillment: “PICKUP”; service_types: 4 entries; timezone: “America/Denver”; lead_time_minutes: 5; channels: 3 entries; total_slots: 360.
Open in Playground
GET/sonic/categoriesapiKey1 credit/request
Returns Sonic Drive-In's national menu's top-level categories -- Breakfast, Value, Limited Time, Combos, Burgers, Chicken, Hot Dogs, Sandwiches, Snacks & Sides, Sweets, Tea & Coffee, Lemonades & Limeades, Sodas, Slushes, Refreshers, Wacky Pack Kids Meals and others -- each with its slug (the value GET /sonic/menu takes) and a page_count of subcategory/item pages nested under it.
Takes no parameters.
Sampled 14 Oct 2026: 19 items. Filled in every item: name, slug, page_count, url. In the sample: name: “Breakfast” and 18 other values; url: sonicdrivein.com.
Open in Playground
GET/sonic/dealsapiKey1 credit/request
Returns the promotions currently published on Sonic Drive-In's national deals page -- each with its marketing headline, public name, description, legal terms, call-to-action label and link, and creative image. This page is not listed in Sonic's own sitemap, so GET /sonic/sitemap will never surface it. Deals are national marketing offers, not per-store pricing; there is no price field in this source. Between campaigns Sonic can publish the page with no promotions at all, which returns an empty deals array with count 0 rather than an error.
Takes no parameters.
Sampled 14 Oct 2026: 3 items. Filled in every item: section, name, headline, description, terms, cta_text, cta_url, image_url. In the sample: section: “Featured Deals”; cta_url: sonicdrivein.com; terms: median 262 characters; name: “$1.99 Jr Bacon Cheeseburger (CW 2 2026)_ EDV” and 2 other values; headline: “BACON MAKES EVERYTHING BETTER” and 2 other values; description: “The Jr Bacon Cheeseburger brings crispy bacon, melty cheese…” and 2 other values; cta_text: “Order Now”; image_url: imagedelivery.net.
Open in Playground
GET/sonic/directoryapiKey1 credit/request
Returns Sonic Drive-In's restaurant directory as a country to state to city tree, with a restaurant count at every level. Use it to discover which states and cities have restaurants before calling GET /sonic/locations or GET /sonic/nearby. Each city carries both its display name and the slug that composes into a store path. Counts here describe listed restaurants and are internally consistent (the city counts sum to total_count); GET /sonic/locations enumerates a larger set of store pages, so the two totals intentionally differ.
Takes no parameters.
Sampled 14 Oct 2026: 1 item. Filled in every item: country_code, country_name, count, states. In the sample: country_name: “United States”; states: median 47 entries.
Open in Playground
GET/sonic/itemapiKey1 credit/request
Returns one menu page's detail: name, description, image, and a link to Sonic's site-wide nutrition/allergen guide PDF. path must be a "menu" section path with kind category, subcategory, or item from GET /sonic/sitemap (or a path copied from a GET /sonic/menu-adjacent page you already know).
Required: path.
Sampled 14 Oct 2026: 4 fields returned with a value. In the sample: name: “Bacon, Egg and Cheese Bagel”; image_url: imagedelivery.net; description: “Local Favorite! Fluffy egg, melty cheese, and bacon between…”; path: “menu/categories/breakfast/local-breakfast-favorites/bacon-e…”.
Open in Playground
GET/sonic/location-suggestapiKey1 credit/request
Completes a partial address, place, city, state or ZIP into ranked matches, each already carrying the latitude and longitude that GET /sonic/nearby takes -- so a caller can run a Sonic restaurant search from free text instead of coordinates. Each suggestion's layer describes its granularity and is one of `address`, `locality`, `state`, `postalCode` or `place`, and confidence is one of `exact`, `interpolated` or `fallback`. Results are restricted to one country (default US). A query that matches nothing returns an empty suggestions array with count 0, not an error.
Required: query. Optional: limit, country.
Sampled 14 Oct 2026: 4 items. Filled in every item: layer, formatted_address, city, state, state_code, country, country_code, latitude and 1 more. Not in every item: label (1), county (1), number (3), street (3), postal_code (3). In the sample: layer: place (3), locality (1); number: 1,851 to 8,422, median 3,715; label: “Cheyenne”; county: “Laramie County”.
Open in Playground
GET/sonic/locationsapiKey1 credit/request
Returns Sonic Drive-In's restaurant listing one page at a time, each entry already split into its country, state, city and address parts plus a ready-made path value that GET /sonic/store takes -- so enumerating restaurants needs no path parsing. Filter by state and/or city to narrow the list; city slugs come from GET /sonic/directory. Results are sorted by path so paging is reproducible. This listing covers more store pages than GET /sonic/directory counts, since the directory counts listed restaurants while this enumerates every published store page; a filter that matches nothing returns an empty locations array with total 0, not an error. If Sonic's live store-locator service refuses the request, the list is built from Sonic's public store sitemap instead (same entry shape; it can omit stores without a published page, and source_url shows which source answered).
Optional: state, city, page, page_size.
Sampled 14 Oct 2026: 6 items. Filled in every item: store_id, country_code, state_code, city_slug, address_slug, path. In the sample: path: “locations/us/wy/cheyenne/125-s--greeley-highway/store-4694” and 5 other values.
Open in Playground
GET/sonic/menuapiKey1 credit/request
Returns the items in one Sonic Drive-In menu category, each with its name and published calorie count. Category slugs come from GET /sonic/categories. Some entries are themselves a nested size/variant group (e.g. "Coffee" expands to Small/Medium/Large/Rt.44 orderable sizes) rather than a single orderable product -- there is no price or full nutrition panel in this source, only calories; see GET /sonic/item for description, image, and a link to Sonic's nutrition guide.
Required: category.
Sampled 14 Oct 2026: 24 items. Filled in every item: name, calories. In the sample: calories: 0 to 820, median 470; name: “French Toast Sticks” and 23 other values.
Open in Playground
GET/sonic/nearbyapiKey1 credit/request
Returns Sonic Drive-In restaurants within a radius of a latitude/longitude, nearest first, one page at a time. Each result carries the same detail as GET /sonic/store -- address, phone, coordinates, open/closed status, amenities, weekly hours per fulfillment channel, and delivery-provider deep links -- plus distance_miles from the search centre, so ranking or mapping results needs no follow-up call per store. Use this instead of paging GET /sonic/sitemap when you know roughly where you are looking. An area with no restaurants returns an empty stores array with total_stores 0, not an error.
Required: latitude, longitude. Optional: radius, limit, page.
Sampled 14 Oct 2026: 10 items. Filled in every item: store_id, display_name, distance_miles, address, phone, latitude, longitude, status and 8 more. In the sample: distance_miles: 0.65 to 4.4, median 2.83; has_drive_through: true in 8 of 10; amenities: median 3 entries; is_delivery_enabled: true in 10 of 10; is_digitally_enabled: true in 10 of 10; hours: median 7 entries; service_hours: median 6 entries; delivery_providers: median 4 entries.
Open in Playground
GET/sonic/nutrition-documentsapiKey1 credit/request
Returns the nutrition, allergen and ingredient documents Sonic Drive-In publishes nationally -- the printable menu, the Spanish-language menu, the nutrition guide, allergen information, and the ingredient statement -- each with a directly fetchable URL, file name, MIME type, size in bytes, and the date it was last republished. These are the only structured nutrition source Sonic publishes; per-item macro and micronutrient values are not available anywhere on the public site, and GET /sonic/menu carries calories only. Files are large print-ready PDFs (several megabytes each), so check size_bytes before downloading.
Takes no parameters.
Sampled 14 Oct 2026: 5 items. Filled in every item: name, category, url, file_name, content_type, size_bytes, title, updated_at. In the sample: updated_at: 2026-06-30 to 2026-10-06; size_bytes: 235,810 to 14,351,111, median 3,225,091; name: “Menu” and 4 other values; url: downloads.ctfassets.net and 1 other host; category: “Menu” and 4 other values; file_name: “61131-13_SUM26_NAT_WOP-English_FA_cp_WCAG.pdf” and 4 other values; title: “61131-13 SUM26 NAT WOP-English FA cp WCAG” and 4 other values.
Open in Playground
GET/sonic/sitemapapiKey2 credits/request
Returns one page of Sonic Drive-In's own sitemap: section=menu lists every menu category/subcategory/item page (298 pages), section=locations lists every store-directory page (state/city/store, ~3,365 stores). Each entry's path is what GET /sonic/item (menu section) or GET /sonic/store (locations section, kind=store) takes.
Required: section (2 allowed values: menu, locations). Optional: kind (7 allowed values: index, category, subcategory, item, state, city, store), page, page_size.
Sampled 14 Oct 2026: 40 items. Filled in every item: url, path, kind. In the sample: kind: item (31), subcategory (5), category (3) and 1 more; path: “menu/categories” and 39 other values; url: sonicdrivein.com.
Open in Playground
GET/sonic/storeapiKey1 credit/request
Returns one Sonic Drive-In restaurant's address, phone, coordinates, open/closed status, amenities, weekly hours broken down per fulfillment channel (order-ahead, pickup, curbside, in-store, delivery, drive-through), and delivery-provider deep links (DoorDash, GrubHub, Uber Eats, Postmates). path must be a "locations" section, kind=store path from GET /sonic/sitemap.
Required: path.
Sampled 14 Oct 2026: 7 items. Filled in every item: day_of_week, opens, closes. In the sample: day_of_week: “MONDAY” and 6 other values.
Open in Playground