Appearance
Go live checklist
Work through this list before real advertisers book your inventory. Each item leads with the problem it prevents.
Connection
- [ ] A rejected connection.
GET /healthreturns a body that DataFlair accepts. The card shows Connected, not Re-verify needed. See GET /health. - [ ] A leaked key. The key is least privilege (read, create-draft and report), it is revocable without downtime, and it is stored hashed on your side. See Authentication.
- [ ] A refused base URL. The base URL starts with
https://, has no#fragment, and resolves to a public address. - [ ] A broken call after a redirect. Your endpoints answer at the exact base URL, with no redirect. DataFlair does not follow redirects.
Inventory
- [ ] Bookings that start a day early or late.
timezonein/healthis the real IANA timezone your platform books flights in. See Conventions. - [ ] A mapping that breaks. Each
inventory_idis stable. You do not reuse an id for a different slot. See Inventory identity. - [ ] A creative that does not fit. Each slot lists every size it accepts in
sizes. - [ ] A blocked booking.
currencyin/healthmatches the currency you book in. DataFlair stops on a mismatch. - [ ] A dead slot that shows as bookable. A slot you no longer sell returns
status: "archived", so DataFlair can hide it.
Booking
- [ ] Inventory that serves before a person approves it.
POST /orderscreates draft, paused or inactive objects only. It returnsstatus: "DRAFT"for the order and every line. See Draft only. - [ ] A duplicate order. A repeat of the same
idempotency_keyand body returns the same ids. The same key with a different body returns409. A new key with the sameexternal_refupdates the existing order and line. - [ ] A lost reconciliation.
line_item_iddoes not change for a booked line, even when a person renames the line in your console. - [ ] A broken click. You store the creative tag exactly as sent and keep the
/go/{code}link. See How creatives work. - [ ] A surprise in your console. Your ad-ops team knows that DataFlair creates drafts, and that a person must review and activate them.
Reporting
- [ ] Billing on the wrong numbers.
POST /reportsreturns the impressions and clicks that your ad server served for each line. It does not return blended totals. See POST /reports. - [ ] A report that cannot be matched. Each row carries the same
line_item_idyou returned when you created the line.
Errors and load
- [ ] A retry storm. You return
429with aRetry-Afterheader when you need DataFlair to slow down. - [ ] A failure nobody can read. Every error has a JSON body with
codeandmessage, andmessageholds no secrets. See Errors. - [ ] A slow answer that counts as down. Each call connects within 10 seconds and finishes within 30. See Retries and idempotency.
Before you tell DataFlair you are ready
- [ ] A surprise about what runs today. You have read what is live today on the overview. DataFlair calls
GET /healthandGET /inventorywhen you connect. It does not call forecast, booking or reporting yet. - [ ] A gap in your own testing. You have followed Testing your implementation.