Is a delegated agent a bot?
Probably, yes. But to quote Bill Murray from Meatballs:
It just doesn't matter!

The question we can't answer
Ticketing has always treated bots as adversarial. reCAPTCHA, rate limits, per-IP protections, device fingerprinting: these tactics (and many more!) work under the assumption that it's possible to separate human purchasers from nefarious bot purchasers. But at the API layer this just isn't possible. An agent driving a browser looks like a person, and an agent calling the API looks like any other automated script. There is no reliable test that can confidently distinguish a legitimate buyer's agent from a malicious scalper's bot.
This gives us an awkward choice. We can relax the controls and open the door for more of that scalper-bot activity, or we can apply the controls just as heavily to legitimate agents and make it exceedingly difficult for those agents to complete a purchase. Friction. And remember, this is ticketing, where the inventory stakes are higher: a wrong purchase is bad for everybody. And on top of all that, we haven't even yet considered the person behind it all. In the agent-driven purchase, that legitimate buyer is entirely invisible to us. We have no way to establish whether they authorized anything, and no guaranteed method to reach them when something goes wrong.
The question we don't need to answer
We can stop asking whether the client is human. The important question is whether the request is carried out with authority that was actually granted by the buyer.
Classification (as a bot, agent, or human) is pretty much unanswerable. Authority, however, is a stated record of granted privileges, an assertion of what the buyer is allowing to happen on their behalf.
Authority comes from the buyer
An agent that asserts "Alice authorized me" has proven nothing. True authority only exists when we have recorded an explicit delegation from an authenticated buyer principal to a named agent: who granted it, which agent received it, what it permits, when it took effect, and when it expires.
We permit anonymous purchasing, but we cannot permit anonymous delegation.
An email address is just a string of characters. Anybody can type Alice's email address. It may be a good-enough identifier to receive a ticket, but it's worthless for establishing that Alice granted the right for anyone to spend her money. Delegation needs a persistent principal we have actually authenticated, one that authority can be attributed to and, more importantly, revoked from. We don't need to know who Alice is; we need to know that the entity that granted this authority is the same one that can take it back.
Additionally, delegation is data, not a label. "Two VIP tickets for Friday, up to $500" serializes to an exact event id, an explicit allow-list of ticket class ids, quantity, an all-in maximum in minor units with a currency, and an expiry. Three tickets, general admission, a different date, $520: these would all be denied by us, not by the agent's good behavior.
Bounded, temporary, revocable, auditable
- Bounded: We enforce the full scope, not just a price ceiling.
- Action-specific: Authority to purchase is not authority to cancel, amend, or transfer. Those are delegated separately, if at all.
- Temporary: Every delegation expires.
- Revocable: Authority is evaluated when a reservation is made and again, under lock, before an order is created.
- Auditable: Every delegated operation is recorded against the authority version in force.
A valid delegation is authorization. If Alice authorizes two VIP tickets up to $500 and the agent finds them at $450, we don't ask her again. Our obligation is to enforce what she authorized, and not to second-guess what she meant. She is responsible for the authority she grants, the agent is responsible for staying within that authority, and we are responsible for enforcing and recording it.
Organizers still decide
This is not an anti-scalping mechanism. Organizers choose whether delegated agents may transact against their inventory at all. If Alice authorizes a cancellation her organizer doesn't allow, it doesn't happen. The buyer determines what an agent is authorized to do, and the platform and organizer determine what may be done.
So, is it a bot?
By any test we can build, the buying agent may be indistinguishable from a bot. We still run those tests on every request. And an organizer who wants no agents near their inventory turns delegation off and keeps every defense they had.
This new defense is against unauthorized automation from legitimate buyers.
We don't need to make agents trustworthy. We need to make their authority trustworthy, and we believe this is a good step in the right direction.
For a deeper dive into the delegated agent implementation take a look at our API documentation.
And if you're curious about Enlightened Events but haven't yet tried it out, give it a go!