> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lexio.rent/llms.txt
> Use this file to discover all available pages before exploring further.

# Lire l’organisation et la clé

> **Accès** : toute clé valide

Renvoie les réglages de l’agence qui gouvernent les dates et les prix, et la clé qui appelle.

À lire une fois au démarrage : devise et nombre de décimales des montants ([Montants et TVA](https://docs.lexio.rent/montants-et-tva)), fuseau des heures de location, TVA, horaires et règles de réservation imposés aux clés partenaires.



## OpenAPI

````yaml /openapi.json get /organization
openapi: 3.1.0
info:
  title: API Lexio
  version: 1.0.1
  description: >-
    # API Lexio v1


    L’API Lexio permet à un loueur de véhicules, ou à une plateforme partenaire
    autorisée par lui, de chiffrer, réserver, suivre et administrer ses
    locations depuis un serveur. Chaque appel agit sur l’organisation Lexio d’un
    seul loueur.


    - **Adresse de base** : `https://api.lexio.rent/api/external/v1`

    - **Authentification** : `Authorization: Bearer lck_…`, une clé créée par le
    loueur dans Lexio.

    - **Format** : JSON en UTF-8 ; erreurs RFC 9457 avec un `code` stable.

    - **Spécification OpenAPI 3.1** :
    [https://docs.lexio.rent/openapi.json](https://docs.lexio.rent/openapi.json),
    à importer dans votre client HTTP ou à utiliser pour générer un client.

    - **Contact** (support technique, demande d’accès, organisation de test) :
    contact@lexio.rent.


    Vocabulaire : une **location** (`/rentals`) est un contrat de location d’un
    véhicule ; un **lieu** (`/locations`) est une adresse de départ ou de
    retour.


    ## Guides


    1. [Démarrage rapide](https://docs.lexio.rent/demarrage-rapide) : de la
    recherche d’un véhicule à l’annulation.

    2. [Authentification et scopes](https://docs.lexio.rent/authentification) :
    clés du loueur et clés partenaires, scopes, plans.

    3. [Montants et TVA](https://docs.lexio.rent/montants-et-tva) : HT, TTC,
    devises, caution et franchise.

    4. [Cycle de vie d’une location](https://docs.lexio.rent/cycle-de-vie) :
    statuts et actions possibles.

    5. [Limites de débit](https://docs.lexio.rent/limites),
    [Pagination](https://docs.lexio.rent/pagination), [Idempotence et
    reprise](https://docs.lexio.rent/idempotence).

    6. [Synchronisation par événements](https://docs.lexio.rent/synchronisation)
    : suivre les changements sans webhook.

    7. [Versions et évolutions](https://docs.lexio.rent/versions),
    [Erreurs](https://docs.lexio.rent/erreurs).

    8. [Intégration d’une plateforme de
    réservation](https://docs.lexio.rent/integration-broker) : parcours
    partenaire, paiement.

    9. [Ce qui se gère dans
    Lexio](https://docs.lexio.rent/ce-qui-se-gere-dans-lexio) et [Historique des
    versions](https://docs.lexio.rent/historique).
  contact:
    name: Support Lexio
    email: contact@lexio.rent
    url: https://docs.lexio.rent
servers:
  - url: https://api.lexio.rent/api/external/v1
    description: Production
security:
  - ApiKey: []
tags:
  - name: Organisation
    description: >-
      Réglages de l’organisation liée à la clé : devise, fuseau, TVA, horaires,
      règles de réservation.
  - name: Offre
    description: >-
      Disponibilités et devis : ce qui est réservable, à quel prix, avant de
      créer une location.
  - name: Locations
    description: >-
      Les contrats de location : création, lecture, modification de notes,
      suppression.
  - name: Modifications
    description: >-
      Changer les dates, le véhicule, la protection, le titulaire ou les options
      d’une location, ou l’annuler.
  - name: Départ et retour
    description: >-
      Remise des clés et retour du véhicule : kilométrage, carburant, photos,
      état des lieux.
  - name: Paiements
    description: Encaissements, cautions et remboursements enregistrés sur une location.
  - name: Événements
    description: >-
      Flux des changements à relire pour synchroniser votre système, sans
      webhook.
  - name: Clients
    description: Fiches des clients particuliers et entreprises.
  - name: Flotte
    description: Véhicules, leur archivage et leurs indisponibilités.
  - name: Catalogue
    description: >-
      Catégories, lieux, options, franchises, cautions et forfaits kilométriques
      proposés à la location.
  - name: Tarification
    description: Saisons, remises de durée, paliers de délai et réglages de prix.
  - name: Entretien
    description: Alertes et historique d’entretien des véhicules.
paths:
  /organization:
    get:
      tags:
        - Organisation
      summary: Lire l’organisation et la clé
      description: >-
        **Accès** : toute clé valide


        Renvoie les réglages de l’agence qui gouvernent les dates et les prix,
        et la clé qui appelle.


        À lire une fois au démarrage : devise et nombre de décimales des
        montants ([Montants et TVA](https://docs.lexio.rent/montants-et-tva)),
        fuseau des heures de location, TVA, horaires et règles de réservation
        imposés aux clés partenaires.
      operationId: getOrganization
      parameters: []
      responses:
        '200':
          description: Lire l’organisation et la clé
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Organization'
                required:
                  - data
        '400':
          description: '`VALIDATION_FAILED`'
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationFailedProblem'
        '401':
          description: >-
            `API_KEY_DISABLED`, `API_KEY_EXPIRED`, `API_KEY_INVALID`,
            `API_KEY_MISSING`, `API_KEY_REVOKED`
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
            WWW-Authenticate:
              $ref: '#/components/headers/WwwAuthenticate'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ApiKeyDisabledProblem'
                  - $ref: '#/components/schemas/ApiKeyExpiredProblem'
                  - $ref: '#/components/schemas/ApiKeyInvalidProblem'
                  - $ref: '#/components/schemas/ApiKeyMissingProblem'
                  - $ref: '#/components/schemas/ApiKeyRevokedProblem'
        '403':
          description: >-
            `FEATURE_NOT_AVAILABLE`, `INSUFFICIENT_SCOPE`,
            `ORGANIZATION_SUSPENDED`
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/FeatureNotAvailableProblem'
                  - $ref: '#/components/schemas/InsufficientScopeProblem'
                  - $ref: '#/components/schemas/OrganizationSuspendedProblem'
        '429':
          description: '`RATE_LIMITED`'
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/RateLimitedProblem'
        '500':
          description: '`INTERNAL_ERROR`'
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/InternalErrorProblem'
      security:
        - ApiKey: []
components:
  headers:
    XRequestId:
      description: Identifiant de la requête, à communiquer au support.
      schema:
        type: string
    RateLimitLimit:
      description: Plafond du seau de débit qui s’applique à la requête.
      schema:
        type: integer
        minimum: 0
    RateLimitRemaining:
      description: Requêtes encore permises dans la fenêtre en cours.
      schema:
        type: integer
        minimum: 0
    RateLimitReset:
      description: Secondes avant la remise à zéro de la fenêtre.
      schema:
        type: integer
        minimum: 0
    WwwAuthenticate:
      description: >-
        Schéma d’authentification attendu (`Bearer`), avec
        `error="invalid_token"` pour une clé refusée.
      schema:
        type: string
    RetryAfter:
      description: Secondes à attendre avant de rejouer la requête.
      schema:
        type: integer
        minimum: 0
  schemas:
    Organization:
      examples:
        - id: 5f0c9a7e-2b1d-4c3e-8f6a-9d2e1b7c4a03
          name: Riviera Location Nice
          currency: EUR
          currencyExponent: 2
          timezone: Europe/Paris
          vatPercent: 20
          isVatExempt: false
          isVatReverseChargeAvailable: false
          toleranceHours: 2
          rentalBufferMinutes: 120
          businessHours:
            isOpen24h: false
            days:
              - day: MONDAY
                isOpen: true
                openingTime: '08:00'
                closingTime: '19:00'
              - day: TUESDAY
                isOpen: true
                openingTime: '08:00'
                closingTime: '19:00'
              - day: WEDNESDAY
                isOpen: true
                openingTime: '08:00'
                closingTime: '19:00'
              - day: THURSDAY
                isOpen: true
                openingTime: '08:00'
                closingTime: '19:00'
              - day: FRIDAY
                isOpen: true
                openingTime: '08:00'
                closingTime: '19:00'
              - day: SATURDAY
                isOpen: true
                openingTime: '08:00'
                closingTime: '19:00'
              - day: SUNDAY
                isOpen: false
                openingTime: null
                closingTime: null
          bookingRules:
            minLeadHours: 2
            maxHorizonDays: 365
            minRentalDays: 1
          apiKey:
            id: c3e8a1f4-6b2d-4e9a-8c7f-1a2b3c4d5e6f
            name: Site de réservation
            partnerCode: null
            scopes:
              - offers.read
              - quotes.write
              - rentals.read
              - rentals.write
            expiresAt: null
      type: object
      properties:
        id:
          description: Identifiant de l’organisation (l’agence).
          type: string
          minLength: 1
        name:
          description: Nom commercial de l’agence.
          type: string
        currency:
          description: >-
            Devise de l’agence (ISO 4217), celle de tous les montants de son
            catalogue.
          examples:
            - EUR
          type: string
          enum:
            - EUR
            - XPF
            - CHF
            - CAD
            - GBP
            - USD
            - XOF
        currencyExponent:
          description: >-
            Nombre de décimales de la devise : 2 pour EUR, 0 pour XPF. Tout
            montant envoyé au-delà est refusé (400 `too_many_decimals`).
          type: integer
          minimum: 0
          maximum: 3
        timezone:
          description: >-
            Fuseau IANA de l’agence : les heures de location sont des heures
            locales de ce fuseau.
          examples:
            - Europe/Paris
          type: string
          minLength: 1
        vatPercent:
          description: Taux de TVA appliqué aux prix HT, en % ; 0 si l’agence est exonérée.
          type: number
          minimum: 0
          maximum: 100
        isVatExempt:
          description: 'true : agence exonérée de TVA, `vatPercent` vaut alors 0.'
          type: boolean
        isVatReverseChargeAvailable:
          description: >-
            true : une location peut être facturée en autoliquidation de TVA
            (`isVatReverseCharge`) ; sinon une telle demande répond 422
            `VAT_REVERSE_CHARGE_NOT_ALLOWED`.
          type: boolean
        toleranceHours:
          description: >-
            Retard toléré, en heures, avant de facturer un jour de plus : une
            durée de 3 jours et 2 h est facturée 3 jours si `toleranceHours` ≥
            2, sinon 4.
          type: integer
          minimum: 0
        rentalBufferMinutes:
          description: >-
            Battement, en minutes, laissé libre avant et après chaque location
            d’un véhicule : un véhicule n’est pas disponible pendant ce
            battement.
          type: integer
          minimum: 0
        businessHours:
          description: >-
            Horaires d’ouverture. Clé partenaire : départ et retour doivent
            tomber dans ces horaires (422 `BOOKING_RULE_VIOLATION`) ; une clé
            interne n’y est pas soumise.
          type: object
          properties:
            isOpen24h:
              description: >-
                true : ouvert tous les jours de 00:00 à 23:59, `days` le
                reflète.
              type: boolean
            days:
              description: Les 7 jours de la semaine, du lundi au dimanche.
              minItems: 7
              maxItems: 7
              type: array
              items:
                type: object
                properties:
                  day:
                    description: Jour de la semaine.
                    type: string
                    enum:
                      - MONDAY
                      - TUESDAY
                      - WEDNESDAY
                      - THURSDAY
                      - FRIDAY
                      - SATURDAY
                      - SUNDAY
                  isOpen:
                    description: 'false : agence fermée ce jour-là.'
                    type: boolean
                  openingTime:
                    description: >-
                      Heure d’ouverture `HH:mm`, heure locale de l’agence ; null
                      un jour fermé.
                    anyOf:
                      - examples:
                          - '09:00'
                        type: string
                        pattern: ^([01]\d|2[0-3]):[0-5]\d$
                      - type: 'null'
                  closingTime:
                    description: Heure de fermeture `HH:mm`, incluse ; null un jour fermé.
                    anyOf:
                      - examples:
                          - '09:00'
                        type: string
                        pattern: ^([01]\d|2[0-3]):[0-5]\d$
                      - type: 'null'
                required:
                  - day
                  - isOpen
                  - openingTime
                  - closingTime
          required:
            - isOpen24h
            - days
        bookingRules:
          description: >-
            Règles de réservation, appliquées aux seules clés partenaires (422
            `BOOKING_RULE_VIOLATION`).
          type: object
          properties:
            minLeadHours:
              description: Délai minimal, en heures, entre maintenant et le départ.
              type: integer
              minimum: 0
            maxHorizonDays:
              description: >-
                Le départ tombe au plus tard ce nombre de jours après
                aujourd’hui.
              type: integer
              minimum: 0
            minRentalDays:
              description: >-
                Nombre minimal de jours calendaires entre le jour du départ et
                celui du retour.
              type: integer
              minimum: 0
          required:
            - minLeadHours
            - maxHorizonDays
            - minRentalDays
        apiKey:
          description: La clé API qui fait l’appel.
          type: object
          properties:
            id:
              description: Identifiant de la clé qui appelle.
              type: string
              format: uuid
            name:
              description: Nom donné à la clé dans Lexio.
              type: string
            partnerCode:
              description: >-
                Code partenaire de la clé : elle ne voit que les clients, devis,
                locations et événements de ce code. null pour une clé interne,
                qui voit toute l’agence.
              anyOf:
                - type: string
                - type: 'null'
            scopes:
              description: Scopes accordés à la clé.
              maxItems: 20
              type: array
              items:
                type: string
                enum:
                  - offers.read
                  - quotes.write
                  - rentals.read
                  - rentals.write
                  - rentals.operate
                  - rentals.delete
                  - payments.write
                  - payments.refund
                  - customers.read
                  - customers.write
                  - customers.delete
                  - vehicles.read
                  - vehicles.write
                  - vehicles.delete
                  - catalog.read
                  - catalog.write
                  - pricing.read
                  - pricing.write
                  - maintenance.read
                  - maintenance.write
            expiresAt:
              description: Fin de validité de la clé ; null si elle n’expire pas.
              anyOf:
                - examples:
                    - '2026-11-10T10:00:00+01:00'
                  type: string
                  format: date-time
                - type: 'null'
          required:
            - id
            - name
            - partnerCode
            - scopes
            - expiresAt
      required:
        - id
        - name
        - currency
        - currencyExponent
        - timezone
        - vatPercent
        - isVatExempt
        - isVatReverseChargeAvailable
        - toleranceHours
        - rentalBufferMinutes
        - businessHours
        - bookingRules
        - apiKey
    ValidationFailedProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/validation-failed
        title:
          type: string
          const: Requête invalide
        status:
          type: number
          const: 400
        code:
          type: string
          const: VALIDATION_FAILED
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
        errors:
          minItems: 1
          maxItems: 100
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
              code:
                type: string
                enum:
                  - required
                  - invalid_type
                  - invalid_format
                  - invalid_value
                  - too_small
                  - too_big
                  - too_many_decimals
                  - out_of_range
                  - unknown_field
                  - null_not_allowed
                  - empty_string
                  - empty_patch
                  - mutually_exclusive
                  - not_applicable
                  - duplicate
                  - end_before_start
                  - date_in_past
                  - nonexistent_local_time
                  - offset_not_allowed
                  - offset_required
                  - upload_expired
                  - upload_incomplete
                  - upload_conflict
              detail:
                type: string
            required:
              - pointer
              - code
              - detail
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
        - errors
    ApiKeyDisabledProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/api-key-disabled
        title:
          type: string
          const: Clé API désactivée
        status:
          type: number
          const: 401
        code:
          type: string
          const: API_KEY_DISABLED
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
    ApiKeyExpiredProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/api-key-expired
        title:
          type: string
          const: Clé API expirée
        status:
          type: number
          const: 401
        code:
          type: string
          const: API_KEY_EXPIRED
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
    ApiKeyInvalidProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/api-key-invalid
        title:
          type: string
          const: Clé API invalide
        status:
          type: number
          const: 401
        code:
          type: string
          const: API_KEY_INVALID
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
    ApiKeyMissingProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/api-key-missing
        title:
          type: string
          const: Clé API absente
        status:
          type: number
          const: 401
        code:
          type: string
          const: API_KEY_MISSING
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
    ApiKeyRevokedProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/api-key-revoked
        title:
          type: string
          const: Clé API révoquée
        status:
          type: number
          const: 401
        code:
          type: string
          const: API_KEY_REVOKED
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
    FeatureNotAvailableProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/feature-not-available
        title:
          type: string
          const: Fonctionnalité non incluse
        status:
          type: number
          const: 403
        code:
          type: string
          const: FEATURE_NOT_AVAILABLE
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
        feature:
          type: string
          minLength: 1
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
        - feature
    InsufficientScopeProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/insufficient-scope
        title:
          type: string
          const: Scope insuffisant
        status:
          type: number
          const: 403
        code:
          type: string
          const: INSUFFICIENT_SCOPE
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
        requiredScopes:
          minItems: 1
          maxItems: 20
          type: array
          items:
            type: string
            enum:
              - offers.read
              - quotes.write
              - rentals.read
              - rentals.write
              - rentals.operate
              - rentals.delete
              - payments.write
              - payments.refund
              - customers.read
              - customers.write
              - customers.delete
              - vehicles.read
              - vehicles.write
              - vehicles.delete
              - catalog.read
              - catalog.write
              - pricing.read
              - pricing.write
              - maintenance.read
              - maintenance.write
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
        - requiredScopes
    OrganizationSuspendedProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/organization-suspended
        title:
          type: string
          const: Organisation suspendue
        status:
          type: number
          const: 403
        code:
          type: string
          const: ORGANIZATION_SUSPENDED
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
    RateLimitedProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/rate-limited
        title:
          type: string
          const: Trop de requêtes
        status:
          type: number
          const: 429
        code:
          type: string
          const: RATE_LIMITED
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
        limit:
          type: string
          enum:
            - PRE_AUTH
            - PER_KEY
            - WRITE
            - QUOTE
        windowSeconds:
          type: integer
          minimum: 1
        retryAfter:
          type: integer
          minimum: 0
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
        - limit
        - windowSeconds
        - retryAfter
    InternalErrorProblem:
      type: object
      properties:
        type:
          type: string
          const: https://api.lexio.rent/errors/internal-error
        title:
          type: string
          const: Erreur interne
        status:
          type: number
          const: 500
        code:
          type: string
          const: INTERNAL_ERROR
        detail:
          type: string
        instance:
          type: string
        requestId:
          type: string
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - requestId
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: lck_…
      description: >-
        Clé API `lck_…` créée dans Lexio (Paramètres → Développeur), envoyée en
        `Authorization: Bearer`. Voir
        [Authentification](https://docs.lexio.rent/authentification).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.