openapi: 3.2.0 info: title: Latitude Account API version: v1 description: Open-source AI agent monitoring platform. Full observability into what's failing in production. Discover underlying issues, get alerts when something breaks and verify your fix worked. servers: - url: https://api.latitude.so description: Production servers: - url: https://api.latitude.so tags: - name: Account paths: /v1/account/bootstrap: post: operationId: bootstrapAccount tags: - Account x-fern-sdk-group-name: account x-fern-sdk-method-name: bootstrap summary: Bootstrap a temporary account description: Creates a temporary organization with an API key and a project, and returns a link to claim ownership of it. Requires no authentication. security: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BootstrapAccountBody' responses: '201': description: Temporary account created content: application/json: schema: $ref: '#/components/schemas/BootstrapAccountResponse' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' /v1/account: get: tags: - Account x-fern-sdk-group-name: account x-fern-sdk-method-name: get summary: Get account description: 'Returns the caller''s account snapshot: the organization the request is scoped to, plus the user record and their role when the request was made by a real user (OAuth). API-key callers receive `user: null` and `role: null` because API keys aren''t tied to a specific user.' security: - ApiKeyAuth: [] operationId: getAccount responses: '200': description: Account snapshot content: application/json: schema: $ref: '#/components/schemas/AccountResponse' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: BootstrapAccountBody: type: object properties: organizationName: type: string description: Name for the temporary organization. If not provided, defaults to "My Organization". projectName: type: string description: Name for the project created in the organization. If not provided, defaults to "My Project". userEmail: type: string format: email description: Email address to send the claim link to. Error: type: object properties: error: type: string required: - error AccountOrganization: type: object properties: id: type: string description: Stable organization identifier across the API. name: type: string description: Human-readable organization name. slug: type: string description: URL-safe slug. Regenerated when the organization is renamed — don't use it as a stable key. required: - id - name - slug description: Organization the request is scoped to. BootstrapAccountResponse: type: object properties: organizationSlug: type: string description: Slug of the temporary organization. projectSlug: type: string description: Slug of the created project. apiKey: type: string description: Organization-scoped API key. claimUrl: type: string description: URL to open in a browser to claim ownership of the organization. claimEmail: type: string nullable: true description: Email address the claim link will be sent to, or `null` if none was provided. claimExpiresAt: type: string description: ISO-8601 timestamp when the claim link expires. The organization is deleted if not claimed by then. required: - organizationSlug - projectSlug - apiKey - claimUrl - claimEmail - claimExpiresAt AccountUser: type: object nullable: true properties: id: type: string description: Stable user identifier across the API. email: type: string description: Verified email address of the authenticated user. name: type: string nullable: true description: Display name, when set. `null` until the user completes onboarding. image: type: string nullable: true description: Profile image URL, when set. required: - id - email - name - image description: The user the request is acting on behalf of. `null` for API-key callers — API keys are org-scoped, not user-scoped. AccountResponse: type: object properties: user: $ref: '#/components/schemas/AccountUser' organization: $ref: '#/components/schemas/AccountOrganization' role: type: string nullable: true enum: - owner - admin - member - null description: Caller's role in the organization. `null` for API-key callers (no real user behind the credential). required: - user - organization - role securitySchemes: ApiKeyAuth: type: http scheme: bearer bearerFormat: API key description: 'Organization-scoped API key, sent as `Authorization: Bearer `.' x-fern-bearer: name: apiKey env: LATITUDE_API_KEY