{
  "openapi": "3.1.0",
  "info": {
    "title": "YCpedia API",
    "version": "1.0.0",
    "description": "Read, generate, and update profile articles by LinkedIn ID. Obtain your API key and API base URL from the YCpedia team."
  },
  "security": [
    {
      "CustomerApiKey": []
    }
  ],
  "paths": {
    "/api/v1/articles/{linkedin_id}": {
      "get": {
        "summary": "Read an article",
        "description": "Returns the current article for 1 credit per successful request. Does not start generation. A missing article returns 404 without a charge.",
        "operationId": "read_an_article",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiReadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid request or missing Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded. Wait for the Retry-After duration.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits. Buy credits before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Profile or job not found, unavailable, or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "CustomerApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "linkedin_id",
            "in": "path",
            "required": true,
            "description": "The slug after linkedin.com/in/, for example jane-doe.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v1/articles": {
      "post": {
        "summary": "Generate an article",
        "description": "If an article already exists, returns it for 1 credit (200). Otherwise reserves 100 credits and starts generation (202). Poll the job for the included result. Failed or cancelled jobs are refunded. Replays of the same idempotency key return the original operation without another charge.",
        "operationId": "generate_an_article",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ApiReadResponse"
                    },
                    {
                      "$ref": "#/components/schemas/ApiJobResponse"
                    }
                  ]
                }
              }
            }
          },
          "202": {
            "description": "Generation queued or running. Poll the returned job_id for free.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiJobResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid request or missing Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded. Wait for the Retry-After duration.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits. Buy credits before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Profile or job not found, unavailable, or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Another job is active for this profile, or the idempotency key was used for a different operation.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "CustomerApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "A unique value for this operation. Reuse it when retrying the same request to avoid duplicate charges.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiProfileRequest"
              }
            }
          }
        }
      }
    },
    "/api/v1/articles/{linkedin_id}/update": {
      "post": {
        "summary": "Update an article",
        "description": "Refreshes an existing profile with a new research run for 100 credits. Requires an existing profile. Returns 202 while queued or running; a replay of a terminal job returns 200. Poll the job for the included result. Failed or cancelled jobs are refunded.",
        "operationId": "update_an_article",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiJobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Generation queued or running. Poll the returned job_id for free.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiJobResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid request or missing Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded. Wait for the Retry-After duration.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits. Buy credits before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Profile or job not found, unavailable, or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Another job is active for this profile, or the idempotency key was used for a different operation.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "CustomerApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "linkedin_id",
            "in": "path",
            "required": true,
            "description": "The slug after linkedin.com/in/, for example jane-doe.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "A unique value for this operation. Reuse it when retrying the same request to avoid duplicate charges.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          }
        ]
      }
    },
    "/api/v1/jobs/{job_id}": {
      "get": {
        "summary": "Get a job",
        "description": "Free. Returns a job belonging to your customer account. On success, article contains the result snapshot. Repeated polling and reading this snapshot are free. It does not change after later profile updates.",
        "operationId": "get_a_job",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiJobResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid request or missing Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded. Wait for the Retry-After duration.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              }
            }
          },
          "404": {
            "description": "Profile or job not found, unavailable, or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "CustomerApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/api/v1/credits": {
      "get": {
        "summary": "Get credit balance",
        "description": "Free. Returns the shared customer balance and account-specific terms and limits.",
        "operationId": "get_credit_balance",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiBalanceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid request or missing Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded. Wait for the Retry-After duration.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              }
            }
          }
        },
        "security": [
          {
            "CustomerApiKey": []
          }
        ]
      }
    },
    "/api/v1/credits/checkout": {
      "post": {
        "summary": "Buy credits",
        "description": "Creates a Stripe checkout URL. Open url to complete payment. Credits are added after payment confirmation, not when this endpoint returns. Read GET /api/v1/credits to confirm the balance. Default purchase range: 10\u2013100,000 credits.",
        "operationId": "buy_credits",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid request or missing Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded. Wait for the Retry-After duration.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              }
            }
          },
          "400": {
            "description": "Credit purchase outside the allowed range.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Checkout unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Payments are not configured.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "CustomerApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiCheckoutRequest"
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiArticle": {
        "properties": {
          "article_id": {
            "title": "Article Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string",
            "description": "Article text with its original formatting and citation references."
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/ApiSource"
            },
            "title": "Sources",
            "type": "array"
          },
          "infobox": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Infobox",
            "description": "Available profile metadata. Keys vary by article; may be null."
          },
          "current_version": {
            "title": "Current Version",
            "type": "integer",
            "examples": [
              1
            ]
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "article_id",
          "title",
          "content",
          "sources",
          "infobox",
          "current_version",
          "created_at",
          "updated_at"
        ],
        "title": "ApiArticle",
        "type": "object"
      },
      "ApiBalanceResponse": {
        "properties": {
          "credits": {
            "title": "Credits",
            "type": "integer"
          },
          "pricing": {
            "$ref": "#/components/schemas/ApiPricing"
          }
        },
        "required": [
          "credits",
          "pricing"
        ],
        "title": "ApiBalanceResponse",
        "type": "object"
      },
      "ApiCheckoutRequest": {
        "properties": {
          "credits": {
            "exclusiveMinimum": 0,
            "title": "Credits",
            "type": "integer",
            "examples": [
              100
            ]
          }
        },
        "required": [
          "credits"
        ],
        "title": "ApiCheckoutRequest",
        "type": "object"
      },
      "ApiJobResponse": {
        "properties": {
          "job_id": {
            "format": "uuid",
            "title": "Job Id",
            "type": "string"
          },
          "linkedin_id": {
            "title": "Linkedin Id",
            "type": "string",
            "examples": [
              "jane-doe"
            ]
          },
          "status": {
            "enum": [
              "queued",
              "running",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "title": "Status",
            "type": "string"
          },
          "credits_charged": {
            "title": "Credits Charged",
            "type": "integer",
            "description": "Credits reserved or charged for this operation. Returns 0 after a failed or cancelled job is refunded.",
            "examples": [
              100
            ]
          },
          "article": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ApiArticle"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error"
          }
        },
        "required": [
          "job_id",
          "linkedin_id",
          "status",
          "credits_charged"
        ],
        "title": "ApiJobResponse",
        "type": "object"
      },
      "ApiPricing": {
        "properties": {
          "read_credits": {
            "default": 1,
            "exclusiveMinimum": 0,
            "title": "Read Credits",
            "type": "integer"
          },
          "generation_credits": {
            "default": 100,
            "exclusiveMinimum": 0,
            "title": "Generation Credits",
            "type": "integer"
          },
          "credit_price_cents": {
            "exclusiveMinimum": 0,
            "title": "Credit Price Cents",
            "type": "integer",
            "description": "Account-specific price per credit in cents, agreed with your team."
          },
          "queued_timeout_minutes": {
            "default": 30,
            "exclusiveMinimum": 0,
            "title": "Queued Timeout Minutes",
            "type": "integer"
          },
          "requests_per_minute": {
            "default": 120,
            "exclusiveMinimum": 0,
            "title": "Requests Per Minute",
            "type": "integer"
          },
          "min_purchase_credits": {
            "default": 10,
            "exclusiveMinimum": 0,
            "title": "Min Purchase Credits",
            "type": "integer"
          },
          "max_purchase_credits": {
            "default": 100000,
            "exclusiveMinimum": 0,
            "title": "Max Purchase Credits",
            "type": "integer"
          }
        },
        "title": "ApiPricing",
        "type": "object"
      },
      "ApiProfileRequest": {
        "additionalProperties": false,
        "properties": {
          "linkedin_id": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Linkedin Id",
            "type": "string",
            "examples": [
              "jane-doe"
            ]
          }
        },
        "required": [
          "linkedin_id"
        ],
        "title": "ApiProfileRequest",
        "type": "object"
      },
      "ApiReadResponse": {
        "properties": {
          "article": {
            "$ref": "#/components/schemas/ApiArticle"
          },
          "credits_charged": {
            "title": "Credits Charged",
            "type": "integer",
            "description": "Credits charged for this article read.",
            "examples": [
              1
            ]
          }
        },
        "required": [
          "article",
          "credits_charged"
        ],
        "title": "ApiReadResponse",
        "type": "object"
      },
      "ApiSource": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Url"
          },
          "publication": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Publication"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Excerpt"
          }
        },
        "required": [
          "id",
          "title"
        ],
        "title": "ApiSource",
        "type": "object"
      },
      "CheckoutSessionResponse": {
        "properties": {
          "session_id": {
            "title": "Session Id",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "session_id",
          "url"
        ],
        "title": "CheckoutSessionResponse",
        "type": "object"
      }
    },
    "securitySchemes": {
      "CustomerApiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Your customer API key (alm_\u2026). Keep it on your server."
      }
    }
  },
  "servers": [
    {
      "url": "https://api.thealmanac.ai",
      "description": "Production API"
    }
  ]
}
