PATCH /v3/application/listings/{listing_id} returns 404 “Resource not found” (Personal app with listings_w). GET works #1471
Replies: 2 comments
-
“We now have X‑Request‑Id: gen‑c7a2b3e8‑… for the 404 PATCH attempt. Could you confirm if the correct write endpoint is PATCH /v3/application/listings/{listing_id} or PATCH /v3/application/shops/{shop_id}/listings/{listing_id}? Auth is valid; GET works; write returns 404.” |
Beta Was this translation helpful? Give feedback.
-
Hello there! It looks like the 404 error you're getting for The correct endpoint for updating a listing in API v3 is updateListing: Please try using the correct endpoint format, including your curl -i -X PATCH "[https://api.etsy.com/v3/application/shops/58740117/listings/4331057623](https://api.etsy.com/v3/application/shops/58740117/listings/4331057623)" \ |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Current Status
OAuth: working (connected successfully).
Config: Website URL = http://localhost/, Callback URL = http://localhost:8400/callback (correct).
API calls:
GET your listings/shops: 200 OK.
PATCH/PUT /v3/application/listings/{listing_id}: 404 {"error":"Resource not found"} (from Etsy).
Local CSV bulk attempts (3 batches): endpoint returns 200, Etsy returns 404 for every row.
What 404 Means Here
It’s not a bad URL. It typically means your app is not permitted to modify listings (write) for the shop, even if your token includes listings_w.
Checklist (Etsy Developer Console)
App type: Personal Access (Shop tools) — OK if you see the Personal badge.
Website URL (Application Domain): http://localhost/
Callback URL: http://localhost:8400/callback
OAuth scopes (token): listings_r listings_w shops_r
Bearer format: Authorization: Bearer <user_id>.<access_token>
Required header: x-api-key:
If all above is correct and PATCH still returns 404, Etsy support usually needs to confirm/enable write for your app.
Minimal Reproducer (copy/paste)
GET (works)
curl -s "https://api.etsy.com/v3/application/listings/4331057623" -H "Authorization: Bearer <USER_ID>.<ACCESS_TOKEN>" -H "x-api-key: "
PATCH (404)
curl -i -X PATCH "https://api.etsy.com/v3/application/listings/4331057623" -H "Authorization: Bearer <USER_ID>.<ACCESS_TOKEN>" -H "x-api-key: " -H "Content-Type: application/json" -d "{"tags":["digital download","laser cut dxf","cnc dxf file"]}"
Notes:
Use PATCH (recommended). PUT shows the same 404 in our tests.
Include -i to capture headers (X-Request-Id). Share that ID with Etsy support.
Ready-To-Post Message (Etsy Open API Discussions)
Title
PATCH /v3/application/listings/{listing_id} returns 404 “Resource not found” (Personal app with listings_w). GET works
Body
Context
App type: Personal Access (Shop tools)
Keystring:
Website URL: http://localhost/
Callback URL: http://localhost:8400/callback
OAuth scopes on token: listings_r listings_w shops_r
Bearer format used: <USER_ID>.<ACCESS_TOKEN> (user_id prefix present)
Symptom
GET on my own listings/shops works (200).
PATCH/PUT to my own listing returns 404 with body: {"error":"Resource not found"}
Reproducer
GET (200): curl -s "https://api.etsy.com/v3/application/listings/4331057623" -H "Authorization: Bearer <USER_ID>.<ACCESS_TOKEN>" -H "x-api-key: "
PATCH (404): curl -i -X PATCH "https://api.etsy.com/v3/application/listings/4331057623" -H "Authorization: Bearer <USER_ID>.<ACCESS_TOKEN>" -H "x-api-key: " -H "Content-Type: application/json" -d "{"tags":["digital download","laser cut dxf","cnc dxf file"]}"
Extra details
Example listing_id: 4331057623
Shop_id: 58740117
OAuth: PKCE v3; Website/Callback URLs match localhost configuration; OAuth flow confirmed.
Ask
Does a Personal app (Shop tools) require Etsy to explicitly enable write (listings_w) for my account?
Does 404 in this scenario indicate my app isn’t permitted to update listings despite correct scopes and Bearer format?
Please verify and enable write for app “Kairos” (Keystring: ) or advise what additional step is needed.
I can provide X-Request-Id from the failing PATCH if helpful.
Post here (log into GitHub): https://github.com/etsy/open-api/discussions → New Discussion → Q&A.
What I’ll Do After You Post
Re-test a single PATCH when support confirms write access.
If 2xx, immediately run 30+30+30 updates.
Optional Quick Workaround
If Etsy’s API write remains blocked, you can still:
Manually paste the proposed tags from CSV into Etsy UI for top listings (files: out/proposed_updates*.csv).
Keep using our local tools for audits and tag/title suggestions while waiting for API write to be enabled.
Want me to prepare a compact Q&A version of the post as well, or extract X-Request-Id with a live PATCH (so you can include it in your thread)?
Beta Was this translation helpful? Give feedback.
All reactions