---
updatedAt: 2026-08-07T22:09:02.000Z
agentTools:
  projectIndex: https://developer-docs.rivo.io/llms.txt
---

# Submit a challenge photo

Submit a challenge photo for a customer. The photo goes through the standard review flow before any points or credits are granted.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Rivo Developer API",
    "description": "Extensibility to suit your needs",
    "termsOfService": "https://www.rivo.io/terms",
    "contact": {
      "email": "developers@rivo.io",
      "url": "https://developers.rivo.io"
    },
    "version": "0.0.1"
  },
  "tags": [
    {
      "name": "challenge_photos",
      "description": "Operations about challenge_photos"
    }
  ],
  "paths": {
    "/v1/challenge_photos": {
      "post": {
        "summary": "Submit a challenge photo",
        "description": "Submit a challenge photo for a customer. The photo goes through the standard review flow before any points or credits are granted.",
        "parameters": [
          {
            "in": "header",
            "name": "Authorization",
            "description": "Merchant Auth Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "challenge_id": {
                    "description": "ID of the challenge the photo is submitted for",
                    "type": "integer",
                    "format": "int32"
                  },
                  "customer_identifier": {
                    "description": "Shopify Customer ID or Email",
                    "type": "string"
                  },
                  "image_url": {
                    "description": "Publicly accessible URL of the challenge photo",
                    "type": "string"
                  },
                  "points_amount": {
                    "description": "Overrides the earning method's points amount granted when the photo is approved",
                    "type": "integer",
                    "format": "int32"
                  },
                  "credits_amount": {
                    "description": "Overrides the earning method's amount with credits granted when the photo is approved",
                    "type": "number",
                    "format": "float"
                  },
                  "internal_note": {
                    "description": "Internal facing note on the points event created when the photo is approved. Customers WONT see this.",
                    "type": "string"
                  },
                  "external_note": {
                    "description": "External facing note on the points event created when the photo is approved. Customers WILL see this.",
                    "type": "string"
                  },
                  "skip_email": {
                    "description": "If an email was supposed to be sent for earning points - we'll skip it if you pass this as true.",
                    "type": "boolean"
                  },
                  "applied_at": {
                    "description": "Time the event took place. Defaults to the photo's approval time if left blank.",
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "challenge_id",
                  "customer_identifier",
                  "image_url"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Submit a challenge photo for a customer. The photo goes through the standard review flow before any points or credits are granted."
          }
        },
        "tags": [
          "challenge_photos"
        ],
        "operationId": "submit-challenge-photo"
      }
    }
  },
  "servers": [
    {
      "url": "//developer-api.rivo.io/merchant_api"
    }
  ]
}
```