{"openapi":"3.1.0","info":{"title":"Pindown API","version":"1.0.0","description":"REST API for Pindown — create and update typed pins, pinboards, pages, and agent-driven workspace content. Authenticate with a Firebase ID token or a workspace API key.","contact":{"name":"Pindown","url":"https://pindown.ai","email":"contact@pindown.ai"}},"servers":[{"url":"https://api.pindown.ai/v1","description":"Versioned programmatic API"},{"url":"https://api.pindown.ai","description":"Pindown backend API"}],"tags":[{"name":"pins","description":"Typed data units (charts, tables, markdown, JSON)"},{"name":"pinboards","description":"Pin collections and layouts"},{"name":"auth","description":"Account and API keys"}],"paths":{"/pins":{"get":{"operationId":"listPins","summary":"List pins visible to the authenticated user","description":"Returns pins in the caller's workspace scope.","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Pin list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinListResponse"}}}}}},"post":{"operationId":"createPin","summary":"Create a pin","description":"Create a typed pin from automation output, webhooks, n8n, or agents. Supports charts, tables, markdown, JSON, and more.","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePinRequest"}}}},"responses":{"200":{"description":"Pin created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinResponse"}}}}}}},"/pins/{pinId}":{"get":{"operationId":"getPin","summary":"Get one pin by ID","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"parameters":[{"name":"pinId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pin payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinResponse"}}}},"404":{"description":"Pin not found"}}},"patch":{"operationId":"updatePin","summary":"Update a pin","description":"Patch pin config, metadata, or content in place.","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"parameters":[{"name":"pinId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePinRequest"}}}},"responses":{"200":{"description":"Pin updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinResponse"}}}}}},"delete":{"operationId":"deletePin","summary":"Delete a pin","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"parameters":[{"name":"pinId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pin deleted"},"404":{"description":"Pin not found"}}}},"/pins/batch":{"post":{"operationId":"batchCreatePins","summary":"Create multiple pins in one request","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCreatePinsRequest"}}}},"responses":{"200":{"description":"Pins created"}}}},"/pins/batch/get":{"post":{"operationId":"batchGetPins","summary":"Fetch multiple pins by ID","tags":["pins"],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["pin_ids"],"properties":{"pin_ids":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Pin batch payload"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Firebase ID token","description":"Firebase Authentication JWT from the Pindown web app."},"apiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Bearer workspace API key issued from Pindown → API keys. Self-serve at /login."}},"schemas":{"CreatePinRequest":{"type":"object","required":["pin_type","pin_config"],"properties":{"pin_type":{"type":"string"},"pin_config":{"type":"object"},"metadata":{"type":"object","properties":{"title":{"type":"string"}}}}},"UpdatePinRequest":{"type":"object","properties":{"pin_config":{"type":"object"},"metadata":{"type":"object"}}},"BatchCreatePinsRequest":{"type":"object","required":["pins"],"properties":{"pins":{"type":"array","items":{"$ref":"#/components/schemas/CreatePinRequest"}}}},"PinResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object"}}},"PinListResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object"}}}}}},"x-mcp":{"transport":"http://agents-content.pindown.ai/api/mcp/pindown-mcp/mcp","stdioPackage":"@pindownai/pindown-mcp","connectUi":"https://pindown.ai/mcp/connect","documentation":"https://docs.pindown.ai"}}