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

# update report customizations

> set or reset report-page customizations: each change names a setting_key with values by stored slot (value, value2, ...) or reset true. values are checked the way the customization modal checks them, unspecified slots keep their current values, and one invalid change refuses the whole batch. each record returns the key's previous and resulting values; send previous back to undo. this changes your account, and Edgeful shows the change after a reload. requires the key's write permission.



## OpenAPI

````yaml /openapi-public.json post /v1/settings/report-customizations
openapi: 3.1.0
info:
  title: Edgeful API
  description: >-
    Public API reference for Edgeful market analysis. The bearer token is your
    Edgeful API key. Reports support the docs playground. Report responses
    include row-level output in `detailed` only when your plan includes
    row-level detail.
  version: 1.0.0
servers:
  - url: https://api.edgeful.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: reports
  - name: discovery
  - name: live data
  - name: settings
  - name: custom reports
paths:
  /v1/settings/report-customizations:
    post:
      tags:
        - settings
      summary: update report customizations
      description: >-
        set or reset report-page customizations: each change names a setting_key
        with values by stored slot (value, value2, ...) or reset true. values
        are checked the way the customization modal checks them, unspecified
        slots keep their current values, and one invalid change refuses the
        whole batch. each record returns the key's previous and resulting
        values; send previous back to undo. this changes your account, and
        Edgeful shows the change after a reload. requires the key's write
        permission.
      operationId: update_report_customizations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomizationsUpdateRequest'
            examples:
              default:
                summary: set the ADR period to 10
                value:
                  changes:
                    - setting_key: ADR
                      values:
                        value: 10
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationsUpdateResponse'
        '400':
          description: >-
            The request names a value Edgeful cannot use; `detail` says which
            values are valid.
          content:
            application/json:
              examples:
                refused:
                  summary: refused
                  value:
                    detail: NQX is not a futures ticker Edgeful knows.
        '403':
          description: >-
            Valid API key, but the account has no API-enabled subscription or
            the key's writes are off.
          content:
            application/json:
              examples:
                missing_entitlement:
                  summary: missing entitlement
                  value:
                    detail:
                      detail: No active subscription with API access found.
                      code: missing_entitlement
                writes_disabled:
                  summary: writes disabled
                  value:
                    detail:
                      detail: >-
                        Enable writes for this API key or connected Claude in
                        the API dashboard.
                      code: writes_disabled
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: >-
            The account's settings write budget is exhausted; wait `Retry-After`
            seconds. Refused attempts count too.
          content:
            application/json:
              examples:
                write_budget_exhausted:
                  summary: write budget exhausted
                  value:
                    detail:
                      detail: Settings write limit reached. Try again shortly.
                      code: write_budget_exhausted
          headers:
            Retry-After:
              description: seconds to wait before sending the write again.
              schema:
                type: integer
        '503':
          description: The write budget could not be checked; retry shortly.
          content:
            application/json:
              examples:
                write_limits_unavailable:
                  summary: write limits unavailable
                  value:
                    detail:
                      detail: >-
                        Settings write limits are temporarily unavailable. Try
                        again shortly.
                      code: write_limits_unavailable
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request POST \
              --url 'https://api.edgeful.com/v1/settings/report-customizations' \
              --header 'Authorization: Bearer <api-key>' \
              --header 'Content-Type: application/json' \
              --data '{"changes": [{"setting_key": "ADR", "values": {"value": 10}}]}'
        - lang: python
          label: Python
          source: >-
            import requests


            url = "https://api.edgeful.com/v1/settings/report-customizations"

            headers = {"Authorization": "Bearer <api-key>"}

            payload = {'changes': [{'setting_key': 'ADR', 'values': {'value':
            10}}]}


            response = requests.post(url, headers=headers, json=payload)

            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const url =
            "https://api.edgeful.com/v1/settings/report-customizations";

            const options = {
              method: "POST",
              headers: { Authorization: "Bearer <api-key>", "Content-Type": "application/json" },
              body: JSON.stringify({"changes": [{"setting_key": "ADR", "values": {"value": 10}}]}),
            };


            const response = await fetch(url, options);

            const data = await response.json();

            console.log(data);
        - lang: php
          label: PHP
          source: >-
            <?php

            $ch =
            curl_init("https://api.edgeful.com/v1/settings/report-customizations");

            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");

            curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer
            <api-key>", "Content-Type: application/json"]);

            curl_setopt($ch, CURLOPT_POSTFIELDS, '{"changes": [{"setting_key":
            "ADR", "values": {"value": 10}}]}');

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            $response = curl_exec($ch);

            curl_close($ch);

            echo $response;
        - lang: go
          label: Go
          source: |-
            package main

            import (
                "fmt"
                "io"
                "net/http"
                "strings"
            )

            func main() {
                req, _ := http.NewRequest("POST", "https://api.edgeful.com/v1/settings/report-customizations", strings.NewReader(`{"changes": [{"setting_key": "ADR", "values": {"value": 10}}]}`))
                req.Header.Set("Authorization", "Bearer <api-key>")
                req.Header.Set("Content-Type", "application/json")
                resp, _ := http.DefaultClient.Do(req)
                defer resp.Body.Close()
                body, _ := io.ReadAll(resp.Body)
                fmt.Println(string(body))
            }
        - lang: java
          label: Java
          source: >-
            import java.net.URI;

            import java.net.http.HttpClient;

            import java.net.http.HttpRequest;

            import java.net.http.HttpResponse;


            HttpClient client = HttpClient.newHttpClient();

            HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://api.edgeful.com/v1/settings/report-customizations"))
                .header("Authorization", "Bearer <api-key>")
                .header("Content-Type", "application/json")
                .method("POST", HttpRequest.BodyPublishers.ofString("{\"changes\": [{\"setting_key\": \"ADR\", \"values\": {\"value\": 10}}]}"))
                .build();
            HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

            System.out.println(response.body());
        - lang: ruby
          label: Ruby
          source: >-
            require "net/http"

            require "uri"


            uri =
            URI("https://api.edgeful.com/v1/settings/report-customizations")

            request = Net::HTTP::Post.new(uri)

            request["Authorization"] = "Bearer <api-key>"

            request["Content-Type"] = "application/json"

            request.body = '{"changes": [{"setting_key": "ADR", "values":
            {"value": 10}}]}'


            response = Net::HTTP.start(uri.hostname, uri.port, use_ssl:
            uri.scheme == "https") do |http|
              http.request(request)
            end

            puts response.body
components:
  schemas:
    CustomizationsUpdateRequest:
      properties:
        changes:
          items:
            $ref: '#/components/schemas/CustomizationChange'
          type: array
          maxItems: 100
          minItems: 1
          title: Changes
          description: >-
            one entry per setting key, each setting slot values or reset; one
            invalid entry refuses the whole batch.
      additionalProperties: false
      type: object
      required:
        - changes
      title: CustomizationsUpdateRequest
    CustomizationsUpdateResponse:
      properties:
        status:
          type: string
          title: Status
          description: updated or unchanged.
        settings:
          items:
            $ref: '#/components/schemas/CustomizationRecord'
          type: array
          title: Settings
          description: one record per setting key in the batch.
        changed:
          $ref: '#/components/schemas/CustomizationsChanged'
          description: what this write changed.
      additionalProperties: true
      type: object
      required:
        - status
        - settings
        - changed
      title: CustomizationsUpdateResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CustomizationChange:
      properties:
        setting_key:
          type: string
          maxLength: 80
          minLength: 1
          title: Setting Key
          description: the setting key a report page stores its customizations under.
        values:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/JsonValue'
              propertyNames:
                maxLength: 80
                minLength: 1
              type: object
              maxProperties: 100
            - type: 'null'
          title: Values
          description: >-
            slot values to set, keyed by stored slot (value, value2, ...); slots
            left out keep their current values.
        reset:
          type: boolean
          title: Reset
          description: >-
            true removes the stored row so every page the key drives falls back
            to its defaults.
          default: false
      additionalProperties: false
      type: object
      required:
        - setting_key
      title: CustomizationChange
      description: >-
        One setting key's change: slot values keyed by stored slot (value,
        value2, ...), or reset.
    CustomizationRecord:
      properties:
        setting_key:
          type: string
          title: Setting Key
          description: the setting key.
        status:
          type: string
          title: Status
          description: updated, reset or unchanged.
        previous:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/JsonValue'
              type: object
            - type: 'null'
          title: Previous
          description: the stored slots before this write, for undo.
        values:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/JsonValue'
              type: object
            - type: 'null'
          title: Values
          description: the stored slots after this write; null after a reset.
        pages:
          items:
            additionalProperties:
              $ref: '#/components/schemas/JsonValue'
            type: object
          type: array
          title: Pages
          description: the pages the key drives, with the query that applies the values.
        activation:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/JsonValue'
              type: object
            - type: 'null'
          title: Activation
          description: dependencies of the slots written.
      additionalProperties: true
      type: object
      required:
        - setting_key
        - status
        - previous
        - values
        - pages
      title: CustomizationRecord
    CustomizationsChanged:
      properties:
        updated:
          items:
            type: string
          type: array
          title: Updated
          description: setting keys written.
        reset:
          items:
            type: string
          type: array
          title: Reset
          description: setting keys reset.
      additionalProperties: true
      type: object
      required:
        - updated
        - reset
      title: CustomizationsChanged
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    JsonValue: {}
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Send your Edgeful API key in the Authorization header as `Bearer
        <api-key>` (for example, `Bearer ef_live_<random>`).

````

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