Dev.to
Why your Clio token stopped working
If your Clio integration started returning 401 and you are trying to work out why, the first question is not about your code. It is which of Clio's two OAuth systems you are on, because they have different rules and most advice on the internet does not say which one it is describing. There are two, and they are not interchangeable Clio Manage is the older one. OAuth at app.clio.com/oauth , API at app.clio.com/api/v4 . Clio Platform is the newer one, covering Grow and the lead inbox among others. OAuth at auth.api.clio.com/oauth , API at api.clio.com . They differ on essentially every point that matters when a token dies. Manage Platform Access token lifetime 2,592,000s, 30 days 86,400s, 24 hours Refresh token expiry Documented as none No time expiry, but rotates Refresh token rotation Not documented, and the refresh sample returns no new refresh token Documented: rotates on every use, previous one revoked Revocation endpoint POST app.clio.com/oauth/deauthorize , Bearer auth POST auth.api.clio.com/oauth/revoke , Basic auth Treat the lifetime row as the documented default rather than a constant. Honour the expires_in you get back on each response instead of hardcoding 30 days, because there are field reports of accounts issuing much shorter access tokens, and a hardcoded assumption fails in a way that looks exactly like revocation. That rotation row is the one that decides your debugging. On Platform , every refresh gives you a new refresh token and kills the old one, so failing to persist the new value out of each response leaves you holding a dead token the next time you try. Clio's docs say it directly: store the new refresh token returned in each response. On Manage , the documented behaviour is a long-lived refresh token that does not expire and is not replaced. Their refresh response sample does not even include a refresh_token field. So on Manage, a token that suddenly stops working usually points somewhere else: revocation, or the wrong region. The region trap
Drew-Opexcell
2026-07-22 05:21
👁 4
查看原文 →
Dev.to
How to apply a Clio task template to a matter through the API
There are two versions of this job and they have different answers. Most of the confusion, including ours, comes from assuming they are the same thing. Applying a whole template list to a matter Clio's interface has a button for this, and the natural assumption is that there is a matching endpoint on the task template resource. There is not. Nothing under /task_template_lists will assign anything to a matter, and no path in Clio's spec contains "apply". It is done from the matter instead. Both POST /matters.json and PATCH /matters/{id}.json accept a nested array: task_template_list_instances[] : task_template_list : { id } required on POST assignee_id : the user the list is assigned to notify_assignees : whether assignees get notified due_at : ISO-8601 date (format : date, not date-time) Those are the only two operations in the API that accept it. Note the asymmetry: on POST /matters.json the task_template_list object is required, and on PATCH /matters/{id}.json the item schema marks nothing as required at all. POST /task_template_lists/{id}/copy.json exists and sounds like the thing you want. It is not. It duplicates a list into another list , takes name , description and practice_area (all optional), and has no matter parameter. The two problems that will actually cost you time Instances are write-only. task_template_list_instances appears in those two request bodies and nowhere in the matter response schema. So there is no documented way to ask "does this matter already have the list on it?" You verify by fetching /tasks.json filtered to the matter and matching on names, which is uglier than it sounds and is most of the reconciliation work. Which makes idempotency your problem. If your automation fires the PATCH twice, nothing in the API stops you assigning the checklist twice. For anything triggered off matter creation or a stage change, decide up front how you detect an already-applied list, because the readback above is the only tool you have. Between them, th
Drew-Opexcell
2026-07-22 05:21
👁 4
查看原文 →
Dev.to
ACP vs AP2: the two AI-checkout protocols, and what your store actually has to build
A few weeks ago I wrote about describing your site once so any AI can use it. Since then the thing I was hand-waving at ("agents will check out for users") stopped being hypothetical. OpenAI shipped ACP and Google shipped AP2, and they solve the same problem in almost opposite ways. I implemented the merchant side of both. Here are the field notes, because the differences aren't obvious until you're in them. The 30-second version ACP (Agentic Commerce Protocol, OpenAI + Stripe) is session-based. The agent drives a live checkout session on your server, like a headless cart. It powers ChatGPT's Instant Checkout. AP2 (Agent Payments Protocol, Google) is mandate-based. Your store signs a "here is the cart and the price" object; the buyer's agent signs a "I authorize this" object. It leans on verifiable credentials and now the FIDO Alliance. Same goal. Completely different shape. ACP: a checkout session you don't own the UI for ACP is five REST endpoints and a state machine. The agent creates a session, updates it (address, shipping, coupon), and completes it: POST /checkout_sessions create from line items POST /checkout_sessions/:id update (address, shipping, discounts) POST /checkout_sessions/:id/complete pay What you return is a CheckoutSession: line items, live shipping options, and totals broken out (subtotal, discount, fulfillment, tax, total). Money is integer minor units (330 = $3.30). Payment completes when the agent hands you a Shared Payment Token and you charge it through Stripe. The card never touches the agent. The mental model: it's your existing checkout, minus the browser. AP2: sign the cart, don't run the session AP2 has no session. The agent sends you an Intent Mandate ("a red basketball shoe, under $120"). You price it and return a Cart Mandate you have cryptographically signed: { "contents" : { /* a W 3 C PaymentRequest: items , total , currency */ }, "merchant_authorization" : "<RS256 JWT>" // iss , sub , aud , exp , jti , cart_hash } That JWT is a
Roland Farkas
2026-07-22 05:14
👁 3
查看原文 →
HackerNews
"Drawing" the Mona Lisa with GPT-5.6, Claude, Gemini, and Grok
hershyb_
2026-07-22 05:13
👁 1
查看原文 →
HackerNews
Show HN: Browser Tools SDK – an optimal browser harness for agents
We’re open-sourcing Browser Tools SDK: a small TypeScript package to give any AI agent a reliable way to control a real browser. With just a few lines of code, you can give any agent a production-ready browser harness import { createAiSdkBrowserTools } from "libretto-browser-tools/ai-sdk"; import { LocalBrowserProvider } from "libretto-browser-tools"; const { tools } = createAiSdkBrowserTools(new LocalBrowserProvider()); const result = await generateText({ model: anthropic("claude-sonnet-4-5"),
tanishqkanc
2026-07-22 05:01
👁 1
查看原文 →
TechCrunch
These are the countries moving to ban social media for children
Australia was the first country to issue a ban in late 2025, aiming to reduce the pressures and risks that young users may face on social media, including cyberbullying, social media addiction, and exposure to predators.
Aisha Malik
2026-07-22 04:57
👁 6
查看原文 →
TechCrunch
OpenAI says Hugging Face was breached by its pre-release models
OpenAI has come forward to claim responsibility for the Hugging Face breach, saying it was the result of internal testing gone awry.
Russell Brandom
2026-07-22 04:56
👁 3
查看原文 →
TechCrunch
OpenAI says Hugging Face was breached by its own pre-release models
OpenAI has come forward to claim responsibility for the Hugging Face breach, saying it was the result of internal testing gone awry.
Russell Brandom
2026-07-22 04:56
👁 2
查看原文 →
HackerNews
Cisco Antares: A New Family of Cheap, Open-Source, Compact Security AI Models
CrankyBear
2026-07-22 04:55
👁 1
查看原文 →
HackerNews
Nintendo says users voluntarily paid prices, have no right to tariff refunds
AdmiralAsshat
2026-07-22 04:55
👁 1
查看原文 →
HackerNews
Show HN: Orate – On-device neural text-to-speech queue for Mac
Hey friends! Brad here - long time HN user, founder, engineer (Coinbase, Soothe, Jeevz, Release, Hired, GrowthX, etc)... I have been struggling recently with too many tabs, emails, articles, etc sitting unread while I swap between Claude code sessions all day. So I decided to build Orate to help me work through the backlog by listening to it all like I would a podcast. Orate allows you to select any text on your screen and keyboard shortcut it to a listening queue where it gets processed using t
bherms
2026-07-22 04:38
👁 1
查看原文 →
Product Hunt
Arkor
Fine-tune and Deploy Open-weight Models in TypeScript Discussion | Link
2026-07-22 04:30
👁 3
查看原文 →
HackerNews
OpenAI announces models hacked Hugging Face during an eval
ryanmerket
2026-07-22 04:30
👁 1
查看原文 →
HackerNews
OpenAI and Hugging Face address security incident during model evaluation
mfiguiere
2026-07-22 04:09
👁 2
查看原文 →
HackerNews
It was OpenAI that accidentally breached Hugging Face
seatac76
2026-07-22 04:06
👁 1
查看原文 →
Hugging Face Blog
The State of Simulation for Physical AI: An Overview
2026-07-22 04:00
👁 1
查看原文 →
Ars Technica
Sony releases one last trailer for Spider-Man: Brand New Day
"Maybe that's my responsibility, to live alone with the truth."
Jennifer Ouellette
2026-07-22 03:50
👁 3
查看原文 →
TechCrunch
Jack Dorsey is taking on Slack with Buzz, a group chat platform for teams and their AI agents
Buzz is a group chat platform for the workplace that puts humans and their AI agents in the same conversation.
Amanda Silberling
2026-07-22 03:43
👁 2
查看原文 →
TechCrunch
AI and the rise of the universal entertainment app
Over the past decade, streaming platforms competed by dominating individual formats like music, video, podcasts, or audiobooks. Now, as AI makes it easier to create, organize, and recommend content, those distinctions are fading, pushing companies like Spotify, Netflix, YouTube, and TikTok to become all-purpose entertainment destinations instead.
Sarah Perez
2026-07-22 03:39
👁 5
查看原文 →
TechCrunch
Bucking EV slowdown, Sila raises $300M to expand battery materials factory
Sila's fresh $300 million round will help it make enough of its silicon-carbon anode material to power more than 100,000 EVs.
Tim De Chant
2026-07-22 03:36
👁 2
查看原文 →