{"openapi":"3.1.0","info":{"title":"OpenProcessing Creative Coding API","version":"1.0.0","description":"Live creator and sketch data from OpenProcessing, the community for Processing and p5.js creative-coding sketches, served from its public API. The user endpoint returns a creator's profile — username, name, bio, location, website, join date and total sketch count. The sketches endpoint lists a creator's published sketches with title, license, engine mode and dates. The sketch endpoint returns a single sketch's detail — title, description, tags, license, libraries used, the fork parent it was remixed from, and the author. The social endpoint returns a creator's followers or the accounts they follow. This is a creative-coding community stats API — creator profiles, sketch catalogues and the follow graph — distinct from the code-hosting, package-registry and other social-platform APIs in the catalogue. A user is a numeric OpenProcessing userID and a sketch is a numeric visualID, both visible in OpenProcessing URLs. Live, no key on the upstream, nothing stored.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/openprocessing-api","description":"oanor gateway"}],"tags":[{"name":"Creators"},{"name":"Sketches"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/social":{"get":{"operationId":"get_v1_social","tags":["Creators"],"summary":"A creator's followers or following","description":"","parameters":[{"name":"user","in":"query","required":true,"description":"Numeric userID","schema":{"type":"string"},"example":"1"},{"name":"type","in":"query","required":false,"description":"followers or following","schema":{"type":"string"},"example":"followers"},{"name":"limit","in":"query","required":false,"description":"Max users (max 100)","schema":{"type":"string"},"example":"50"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"type":"followers","count":50,"limit":50,"users":[{"since":"2020-04-19 11:54:26","user_id":134,"fullname":"ahmet kizilay","username":"ahmetkizilay","membership_type":0},{"since":"2026-03-19 23:45:01","user_id":990,"fullname":"Owaun Scantlebury","username":"owaun","membership_type":1},{"since":"2024-07-18 01:51:55","user_id":1273,"fullname":"Marius Watz","username":"watz","membership_type":0},{"since":"2012-03-23 04:38:39","user_id":1277,"fullname":"R.A. Robertson","username":"Phospheros","membership_type":0},{"since":"2013-02-21 07:08:34","user_id":1707,"fullname":"haoyun","username":"misterioso","membership_type":0},{"since":"2012-04-24 19:02:52","user_id":1720,"fullname":"bitcraft","username":"bitcraft_1720","membership_type":0},{"since":"2018-01-27 17:13:18","user_id":2039,"fullname":"Joshua Fishburn","username":"jafish","membership_type":0},{"since":"2021-11-03 15:16:42","user_id":3020,"fullname":"Clay Heaton","username":"ccheaton","membership_type":1},{"since":"2021-10-19 13:26:37","user_id":3417,"fullname":"Caleb Mascarenhas","username":"calebml","membership_type":1},{"since":"2012-03-20 13:35:11","user_id":3942,"fullname":"Kof (Kryštof Pešek)","username":"kof","membership_type":0},{"since":"2019-01-11 18:56:35","user_id":5362,"fullname":"Henrique Silva","username":"hsilva321","membership_type":1},{"since":"2012-07-07 09:48:47","user_id":6009,"fullname":"Justin Lincoln","username":"jlincoln","membership_type":0},{"since":"2026-05-16 23:48:15","user_id":6128,"fullname":"Yahya Mekkawi","username":"yahya-mekkawi","membership_type":0},{"since":"2018-12-16 19:00:38","user_id":6472,"fullname":"enzo gentile","username":"grog","membership_type":0},{"since":"2012-06-14 03:43:15","user_id":6474,"fullname":"creators-high","username":"creators-high","membership_type":0},{"since":"2024-09-21 09:34:52","user_id":6926,"fullname":"6.n.h8","username":"ed_crub","membership_type":0},{"since":"2013-09-28 13:38:50","user_id":8234,"fullname":"e-cube","username":"e-cube","membership_type":0},{"since":"2013-06-10 07:08:48","user_id":11951,"fullname":"Breno Bitencourt","username":"Bitencourt","membership_type":0},{"since":"2014-07-29 17:46:27","user_id":11974,"fullname":"Alejandro Medina C.","username":"ALTz","membership_type":0},{"since":"2012-03-27 01:36:41","user_id":12203,"fullname":"Raven Kwok","username":"RavenKwok","membership_type":0},{"since":"2019-10-05 06:58:56","user_id":12291,"fullname":"Pyo","username":"Pyo","membership_type":0},{"since":"2021-01-13 19:47:16","user_id":12588,"fullname":"Cem Kocyildirim","username":"cemkocyildirim_12588","membership_type":0},{"since":"2023-12-17 23:03:38","user_id":12812,"fullname":"aRchie K.","username":"aRchiebrain","membership_type":0},{"since":"2019-02-21 11:26:51","user_id":13276,"fullname":"reona396","username":"reona396","membership_type":1},{"since":"2017-12-07 12:47:09","user_id":15533,"fullname":"Rasagy Sharma","username":"rasagy","membership_type":0},{"since":"2012-03-21 17:09:14","user_id":15573,"fullname":"Christian Marc Schmidt","username":"cms","membership_type":0},{"since":"2012-05-09 23:31:34","user_id":16036,"fullname":"Adam Lastowka","username":"Pongle","membership_type":0},{"since":"2012-03-16 19:37:15","user_id":16518,"fullname":"OpenProcessing","username":"admin2","membership_type":0},{"since":"2012-03-17 19:54:54","user_id":17097,"fullname":"Mahir Yavuz","username":"mahir","membership_type":0},{"since":"2012-03-16 19:37:15","user_id":17451,"fullname":"asdf","username":"msa5","membership_type":0},{"since":"2012-10-28 06:24:04","user_id":17583,"fullname":"Wei-Cheng Sun","username":"sunwc","membership_type":0},{"since":"2018-03-06 16:50:18","user_id":17626,"fullname":"Test User Profile","username":"test12","membership_type":0},{"since":"2012-03-28 09:34:34","user_id":17720,"fullname":"dengjiyun","username":"dengjiyun","membership_type":0},{"since":"2012-04-04 08:49:51","user_id":17902,"fullname":"xurenfang","username":"xurenfang","membership_type":0},{"since":"2012-05-02 03:46:06","user_id":18293,"fullname":"Luiz Zanotello","username":"lgguts","membership_type":0},{"since":"2013-04-05 10:36:17","user_id":18555,"fullname":"Brendan Flynn","username":"brendan_flynn_18555","membership_type":0},{"since":"2012-07-09 19:32:43","user_id":19777,"fullname":"Abbas Tolgay Yilmaz","username":"abbastyilmaz","membership_type":0},{"since":"2026-02-14 16:58:00","user_id":22192,"fullname":"Raphaël de Courville","username":"SableRaph","membership_type":1},{"since":"2024-08-19 13:33:51","user_id":22454,"fullname":"Danqing Shi","username":"danqing","membership_type":2},{"since":"2013-12-05 03:30:04","user_id":23018,"fullname":"oat cracker","username":"oatcracker","membership_type":0},{"since":"2014-04-12 12:39:02","user_id":23643,"fullname":"halk","username":"HAL","membership_type":0},{"since":"2018-05-07 21:00:59","user_id":23998,"fullname":"Jacob Joaquin","username":"jacobjoaquin","membership_type":2},{"since":"2021-12-26 08:21:12","user_id":24831,"fullname":"cheuk","username":"cheukdesign","membership_type":1},{"since":"2013-02-03 15:34:01","user_id":25161,"fullname":"enise","username":"enip","membership_type":0},{"since":"2018-11-05 01:58:11","user_id":27124,"fullname":"jWilliam Dunn","username":"intrinsic","membership_type":1},{"since":"2013-06-11 19:41:32","user_id":28506,"fullname":"hughmonji","username":"hughmonji","membership_type":0},{"since":"2017-05-09 14:10:13","user_id":29667,"fullname":"SVCNT","username":"svcnt","membership_type":0},{"since":"2022-09-12 14:13:07","user_id":29958,"fullname":"Torin Blankensmith","username":"baconsmith","membership_type":0},{"since":"2018-06-08 07:48:30","user_id":31562,"fullname":"tim groote","username":"timgroote","membership_type":0},{"since":"2013-10-29 18:04:35","user_id":32221,"fullname":"ben zhao","username":"goodleben","membership_type":0}],"offset":0,"source":"OpenProcessing","user_id":1},"meta":{"timestamp":"2026-06-12T01:41:37.584Z","request_id":"41e9e1d2-c930-4802-840a-e5955eab7592"},"status":"ok","message":"Social graph retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/user":{"get":{"operationId":"get_v1_user","tags":["Creators"],"summary":"Creator profile + total sketch count","description":"","parameters":[{"name":"user","in":"query","required":true,"description":"Numeric OpenProcessing userID","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bio":"OpenProcessing master magician.Trying to stop obsessing with icon alignment.","joined":"2008-02-06 22:58:37","source":"OpenProcessing","user_id":1,"website":"https://wiredpieces.com","fullname":"Sinan Ascioglu","location":"Amsterdam","username":"msawired","total_sketches":263,"membership_type":2},"meta":{"timestamp":"2026-06-12T01:41:37.859Z","request_id":"ac0423a1-e9e3-47e3-aba0-e03b8dbe070e"},"status":"ok","message":"User retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/sketch":{"get":{"operationId":"get_v1_sketch","tags":["Sketches"],"summary":"A single sketch's detail (incl. fork parent)","description":"","parameters":[{"name":"sketch","in":"query","required":true,"description":"Numeric visualID","schema":{"type":"string"},"example":"13481"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"mode":"pjs","tags":[],"title":"Sugar buildings in HTML5","source":"OpenProcessing","created":"2012-03-03 23:35:46","fork_of":2921,"license":"by-nc-sa","updated":"2025-12-30 08:03:21","user_id":1,"username":"msawired","libraries":[],"visual_id":13481,"mode_label":"Processing (Java)","description":"To see if it is going to work in HTML5, I just copy pasted the code of Sugar Buildings by Jean-no:\nhttp://www.openprocessing.org/visuals/?visualID=2921\nPerformance is not too bad unless there are more than 100 blocks, but probably depends on the computer","is_template":false},"meta":{"timestamp":"2026-06-12T01:41:38.146Z","request_id":"374657be-275a-4459-8415-02b86b3f8032"},"status":"ok","message":"Sketch retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/sketches":{"get":{"operationId":"get_v1_sketches","tags":["Sketches"],"summary":"A creator's published sketches","description":"","parameters":[{"name":"user","in":"query","required":true,"description":"Numeric userID","schema":{"type":"string"},"example":"1"},{"name":"limit","in":"query","required":false,"description":"Max sketches (max 100)","schema":{"type":"string"},"example":"25"},{"name":"offset","in":"query","required":false,"description":"Pagination offset","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":25,"limit":25,"offset":0,"source":"OpenProcessing","user_id":1,"sketches":[{"mode":"pjs","title":"Sugar buildings in HTML5","created":"2012-03-03 23:35:46","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":13481,"mode_label":"Processing (Java)","description":"To see if it is going to work in HTML5, I just copy pasted the code of Sugar Buildings by Jean-no:\nhttp://www.openprocessing.org/visuals/?visualID=2921\nPerformance is not too bad unless there are more than 100 blocks, but probably depends on the computer"},{"mode":"pjs","title":"Swirlies in HTML5","created":"2012-04-24 21:47:59","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":19142,"mode_label":"Processing (Java)","description":"Html5 version of Swirlies by Tymm.\n\nPerformance drops a lot if you increase the SIZEW, SIZEH"},{"mode":"pjs","title":"Leaf Experience","created":"2011-01-31 00:06:19","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":19220,"mode_label":"Processing (Java)","description":"A project I did when I was at ITP."},{"mode":"pjs","title":"testing sketch\"s opengl","created":"2011-10-04 14:49:10","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":40563,"mode_label":"Processing (Java)","description":"testing OpenGL sketch"},{"mode":"pjs","title":"sugar buildings for bus-tops","created":"2012-02-07 17:05:03","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":51522,"mode_label":"Processing (Java)","description":"Original code belongs to Jean-no, I just copy pasted the code of Sugar Buildings, and changed the color, dimensions and framerate for bus-tops competition:\nhttp://www.openprocessing.org/visuals/?visualID=2921"},{"mode":"pjs","title":"matrix extended","created":"2012-02-21 09:01:42","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":53115,"mode_label":"Processing (Java)","description":"I was wondering to use this as a background on underConstruction page on the website. Slightly modified version of http://www.openprocessing.org/visuals/?visualID=39375 by Mike Y."},{"mode":"pjs","title":"nov13a_2011_iridescence.","created":"2012-04-26 05:40:50","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":59927,"mode_label":"Processing (Java)","description":"This is a tweak of Raven Kwoks's sketch. Made the layout landscape and increased the particle amount and damper width to make it slightly more colorful and playful. Performance suffered though..."},{"mode":"pjs","title":"harmony_web_remake pjs","created":"2012-05-02 03:33:27","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":60329,"mode_label":"Processing (Java)","description":"I created a tweak of mitchell whitelaw's sketch. Increased the threshold to make the networking effect more visible and made the line colors dependent on distance to the connection."},{"mode":"pjs","title":"leafExperience","created":"2012-09-23 22:18:33","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":71625,"mode_label":"Processing (Java)","description":"A sketch that takes experiments with changing interaction behaviors. Takes users through an experience of creating a tree, the leaves, and being a wind that blows the leaves away, all accompanied by a story."},{"mode":"pjs","title":"leafExperience in processingjs","created":"2012-09-24 03:22:38","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":71673,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"leafExperience","created":"2012-10-09 00:29:48","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":74032,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"leafExperience","created":"2012-10-09 03:43:04","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":74053,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"test sketch","created":"2013-01-20 22:11:50","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":86239,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"The Work of an Obsessive Compulsive Pessimist Painter","created":"2013-02-08 17:47:48","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":88819,"mode_label":"Processing (Java)","description":"I did this while randomly trying some other thing. This extremely simple sketch looked like some guy trying to sketch some lines over and over. As if he doesn't like what he likes.\n\nInteresting thing is, changing the two variables (frameRate and lines) have drastic changes on the mood the sketch creates."},{"mode":"pjs","title":"GridNoise3D in Canvas!","created":"2013-02-08 18:51:38","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":88826,"mode_label":"Processing (Java)","description":"This is a tweak of Joshua Davis's sketch. I changed it to OPENGL (since P3D doesn't work on browsers) to make it work in HTML5 canvas element using processing.js. I had to decrease the number of dots because the performance was very poor."},{"mode":"pjs","title":"Twk: Colorymini","created":"2013-04-18 19:24:36","updated":"2025-12-30 08:03:21","is_draft":false,"visual_id":96792,"mode_label":"Processing (Java)","description":"this is a tweak test of colorymini"},{"mode":"pjs","title":"Ass1JavaScript","created":"2013-07-01 04:17:06","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":102561,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"SonicPainterJavaScript","created":"2013-07-10 15:47:12","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":103398,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"Twk: pjsComplexSketch","created":"2013-10-29 00:35:16","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":118094,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"Twk: sketch test","created":"2013-11-05 21:19:20","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":119315,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"Twk: pjsComplexSketch","created":"2013-11-06 05:02:55","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":119361,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"My New Sketch","created":"2013-11-06 05:07:28","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":119362,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"Twk: Aufgabe4 moderne Uhr","created":"2013-11-06 22:35:22","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":119508,"mode_label":"Processing (Java)","description":"This sketch is supposed to display additional elements but processingjs seems to crash while compiling. I will submit a report to processingjs team to see if they have a solution/fix."},{"mode":"pjs","title":"swirlies","created":"2013-11-07 05:40:29","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":119595,"mode_label":"Processing (Java)"},{"mode":"pjs","title":"My New Sketch","created":"2013-11-07 06:24:33","updated":"2025-12-30 08:03:21","is_draft":true,"visual_id":119598,"mode_label":"Processing (Java)"}]},"meta":{"timestamp":"2026-06-12T01:41:38.401Z","request_id":"d743f19d-e1a9-4faf-882d-e570a535a0d2"},"status":"ok","message":"Sketches retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"user is a numeric OpenProcessing userID; sketch is a numeric visualID (both visible in OpenProcessing URLs). Username lookup is not offered by the upstream, so ids are used. mode is the sketch engine (p5js, pjs, html).","source":"OpenProcessing public API (openprocessing.org/api, live)","service":"openprocessing-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/user":"Creator profile + total sketch count (user=1).","GET /v1/sketch":"A single sketch's detail incl. fork parent (sketch=13481).","GET /v1/social":"A creator's followers or following (user=1, type=followers).","GET /v1/sketches":"A creator's published sketches (user=1, limit=25, offset=0)."},"description":"Live creator and sketch data from OpenProcessing, the community for Processing / p5.js creative-coding sketches. user returns a creator's profile (username, name, bio, location, website, join date, total sketches); sketches lists a creator's published sketches; sketch returns a single sketch's detail (title, description, tags, license, libraries, fork parent, author); social returns a creator's followers or the accounts they follow. Live, no key, nothing stored. A creative-coding community stats API distinct from the code-hosting, package-registry and other social-platform APIs.","upstream_status":"ok","sample_user_total_sketches":263},"meta":{"timestamp":"2026-06-12T01:41:38.666Z","request_id":"a9349e21-5e68-4e74-9782-48f171329edc"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":26000,"rps_limit":4,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":440,"monthly_call_quota":310000,"rps_limit":12,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1370,"monthly_call_quota":1340000,"rps_limit":30,"hard_limit":true},{"slug":"scale","name":"Scale","price_cents_month":3290,"monthly_call_quota":4750000,"rps_limit":80,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/openprocessing-api"}